$ od -c -N 50000 [Indigo]<Chipmonk>xextract>extract-sources.dm!7 0000000 377 \0 \0 c h i p n e t d e f s . m 0000020 e s a \0 373 233 214 277 204 \0 \0 376 001 \0 276 322 0000040 - - C h i p N e t D e f s . m 0000060 e s a \r \r - - l a s t m o d 0000100 i f i e d b y E . M c C r 0000120 e i g h t , S e p t e m b e r 0000140 1 2 , 1 9 8 3 1 1 : 1 4 0000160 A M \r - - w r i t t e n b 0000200 y E . M c C r e i g h t , 0000220 N o v e m b e r 3 , 1 9 8 1 0000240 1 2 : 1 4 P M \r \r D I R E 0000260 C T O R Y \r I n l i n e D e 0000300 f s , \r M i s c D e f s , \r 0000320 p p d e f s , \r S t r e 0000340 a m D e f s , \r Z o n e A l 0000360 l o c D e f s ; \r \r C h i p N e 0000400 t D e f s : D E F I N I T I O 0000420 N S I M P O R T S I n l i n 0000440 376 001 \0 326 003 e D e f s = \r B 0000460 E G I N \r \r - - T y 0000500 p e s \r \r N a n o M e t 0000520 e r s : T Y P E = L O N G 0000540 I N T E G E R ; - - o n 0000560 t h e s i l i c o n \r \r C 0000600 o o r d : T Y P E = N a n 0000620 o M e t e r s ; \r L o c N u 0000640 m S c a l e : T Y P E = { 0000660 l a m b d a R e l a t i v e , 0000700 a b s o l u t e } ; \r C o o 0000720 r d P o i n t : T Y P E = 0000740 R E C O R D [ x , y : C o o 0000760 r d ] ; \r C o o r d R e c t 0001000 : T Y P E = R E C O R D [ 0001020 x 1 , y 1 , x 2 , y 2 : 0001040 C o o r d 376 001 \0 362 331 ] ; \r 0001060 - - [ x 1 . . x 2 ) , [ y 0001100 1 . . y 2 ) \r I n t e r v a 0001120 l : T Y P E = R E C O R D 0001140 [ m i n , m a x : C o o r d ] 0001160 ; \r - - [ m i n . . m 0001200 a x ) \r \r E x t r a c t L e 0001220 v e l : T Y P E = p p d e 0001240 f s . L e v e l [ c u t . . l 3 0001260 9 ] _ u n k n o w n ; \r \r 0001300 u n k n o w n : E x t r a c 0001320 t L e v e l = N O c O L ; \r 0001340 n W e l l : E x t r a c t 0001360 L e v e l = n w e l ; \r 0001400 n W e l l R e q u i r e d : E 0001420 x t r a c t L e v e l = l 1 0001440 6 ; \r n W e l l 376 001 \0 274 3 F 0001460 o r b i d d e n : E x t r a c 0001500 t L e v e l = l 1 7 ; \r 0001520 p W e l l : E x t r a c t L e 0001540 v e l = p w e l ; \r p W 0001560 e l l R e q u i r e d : E x t 0001600 r a c t L e v e l = l 1 8 ; 0001620 \r p W e l l F o r b i d d e 0001640 n : E x t r a c t L e v e l 0001660 = l 1 9 ; \r n D e p l e t 0001700 i o n : E x t r a c t L e v e 0001720 l = i m p ; \r n D e p l 0001740 e t i o n R e q u i r e d : E 0001760 x t r a c t L e v e l = l 2 0002000 0 ; \r n D e p l e t i o n F 0002020 o r b i d d e n : E x t r a c 0002040 t L e v e l = l 2 1 ; \r 376 0002060 001 \0 $ O n B u r i e d C o n t 0002100 a c t : E x t r a c t L e v e 0002120 l = b u r ; \r n B u r i 0002140 e d C o n t a c t R e q u i r e 0002160 d : E x t r a c t L e v e l 0002200 = l 2 2 ; \r n B u r i e d 0002220 C o n t a c t F o r b i d d e n 0002240 : E x t r a c t L e v e l = 0002260 l 2 3 ; \r t h i n O x : 0002300 E x t r a c t L e v e l = l 0002320 2 4 ; \r n P l u s : E x t 0002340 r a c t L e v e l = d i f ; 0002360 \r n P l u s R e q u i r e d 0002400 : E x t r a c t L e v e l = 0002420 l 2 5 ; \r n P l u s F o r 0002440 b i d d e n : E x t r a c t L 0002460 e v e l 376 001 \0 > 255 = l 2 6 ; 0002500 \r p P l u s : E x t r a c 0002520 t L e v e l = p d i f ; \r 0002540 p P l u s R e q u i r e d : 0002560 E x t r a c t L e v e l = l 0002600 2 7 ; \r p P l u s F o r b i 0002620 d d e n : E x t r a c t L e v 0002640 e l = l 2 8 ; \r n I m p 0002660 l a n t : E x t r a c t L e v 0002700 e l = l 2 9 ; \r p I m p 0002720 l a n t : E x t r a c t L e v 0002740 e l = l 3 0 ; \r n G a t 0002760 e : E x t r a c t L e v e l 0003000 = l 3 1 ; \r n G a t e R e 0003020 q u i r e d : E x t r a c t L 0003040 e v e l = l 3 2 ; \r n G 0003060 a t e F o r b i d 376 001 \0 % 320 d e 0003100 n : E x t r a c t L e v e l 0003120 = l 3 3 ; \r p G a t e : 0003140 E x t r a c t L e v e l = l 0003160 3 4 ; \r p G a t e R e q u i 0003200 r e d : E x t r a c t L e v e 0003220 l = l 3 5 ; \r p G a t e 0003240 F o r b i d d e n : E x t r a 0003260 c t L e v e l = l 3 6 ; \r 0003300 p o l y : E x t r a c t L e 0003320 v e l = p o l ; \r p o l 0003340 y R e q u i r e d : E x t r a 0003360 c t L e v e l = l 3 7 ; \r 0003400 p o l y F o r b i d d e n : 0003420 E x t r a c t L e v e l = l 0003440 3 8 ; \r c u t F o r b i d d 0003460 e n : E x t r a c t L e v 376 001 0003500 \0 251 k e l = l 3 9 ; \r m 0003520 e t a l : E x t r a c t L e v 0003540 e l = m e t ; \r v i a : 0003560 E x t r a c t L e v e l = 0003600 c u t 2 ; \r m e t a l 2 : 0003620 E x t r a c t L e v e l = m 0003640 e t 2 ; \r p a d : E x t r 0003660 a c t L e v e l = o v g ; \r 0003700 \r L e v C o o r d R e c t : 0003720 T Y P E = R E C O R D [ l 0003740 e v : E x t r a c t L e v e l 0003760 , \r r : C o o r d R e 0004000 c t ] ; \r \r P r o p P t r : 0004020 T Y P E = L O N G P O I 0004040 N T E R T O p p d e f s . p 0004060 r o p _ N I L ; \r \r C o 0004100 n d u 376 001 \0 \n 316 c t o r s : T 0004120 Y P E = { n d i f , p d i 0004140 f , p o l y , m e t a l , 0004160 m e t a l 2 } ; \r \r N e t P 0004200 t r , n e t P t r , n e t I 0004220 n t P t r : T Y P E = L O 0004240 N G P O I N T E R T O N e 0004260 t _ N I L ; \r C a n o n 0004300 N e t P t r : T Y P E = L 0004320 O N G P O I N T E R T O c 0004340 a n o n N e t _ N I L ; \r 0004360 L i n k N e t P t r : T Y 0004400 P E = L O N G P O I N T E 0004420 R T O l i n k N e t _ 0004440 N I L ; \r N e t , n e t : 0004460 T Y P E = R E C O R D [ \r 0004500 r e f s 376 001 \0 346 301 : C 0004520 A R D I N A L _ 1 , - - 0004540 n u m b e r o f r e f e r e 0004560 n c e s p a s s i n g t h r 0004600 o u g h \r r e s t : S 0004620 E L E C T t y p e : * F R 0004640 O M \r l i n k = > 0004660 [ n x t : n e t I n t P t r 0004700 ] , \r c a n o n = 0004720 > [ i d : N e t I d P t r ] 0004740 , \r E N D C A S E \r 0004760 ] ; \r \r N e t I d P 0005000 t r : T Y P E = L O N G 0005020 P O I N T E R T O N e t I d 0005040 _ N I L ; \r F r e e N e 0005060 t I d P t r : T Y P E = L 0005100 O N G P O I N T E R T 376 001 \0 0005120 O 017 O f r e e N e t I d _ 0005140 \r N I L ; \r N o r m 0005160 a l N e t I d P t r : T Y P E 0005200 = L O N G P O I N T E R 0005220 T O n o r m a l N e t I d 0005240 _ N I L ; \r \r N e t I d : 0005260 T Y P E = R E C O R D \r 0005300 [ n e x t : N e t I d P 0005320 t r , - - i n a l l N e t 0005340 s c h a i n \r f i n a 0005360 l : L e v C o o r d R e c t 0005400 _ [ r : [ x 1 : F I R S T 0005420 [ C o o r d ] , x 2 : F I R 0005440 S T [ C o o r d ] , \r 0005460 y 1 : F I R S T [ C o o r d 0005500 ] , y 2 : F I R S T [ C o o 0005520 r d 376 001 \0 302 200 ] ] ] , \r 0005540 - - f i n a l . x 2 i s 0005560 t h e g r e a t e s t x 0005600 v a l u e a t w h i c h \r 0005620 - - a n y p i e c 0005640 e o f g e o m e t r y \r 0005660 - - k n o w n t o 0005700 b e l o n g t o t h i s n 0005720 e t e x i s t s . \r v 0005740 i o l a t i o n s : V i o l a 0005760 t i o n L i s t P t r , - - 0006000 p o t e n t i a l v i o l a t 0006020 i o n s i n v o l v i n g t 0006040 h i s n e t \r d e t a 0006060 i l s : S E L E C T t y p e 0006100 : * F R O M \r f 0006120 r e e = > 376 001 \0 321 270 [ n e x 0006140 t F r e e : F r e e N e t I d 0006160 P t r ] , \r w e l l 0006200 = > [ a t t a c h e d T o : 0006220 N e t P t r ] , \r 0006240 n o r m a l = > \r 0006260 [ \r l a s t 0006300 X : C o o r d _ L A S T [ 0006320 C o o r d ] , \r 0006340 - - l a s t v a l u e 0006360 o f x w h e r e c a p s 0006400 w e r e c h a n g e d \r 0006420 c a p s : A R R A Y 0006440 C o n d u c t o r s O F L 0006460 a y e r C a p , \r 0006500 s o u r c e : C e l l C a l 0006520 l P t r , - - h i g 376 001 \0 235 0006540 002 h e s t n a m e d s o u r 0006560 c e f o r \r 0006600 - - t h i s n e t , o r 0006620 i f n o n e a r e n a m 0006640 e d , h i g h e s t u n n a 0006660 m e d s o u r c e \r 0006700 h a s P a t h T o G n d , 0006720 h a s P a t h T o V d d , h 0006740 a s D e p l e t i o n P u l l u 0006760 p : \r B O O 0007000 L E A N _ F A L S E , \r 0007020 c o u l d B e L o g 0007040 o : B O O L E A N _ T R U 0007060 E , - - i f a l l m e t 0007100 a l \r n a m e : 0007120 S E L E C T n a m e C l a s 0007140 s 376 001 \0 260 210 : * F R O M \r 0007160 a n o n y m o 0007200 u s = > [ ] , \r 0007220 n u m e r i c = > [ 0007240 n : C A R D I N A L ] , \r 0007260 q u a l i f i e 0007300 d = > [ s e e : C e l l I 0007320 n d e x - - ( i n . s o u 0007340 r c e ) - - ] , \r 0007360 n a m e d = > [ n 0007400 a m e : p p d e f s . A t o m 0007420 ] , \r E N D 0007440 C A S E \r ] 0007460 , \r E N D C A S 0007500 E \r ] _ [ d e t a i 0007520 l s : n o r m a l [ l a s t X 0007540 : 0 , n 376 001 \0 4 207 a m e : 0007560 a n o n y m o u s [ ] ] ] ; \r \r 0007600 \r V i o l a t i o n L i s t 0007620 P t r : T Y P E = L O N G 0007640 P O I N T E R T O V i o l 0007660 a t i o n L i s t _ N I L ; 0007700 \r V i o l a t i o n L i s t 0007720 : T Y P E = R E C O R D 0007740 [ \r n e x t : V i o l 0007760 a t i o n L i s t P t r , \r 0010000 v : V i o l a t i o n \r 0010020 ] ; \r \r V i o l a t i 0010040 o n : T Y P E = R E C O R 0010060 D [ \r p l a c e : p 0010100 p d e f s . P o i n t _ [ 0 0010120 , 0 ] , \r i n f o : S 0010140 E L E C T t y p e : 376 001 \0 + 8 0010160 * F R O M \r u n 0010200 k n o w n , c a n t C h e c k 0010220 = > N U L L , \r 0010240 t o o N a r r o w , n o N e t 0010260 T o W e l l , b o g u s T r a 0010300 n s i s t o r , \r 0010320 c o v e r a g e N e e d e d , 0010340 c o v e r a g e F o r b i d d 0010360 e n = > \r 0010400 [ l e v : E x t r a c t L e v 0010420 e l ] , \r t o o C l 0010440 o s e = > [ l e v 1 , l e 0010460 v 2 : E x t r a c t L e v e l 0010500 , n 1 , n 2 : n e t P t r 0010520 ] , \r c o v e r a g 0010540 e F o r b i d d e n I f N e t s 0010560 376 001 \0 201 373 D i f f e r = > \r 0010600 [ l e v : E x t 0010620 r a c t L e v e l , n 1 , n 0010640 2 : n e t P t r ] , \r 0010660 d i f f e r e n t N e t s T 0010700 o W e l l = > \r 0010720 [ l e v : E x t r a c t L e 0010740 v e l , w e l l N o d e , n 0010760 : n e t P t r ] , \r 0011000 t e r m i n a l s U n c o n n 0011020 e c t e d = > [ i t e m : 0011040 I t e m R e f ] , \r 0011060 t e r m i n a l s S h o r t e d 0011100 = > [ i t e m 1 , i t e m 0011120 2 : I t e m R e f ] , \r 0011140 E N D C A S E \r ] 0011160 ; \r \r 376 001 \0 333 2 L a y e r C 0011200 a p P t r : T Y P E = L O 0011220 N G P O I N T E R T O L a 0011240 y e r C a p _ N I L ; \r 0011260 L a y e r C a p : T Y P E = 0011300 R E C O R D [ \r c u 0011320 t S i d e s : C A R D I N A L 0011340 _ 0 , \r c u t W i d 0011360 t h : p p d e f s . l o c N u 0011400 m _ 0 , \r p e r i m 0011420 e t e r : L O N G C A R D I 0011440 N A L _ 0 , - - l o c N 0011460 u m ' s \r a r e a : L 0011500 O N G C A R D I N A L _ 0 0011520 - - l o c N u m ^ 2 \r 0011540 ] ; \r \r S o r t C l a s s 0011560 : T Y P E = { 376 001 \0 363 320 m 0011600 i n X , m a x X , m i n Y , 0011620 m a x Y } ; \r o r i e n t 0011640 T o S o r t C l a s s : A R R 0011660 A Y p p d e f s . o r i e n t 0011700 a t i o n I n d e x O F S o 0011720 r t C l a s s ; \r \r F e a t 0011740 u r e P t r : T Y P E = L 0011760 O N G P O I N T E R T O F 0012000 e a t u r e _ N I L ; \r 0012020 F e a t u r e : T Y P E = 0012040 R E C O R D [ - - c u t b 0012060 y s c a n l i n e \r 0012100 c o v e r : C o o r d R e c t 0012120 , \r l e v : E x t r a 0012140 c t L e v e l , \r c a l 0012160 l e r : I t e m R e f , \r 376 0012200 001 \0 374 032 n e t : n e t I 0012220 n t P t r \r ] ; \r \r \r 0012240 C e l l I n s t P t : T Y P 0012260 E = R E C O R D [ - - 0012300 p r i o r i t y q u e u e i 0012320 t e m \r x : C o o r d 0012340 , \r c a l l : I t e m 0012360 R e f \r ] ; \r \r \r I 0012400 t e m R e f : T Y P E = R 0012420 E C O R D [ \r h e a d : 0012440 I n s t a n c e P t r , \r 0012460 i d x : C e l l I n d e x 0012500 _ 0 - - i n h e a d . 0012520 s e q [ ? ] a c c o r d i n g 0012540 \r - - t o h e a 0012560 d . o r i e n t \r ] ; \r 0012600 \r C 376 001 \0 031 Q e l l C a l l 0012620 P t r : T Y P E = L O N G 0012640 P O I N T E R T O c e l l 0012660 I n s t a n c e _ N I L ; 0012700 \r X s t r C a l l P t r : 0012720 T Y P E = L O N G P O I N 0012740 T E R T O x s t r I n s t 0012760 a n c e _ N I L ; \r I n 0013000 s t a n c e P t r : T Y P E 0013020 = L O N G P O I N T E R T 0013040 O I n s t a n c e _ N I L 0013060 ; \r I n s t a n c e : T Y 0013100 P E = R E C O R D [ \r 0013120 m i n : C o o r d P o i n t 0013140 , - - a s p l a c e d \r 0013160 o r i e n t : p p d e f 0013200 s . o r i e n t a 376 001 \0 C 350 t i 0013220 o n I n d e x _ 0 , - - 0013240 a s p l a c e d \r p r 0013260 o t o : P r o t o P t r , \r 0013300 c a l l e r : I t e m R 0013320 e f , \r s i b l i n g : 0013340 I n s t a n c e P t r , \r 0013360 n e t s : S E L E C T t 0013400 y p e : * F R O M - - d 0013420 e p e n d i n g o n . p r o 0013440 t o . o b . o t y p \r 0013460 c e l l = > \r 0013500 [ \r o f f s p 0013520 r i n g : I n s t a n c e P t 0013540 r , \r c l u s t 0013560 e r s : C l u s t e r P t r , 0013600 \r n e t s : 376 001 0013620 \0 f 220 N o r m a l N e t I d P 0013640 t r \r ] , \r 0013660 x s t r = > \r 0013700 [ \r m a 0013720 p : A R R A Y X s t r T e r 0013740 m i n a l s O F n e t P t r 0013760 , \r s a m e H a 0014000 s h : X s t r C a l l P t r , 0014020 \r i n S i m F i 0014040 l e : B O O L E A N _ F A 0014060 L S E \r ] , \r 0014100 c o n t = > [ n e 0014120 t : n e t P t r ] , \r 0014140 E N D C A S E \r ] ; 0014160 \r \r X s t r T e r m i n a l 0014200 s : T Y P E = { g a t e , 0014220 s o 376 001 \0 M 9 u r c e , d r 0014240 a i n } ; \r \r C l u s t e r 0014260 P t r : T Y P E = L O N G 0014300 P O I N T E R T O C l u s 0014320 t e r _ N I L ; \r C l u 0014340 s t e r : T Y P E = R E C 0014360 O R D [ \r n e x t : C 0014400 l u s t e r P t r , \r n 0014420 e t N a m e : p p d e f s . A 0014440 t o m , \r f i r s t : 0014460 M u s t C o n n e c t \r 0014500 ] ; \r \r M u s t C o n n e c 0014520 t P t r : T Y P E = L O N 0014540 G P O I N T E R T O M u s 0014560 t C o n n e c t _ N I L ; \r 0014600 M u s t C o n n e c t : T 0014620 Y P E = R E 376 001 \0 N 8 C O R 0014640 D [ \r n e x t : M u s 0014660 t C o n n e c t P t r , \r 0014700 n e t : n e t P t r , \r 0014720 s o u r c e : I t e m R e 0014740 f - - n o t c o u n t e d 0014760 i n n e t M a p , b u t \r 0015000 - - c o u n t e d 0015020 i n u n s a t i s f i e d \r 0015040 ] ; \r \r \r P r o t o 0015060 P t r : T Y P E = L O N G 0015100 P O I N T E R T O C e l l 0015120 P r o t o _ N I L ; \r C 0015140 e l l P r o t o : T Y P E = 0015160 R E C O R D [ \r o b : 0015200 L O N G P O I N T E R T O 0015220 p p d e f s . o b j e c 376 001 \0 0015240 266 327 t , - - c e l l , r e 0015260 p e a t \r n a m e : S 0015300 T R I N G _ N I L , - - 0015320 f r o m c L i s t \r s 0015340 i z e : C o o r d P o i n t , 0015360 \r i t e m C o u n t : 0015400 C e l l I n d e x _ 0 , \r 0015420 s t r e t c h M a s k s : 0015440 B O O L E A N _ T R U E , 0015460 \r l o c N u m S c a l e 0015500 : L o c N u m S c a l e _ 0015520 l a m b d a R e l a t i v e , \r 0015540 l p : p p d e f s . l 0015560 i s t P t r _ N I L , - - 0015600 o f i t e m C o u n t e l 0015620 e m e n t s \r s e q : 0015640 A R 376 001 \0 347 027 R A Y S o r t C 0015660 l a s s O F L i s t P t r S 0015700 e q P t r , \r c o n n e 0015720 c t i o n s : A R R A Y S o 0015740 r t C l a s s O F C o n n e 0015760 c t o r P t r \r ] ; \r \r 0016000 C e l l I n d e x : T Y P 0016020 E = C A R D I N A L ; \r \r 0016040 L i s t P t r S e q P t r : 0016060 T Y P E = L O N G P O I N 0016100 T E R T O L i s t P t r S e 0016120 q _ N I L ; \r L i s t P 0016140 t r S e q : T Y P E = R E 0016160 C O R D [ \r l p : S E 0016200 Q U E N C E c o u n t : C e 0016220 l l I n d e x O F p p d e f 0016240 s . l i s t P 376 001 \0 242 \n t r \r 0016260 ] ; \r \r \r C o n n e c 0016300 t o r P t r : T Y P E = L 0016320 O N G P O I N T E R T O C 0016340 o n n e c t o r _ N I L ; \r 0016360 C o n n e c t o r : T Y P 0016400 E = R E C O R D [ \r 0016420 n e x t : C o n n e c t o r 0016440 P t r , \r l e v : E x 0016460 t r a c t L e v e l , \r 0016500 r a n g e : I n t e r v a l , 0016520 - - t h e r a n g e o f 0016540 d i s t a n c e s d o w n \r 0016560 - - t h e l e f 0016600 t e d g e o f t h e b o 0016620 u n d i n g b o x , o r t 0016640 o t h e r i g h t \r 376 001 \0 ? 0016660 004 - - a l o n g 0016700 t h e t o p e d g e o f 0016720 t h e b o u n d i n g b o x 0016740 . \r d e p t h : C o o 0016760 r d , \r - - i n w 0017000 a r d f r o m t h e e d g 0017020 e o f t h e b o u n d i n 0017040 g b o x \r n e t : n 0017060 e t I n t P t r \r ] ; \r 0017100 \f \r - - C o n s 0017120 t a n t s \r \r c h e 0017140 c k A l l : B O O L E A N = 0017160 F A L S E ; - - t u r n s 0017200 o n a l l s t r u c t u r 0017220 e - \r - - c h e c k i 0017240 n g r o u t i n e s . \r \r 0017260 f 376 001 \0 030 V e a t u r e D e l a 0017300 y : p p d e f s . l o c N u m 0017320 = 8 * p p d e f s . L a m b 0017340 d a ; \r \r l e v e l M a p : 0017360 A R R A Y p p d e f s . l e 0017400 v e l O F E x t r a c t L e 0017420 v e l ; \r l e v e l N a m e 0017440 s : A R R A Y E x t r a c t 0017460 L e v e l O F S T R I N G ; 0017500 \r i s C o n d u c t o r : 0017520 A R R A Y E x t r a c t L e v 0017540 e l O F B O O L E A N ; \r \r 0017560 - - V a r i a 0017600 b l e s \r \r f e a t u 0017620 r e Z , n e t Z , n e t I d 0017640 Z , i n s t a n c e Z , c l 0017660 u s t e r Z 376 001 \0 @ 200 , t r a 0017700 n s Z , u z : \r U N C 0017720 O U N T E D Z O N E ; \r \r 0017740 o r i g C i f S c a l e : I N 0017760 T E G E R ; - - c e n t i M 0020000 i c r o m e t e r s p e r l 0020020 a m b d a \r l a m b d a R e 0020040 l a t i v e C o o r d S c a l e 0020060 : C o o r d ; - - C o o r 0020100 d s p e r p p d e f s . l o 0020120 c N u m \r c o o r d S c a l 0020140 e : A R R A Y L o c N u m S 0020160 c a l e O F C o o r d ; \r \r 0020200 d e l t a O r i g i n : C 0020220 o o r d P o i n t ; - - a c 0020240 t u a l - i d e a l \r \r 0020260 c u r r e n t X : C 376 001 \0 030 X 0020300 o o r d ; - - s c a n i n 0020320 c r e a s e s i n x \r \r 0020340 n o t i n g M a r k : B O O L 0020360 E A N ; - - f o r d e b u 0020400 g g i n g \r e x t r a c t C 0020420 a p s : B O O L E A N ; \r 0020440 a l l N e t s : N e t I d P t 0020460 r ; \r \r s i g n a l N a m e 0020500 , i n s t a n c e N a m e : 0020520 R E A D O N L Y p p d e f s . 0020540 A t o m ; \r \r e x t e r n a 0020560 l W i r i n g F i n i s h e d : 0020600 B O O L E A N ; - - f o r 0020620 " m a g i c a l " w i r i n 0020640 g , t o b e a d d e d l 0020660 a t e r \r \r - - P r 0020700 376 001 \0 3 005 o c e d u r 0020720 e s \r \r A S S E R T : 0020740 P R O C [ c o n d i t i o n : 0020760 B O O L E A N ] = I N L I 0021000 N E { I F N O T c o n d i 0021020 t i o n T H E N E R R O R } 0021040 ; \r \r W r i t e S i m F i l 0021060 e : P R O C [ c : C e l l 0021100 C a l l P t r ] ; \r - - 0021120 e x p l o r e s t h e c a l 0021140 l t r e e r o o t e d a t 0021160 c \r \r A d d E x t e r n a 0021200 l W i r i n g : P R O C [ f 0021220 i l e N a m e : S T R I N G , 0021240 r o o t : C e l l C a l l P 0021260 t r ] ; \r - - R e a d 0021300 s e x t 376 001 \0 313 y e r n a l 0021320 w i r i n g s p e c f r o m 0021340 f i l e , c o m p a r e s 0021360 w i t h t e r m i n a l s i 0021400 n \r - - c a l l t r 0021420 e e r o o t e d a t r o o 0021440 t . \r \r A p p e n d L o n g 0021460 S t r i n g : P R O C [ t o 0021500 , f r o m : L O N G S T R 0021520 I N G ] ; \r \r F i n d P r o 0021540 p V a l u e : P R O C [ l p 0021560 : p p d e f s . l i s t P t r 0021600 , a t t r i b u t e : p p d 0021620 e f s . A t o m ] \r R E 0021640 T U R N S [ v a l u e : p p 0021660 d e f s . A t o m ] ; \r \r F 0021700 i n d I n h e r i t 376 001 \0 " q e 0021720 d P r o p V a l u e : P R O C 0021740 [ i t e m : I t e m R e f , 0021760 a t t r i b u t e : p p d e 0022000 f s . A t o m ] \r R E T 0022020 U R N S [ v a l u e : p p d 0022040 e f s . A t o m ] ; \r \r A p 0022060 p e n d A t o m : P R O C [ 0022100 s : L O N G S T R I N G , 0022120 a t o m : p p d e f s . A t o 0022140 m ] ; \r \r A p p e n d N e t 0022160 : P R O C [ s : S T R I N 0022200 G , n e t : n e t P t r ] \r 0022220 R E T U R N S [ C a n 0022240 o n N e t P t r ] ; \r \r A p 0022260 p e n d N e t I d : P R O C 0022300 [ s : S T R I N G , n e t 376 0022320 001 \0 O 036 I d : N o r m a l N e 0022340 t I d P t r ] ; \r \r A p p e 0022360 n d T e r m i n a l N a m e : \r 0022400 P R O C [ s : S T R 0022420 I N G , c : I t e m R e f ] 0022440 ; \r \r A p p e n d C a l l e 0022460 r C h a i n , A p p e n d C a 0022500 l l e r L i n k : \r P R 0022520 O C [ s : S T R I N G , c 0022540 : I n s t a n c e P t r ] ; \r 0022560 \r A p p e n d L o c N u m : 0022600 P R O C [ s : S T R I N G 0022620 , n : p p d e f s . l o c N 0022640 u m ] ; \r \r A p p e n d C o 0022660 o r d : P R O C [ s : S T 0022700 R I N G , n : C o o r d ] ; 0022720 \r \r 376 001 \0 246 A p p e n d C 0022740 a r d : P R O C [ s : S T 0022760 R I N G , \r n : L O N 0023000 G C A R D I N A L ] ; \r \r \r 0023020 H e S e t s P a r a m s A n d 0023040 S a y s Y e s : P R O C [ s 0023060 1 , s 2 : S T R I N G _ 0023100 N I L ] \r R E T U R N S 0023120 [ b i t : B O O L E A N ] ; 0023140 \r \r I t e m I n W o r l d : 0023160 P R O C [ c : I t e m R e 0023200 f ] R E T U R N S [ C o o r 0023220 d R e c t ] ; \r \r S o r t O 0023240 r d e r : A R R A Y S o r t 0023260 C l a s s O F \r P R O 0023300 C [ l p 1 , l p 2 : p p d 0023320 e f s . l i s t P 376 001 \0 + 356 t r 0023340 ] R E T U R N S [ B O O L E 0023360 A N ] ; \r \r S o r t L i s t 0023400 P t r S e q : P R O C [ l p 0023420 s : L i s t P t r S e q P t r 0023440 , \r l e s s : P R O C 0023460 [ l p 1 , l p 2 : p p d e 0023500 f s . l i s t P t r ] R E T U 0023520 R N S [ B O O L E A N ] \r 0023540 ] ; \r \r \r N e w N e t : 0023560 P R O C [ i n i t R e f s : 0023600 C A R D I N A L _ 1 ] \r 0023620 R E T U R N S [ C a n o 0023640 n N e t P t r ] ; \r \r M e r 0023660 g e N e t s : P R O C [ n 1 0023700 , n 2 : n e t P t r ] \r 0023720 R E T U R N S [ C a n 376 001 0023740 \0 322 255 o n N e t P t r ] ; \r 0023760 - - n 1 , n 2 # N I 0024000 L \r \r R e f C a n o n N e t 0024020 : P R O C [ n : n e t P t 0024040 r , n e w R e f s : I N T E 0024060 G E R _ 1 ] \r R E T 0024100 U R N S [ C a n o n N e t P t 0024120 r ] ; \r \r U p d a t e A r e 0024140 a s : P R O C [ n : N o r 0024160 m a l N e t I d P t r ] ; \r \r 0024200 G e t N o r m a l N e t I d : 0024220 P R O C [ n : L O N G P 0024240 O I N T E R T O n e t P t r 0024260 ] \r R E T U R N S [ N 0024300 o r m a l N e t I d P t r ] ; \r 0024320 \r C a n o n N e t : P R O 0024340 C [ 376 001 \0 I 242 n : n e t P t 0024360 r ] \r R E T U R N S [ 0024400 C a n o n N e t P t r ] = I 0024420 N L I N E \r { R E T U R 0024440 N [ R e f C a n o n N e t [ n : 0024460 n , n e w R e f s : 0 ] ] 0024500 } ; \r \r D e R e f N e t : 0024520 P R O C [ n : n e t P t r , 0024540 r e m o v e d R e f s : I N 0024560 T E G E R _ 1 ] \r R 0024600 E T U R N S [ C a n o n N e t 0024620 P t r ] = I N L I N E \r 0024640 B E G I N \r [ ] _ 0024660 R e f C a n o n N e t [ n : 0024700 n , n e w R e f s : - r e m 0024720 o v e d R e f s ] ; \r R 0024740 E T U R N [ N I 376 001 \0 243 264 L ] ; 0024760 \r E N D ; \r \r F e a 0025000 t u r e N e t : P R O C [ f 0025020 : F e a t u r e P t r ] R E 0025040 T U R N S [ C a n o n N e t P 0025060 t r ] ; \r - - d o e s 0025100 n ' t i n c r e a s e r e f 0025120 c o u n t , f o r c e s f 0025140 . n e t t o b e n o n - n 0025160 i l \r \r M e r g e F e a t u 0025200 r e N e t s : P R O C [ f 1 0025220 , f 2 : F e a t u r e P t r 0025240 ] ; \r \r \r I t e m R e f T o 0025260 L p : P R O C [ c : I t e 0025300 m R e f ] \r R E T U R N 0025320 S [ p p d e f s . l i s t P t 0025340 r ] = I N L I N E \r 376 001 \0 0025360 B f { R E T U R N [ c . h 0025400 e a d . p r o t o . s e q [ o r 0025420 i e n t T o S o r t C l a s s [ 0025440 c . h e a d . o r i e n t ] ] \r 0025460 [ c . i d x ] ] } ; 0025500 \r \r C o o r d S i z e : P 0025520 R O C [ s i z e : C o o r d 0025540 P o i n t , \r o r i e n 0025560 t : p p d e f s . o r i e n t 0025600 a t i o n I n d e x ] R E T U 0025620 R N S [ C o o r d P o i n t ] 0025640 = \r I N L I N E \r 0025660 { R E T U R N [ I F I n l 0025700 i n e D e f s . B I T A N D [ o 0025720 r i e n t , 4 ] = 0 T H E N 0025740 s i z e \r E L S E 0025760 [ 376 001 \0 020 253 x : s i z e . y 0026000 , y : s i z e . x ] ] } ; \r 0026020 \r S c a l e T o C h i p m o 0026040 n k : P R O C [ x : C o o 0026060 r d ] \r R E T U R N S 0026100 [ p p d e f s . l o c N u m ] 0026120 = I N L I N E \r { R E 0026140 T U R N [ I n l i n e D e f s . 0026160 L o w H a l f [ x / l a m b d a 0026200 R e l a t i v e C o o r d S c a 0026220 l e ] ] } ; \r \r S c a l e P 0026240 o i n t T o C h i p m o n k : 0026260 P R O C [ p : C o o r d P o 0026300 i n t ] \r R E T U R N S 0026320 [ p p d e f s . P o i n t ] 0026340 = I N L I N E \r { R E 0026360 T U R N [ [ x 376 001 \0 220 5 : S c 0026400 a l e T o C h i p m o n k [ p . 0026420 x + d e l t a O r i g i n . x ] 0026440 , \r y : S c a l e 0026460 T o C h i p m o n k [ p . y + d 0026500 e l t a O r i g i n . y ] ] ] } 0026520 ; \r \r S c a l e F r o m C h 0026540 i p m o n k : P R O C [ x : 0026560 p p d e f s . l o c N u m ] \r 0026600 R E T U R N S [ C o o 0026620 r d ] = I N L I N E \r 0026640 { R E T U R N [ x * l a m b d 0026660 a R e l a t i v e C o o r d S c 0026700 a l e ] } ; \r \r S c a l e P 0026720 o i n t F r o m C h i p m o n k 0026740 : P R O C [ p : p p d e f 0026760 s . P o i n t ] \r 376 001 \0 c 0027000 313 R E T U R N S [ C o o r d 0027020 P o i n t ] = I N L I N E \r 0027040 { R E T U R N [ [ x : 0027060 S c a l e F r o m C h i p m o n 0027100 k [ p . x ] - d e l t a O r i g 0027120 i n . x , \r y : S 0027140 c a l e F r o m C h i p m o n k 0027160 [ p . y ] - d e l t a O r i g i 0027200 n . y ] ] } ; \r \r R e f C o 0027220 o r d P t : P R O C [ r : 0027240 C o o r d R e c t ] R E T U R 0027260 N S [ p p d e f s . P o i n t 0027300 ] ; \r \r S h o w F e a t u r 0027320 e : P R O C [ f : F e a t 0027340 u r e P t r ] ; \r - - 0027360 s h o w s i t o n t h e 0027400 s 376 \0 . 207 034 c r e e n f r o m 0027420 d e b u g g e r \r \r E N D 0027440 . - - o f C h i p N e t D 0027460 e f s \r 377 \0 \0 f e a t u r e p s 0027500 t . m e s a \0 373 231 366 320 327 \0 \0 376 001 0027520 \0 233 Y - - F e a t u r e P S T 0027540 . m e s a \r \r - - A g e n e 0027560 r i c p a c k a g e t o o 0027600 r g a n i z e l i s t e l e 0027620 m e n t s \r - - i n a p r 0027640 i o r i t y s e a r c h t r 0027660 e e b y t h e i n t e r v 0027700 a l s t h e y c o v e r , \r 0027720 - - a n d t o s e a r c h 0027740 b y i n t e r v a l . \r \r - 0027760 - l a s t m o d i f i e d 0030000 b y E . M c C r e i g h t , 0030020 N o v e m b e r 8 , 1 9 8 0030040 2 1 2 : 4 9 P M \r - - w 0030060 r i t t e n b y E . M c C 0030100 r e i g h t , F e b r u a r y 0030120 8 , 376 001 \0 ) 353 1 9 8 2 1 0030140 1 : 5 1 A M \r \r D I R E C T O 0030160 R Y \r p p d e f s , \r C 0030200 h i p N e t D e f s , \r I n 0030220 l i n e D e f s ; \r \r F e a t u 0030240 r e P S T : D E F I N I T I O 0030260 N S \r I M P O R T S I n l 0030300 i n e D e f s = \r B E G I 0030320 N \r c h e c k T r e e : P 0030340 R I V A T E B O O L E A N = 0030360 F A L S E ; \r \r D o m a i 0030400 n : P R I V A T E T Y P E 0030420 = C h i p N e t D e f s . C o 0030440 o r d ; \r I n t e r v a l : 0030460 P R I V A T E T Y P E = 0030500 C h i p N e t D e f s . I n t e 0030520 r v a l ; \r 376 001 \0 037 340 - 0030540 - a s s u m e s [ I n t e r 0030560 v a l . m i n . . I n t e r v a 0030600 l . m a x ) \r d o m a i n O 0030620 f f s e t : P R I V A T E L 0030640 O N G C A R D I N A L = 2 0030660 0 0 0 0 0 0 0 0 0 0 B ; \r 0030700 - - b e t w e e n R a d i 0030720 x K e y a n d D o m a i n \r 0030740 I t e m : P R I V A T E 0030760 T Y P E = C h i p N e t D e 0031000 f s . F e a t u r e P t r ; \r 0031020 n u l l I t e m : P R I V A 0031040 T E I t e m = N I L ; \r \r 0031060 R a d i x K e y : P R I V 0031100 A T E T Y P E = L O N G 0031120 C A R D I N A L ; \r R 376 001 \0 0031140 v 334 a d i x I n d e x : P R I 0031160 V A T E T Y P E = [ 0 . . 0031200 3 1 ) ; \r \r F e a t u r e P 0031220 S T H a n d l e : T Y P E = 0031240 L O N G P O I N T E R T O 0031260 P S T O b j e c t _ N I L 0031300 ; \r P S T H a n d l e : P 0031320 R I V A T E T Y P E = F e 0031340 a t u r e P S T H a n d l e ; \r 0031360 P S T O b j e c t : P R I 0031400 V A T E T Y P E = R E C O 0031420 R D [ \r z o n e : U 0031440 N C O U N T E D Z O N E , \r 0031460 f r e e N o d e s : P S 0031500 T B i n N o d e P t r _ N I 0031520 L , \r - - f r e e 0031540 o 376 001 \0 % 261 n e s l i n k e 0031560 d t h r o u g h h a l v e s 0031600 [ l o w e r ] \r r o o t 0031620 : P S T N o d e P t r \r 0031640 ] ; \r \r P S T N o d e P t 0031660 r : P R I V A T E T Y P E 0031700 = L O N G P O I N T E R T 0031720 O P S T N o d e _ \r 0031740 N I L | N U L L ; \r P S 0031760 T N o d e : P R I V A T E T 0032000 Y P E = R E C O R D [ \r 0032020 S E L E C T t a r g e t : 0032040 * F R O M \r n i 0032060 l = > N U L L , \r 0032100 l e a f = > [ i t e m : 0032120 I t e m ] , \r i n t 0032140 e r n a l = 376 001 \0 244 S > [ p 0032160 s t : P S T B i n N o d e P t 0032200 r ] , \r - - n 0032220 e v e r N I L , e x c e p t 0032240 i n f r e e l i s t \r 0032260 E N D C A S E ] _ [ 0032300 n i l [ ] ] ; \r \r H a l f : 0032320 P R I V A T E T Y P E = 0032340 { l o w e r , u p p e r } ; \r 0032360 \r P S T B i n N o d e P t r 0032400 : P R I V A T E T Y P E = 0032420 L O N G P O I N T E R T O 0032440 \r P S T B i n N o d e 0032460 _ N I L ; \r P S T B i n N 0032500 o d e : P R I V A T E T Y P 0032520 E = R E C O R D [ \r 0032540 - - T h i s p r i o 376 001 \0 221 0032560 366 r i t y s e a r c h t r e 0032600 e i s a k i n d o f P 0032620 a t r i c i a \r - - t 0032640 r e e ( s e e K n u t h v 0032660 . 3 p . 4 9 0 ) . \r 0032700 - - B i t s [ 0 . . u L e 0032720 n ) o f i n t . m a x o f 0032740 a l l I t e m s \r - 0032760 - i n t h i s s u b t r e 0033000 e m u s t m a t c h e a c 0033020 h o t h e r a n d t h a t 0033040 o f \r - - v M i n . 0033060 l o w e r v s u p p e r 0033100 i s d e t e r m i n e d b 0033120 y b i t u L e n . \r 0033140 - - O f a l l I t e m s 0033160 m 376 001 \0 | 314 e e t i n g t h e 0033200 s e c r i t e r i a , t h e 0033220 o n e w i t h m i n i m a 0033240 l \r - - i n t . m i n 0033260 a p p e a r s i n v M i n 0033300 . \r v M i n : I t e m 0033320 , \r u L e n : R a d i 0033340 x I n d e x , \r h a l v 0033360 e s : A R R A Y H a l f O 0033400 F P S T N o d e ] ; \r \r \r 0033420 N e w F e a t u r e P S T : P 0033440 R O C E D U R E [ z o n e : U 0033460 N C O U N T E D Z O N E ] \r 0033500 R E T U R N S [ P S T H a 0033520 n d l e ] ; \r \r D e s t r o 0033540 y F e a t u r e P S T : P R O 0033560 C E D U R E 376 001 \0 - E [ p : P 0033600 S T H a n d l e ] \r R E 0033620 T U R N S [ P S T H a n d l e ] 0033640 ; \r \r I n s e r t F e a t u 0033660 r e P S T , D e l e t e F e a 0033700 t u r e P S T : P R O C E D U 0033720 R E [ p : P S T H a n d l e , 0033740 i t e m : I t e m ] ; \r \r 0033760 C o u l d n t D e l e t e F e 0034000 a t u r e P S T : S I G N A L 0034020 ; \r \r M a x F e a t u r e I 0034040 n C o v e r : P R O C E D U R 0034060 E [ p : P S T H a n d l e , \r 0034100 d : D o m a i n ] R 0034120 E T U R N S [ c o v e r e d : 0034140 B O O L E A N , i t e m : I 0034160 t e m ] ; \r \r S e 376 001 \0 \b Q 0034200 a r c h F e a t u r e P S T : 0034220 P R O C E D U R E [ p : P S T 0034240 H a n d l e , \r i n t : 0034260 I n t e r v a l , t o u c h 0034300 : P R O C E D U R E [ i t e m 0034320 : I t e m ] ] ; \r \r C l a 0034340 s s i f y F e a t u r e P S T I 0034360 n t e r v a l : P R O C E D U 0034400 R E [ p : P S T H a n d l e , 0034420 \r i n t : I n t e r v 0034440 a l , \r c o v e r e d : 0034460 P R O C E D U R E [ i n t : 0034500 I n t e r v a l , r e p I t e 0034520 m : I t e m ] , \r g a 0034540 p : P R O C E D U R E [ i n t 0034560 : I n t e r v a l ] ] ; \r \r 0034600 376 001 \0 \a \n N u l l F e a t u r 0034620 e C o v e r e d : P R O C E D 0034640 U R E [ i n t : I n t e r v a 0034660 l , r e p I t e m : I t e m 0034700 ] ; \r \r N u l l F e a t u r 0034720 e G a p : P R O C E D U R E [ 0034740 i n t : I n t e r v a l ] ; \r 0034760 \f \r h i g h B i t : W O R 0035000 D = 1 0 0 0 0 0 B ; \r a 0035020 l l B i t s : W O R D = 1 0035040 7 7 7 7 7 B ; \r \r - - T h e 0035060 f o l l o w i n g c o d e k 0035100 n o w s t h a t a R a d i 0035120 x K e y i s a \r - - L O N 0035140 G C A R D I N A L . \r \r T 0035160 r e e H a l f : P R I V A T E 0035200 P R O C 376 001 \0 210 271 E D U R E [ 0035220 i t e m : I t e m , p r e f 0035240 : R a d i x I n d e x ] \r 0035260 R E T U R N S [ H a l f ] 0035300 = I N L I N E \r B E G 0035320 I N O P E N I n l i n e D e 0035340 f s ; \r k : R a d i x 0035360 K e y _ R a d i x M a x K e 0035400 y [ i t e m ] ; \r S E L 0035420 E C T p r e f F R O M \r 0035440 > 1 5 = > \r 0035460 R E T U R N [ \r 0035500 ( I F B I T A N D [ L o w H a 0035520 l f [ k ] , B I T S H I F T [ 0035540 h i g h B i t , 1 6 - p r e f 0035560 ] ] = 0 \r T H E 0035600 N l o w e r \r 376 001 \0 021 266 0035620 E L S E u p p e r ) 0035640 ] ; \r E N D C A S E 0035660 = > \r R E T U R N [ 0035700 \r ( I F B I T 0035720 A N D [ H i g h H a l f [ k ] , 0035740 B I T S H I F T [ h i g h B i 0035760 t , - p r e f ] ] = 0 \r 0036000 T H E N l o w e r \r 0036020 E L S E u p p 0036040 e r ) ] ; \r E N D ; - 0036060 - o f T r e e H a l f \r \r \r 0036100 A b o v e : P R I V A T E 0036120 P R O C E D U R E [ y : D o 0036140 m a i n , p : P S T B i n N 0036160 o d e P t r ] \r R E T U 0036200 R N S [ B O O L E A N ] = 376 0036220 001 \0 g 370 I N L I N E \r B 0036240 E G I N O P E N I n l i n e 0036260 D e f s ; \r k y : R a 0036300 d i x K e y _ T o R a d i x 0036320 K e y [ y ] ; \r k n : 0036340 R a d i x K e y _ R a d i x 0036360 M a x K e y [ p . v M i n ] ; \r 0036400 k n _ S E L E C T 0036420 p . u L e n F R O M \r 0036440 > 1 5 = > \r 0036460 L O O P H O L E [ \r 0036500 L o n g N u m b e r [ 0036520 n u m [ h i g h b i t s : H i 0036540 g h H a l f [ k n ] , \r 0036560 l o w b i t s : 0036600 B I T O R [ L o w H a l f [ k 0036620 n ] , \r 376 001 \0 p 037 0036640 B I T S H I F T [ 0036660 a l l B i t s , 1 6 - p . u L 0036700 e n ] ] ] ] , \r 0036720 R a d i x K e y ] , \r 0036740 E N D C A S E = > \r 0036760 L O O P H O L E [ \r 0037000 L o n g N u 0037020 m b e r [ n u m [ h i g h b i t 0037040 s : B I T O R [ H i g h H a l 0037060 f [ k n ] , \r 0037100 B I T S H I F T [ a l 0037120 l B i t s , - p . u L e n ] ] 0037140 , \r l o 0037160 w b i t s : a l l B i t s ] ] 0037200 , \r R a d i 0037220 x K e y ] ; \r 376 001 \0 247 : 0037240 R E T U R N [ k n < = k y ] ; \r 0037260 E N D ; - - o f A 0037300 b o v e \r \r \r P r e f i x T 0037320 a b l e : P R I V A T E T Y 0037340 P E = P A C K E D A R R A 0037360 Y [ 0 . . 2 5 6 ) O F [ 0 0037400 . . 8 ] ; \r - - t [ i 0037420 ] i s t h e n u m b e r 0037440 o f h i g h - o r d e r 0 0037460 b i t s i n \r - - a 0037500 n 8 - b i t r e p r e s e n 0037520 t a t i o n o f i \r P r 0037540 e f i x T a b l e P t r : P R 0037560 I V A T E T Y P E = \r 0037600 L O N G P O I N T E R T O 0037620 P r e f i x T a b l e _ 376 001 0037640 \0 031 260 N I L ; \r \r C o m m 0037660 o n L e n : P R I V A T E P 0037700 R O C E D U R E [ i 1 , i 2 : 0037720 I t e m , \r p t : P 0037740 r e f i x T a b l e P t r ] R 0037760 E T U R N S [ R a d i x I n d e 0040000 x ] = I N L I N E \r 0040020 B E G I N O P E N I n l i n 0040040 e D e f s ; \r k 1 : R 0040060 a d i x K e y _ R a d i x M 0040100 a x K e y [ i 1 ] ; \r k 0040120 2 : R a d i x K e y _ R a 0040140 d i x M a x K e y [ i 2 ] ; \r 0040160 d : W O R D ; \r 0040200 r e s u l t : R a d i x I n d 0040220 e x ; \r I F ( d _ 0040240 B I T 376 001 \0 315 352 X O R [ H i g h 0040260 H a l f [ k 1 ] , H i g h H a 0040300 l f [ k 2 ] ] ) = 0 T H E N \r 0040320 B E G I N \r 0040340 I F ( d _ B I T X O R 0040360 [ L o w H a l f [ k 1 ] , L o 0040400 w H a l f [ k 2 ] ] ) = 0 T H 0040420 E N \r R E T U R 0040440 N [ L A S T [ R a d i x I n d e 0040460 x ] ] \r E L S E r 0040500 e s u l t _ 1 6 ; \r 0040520 E N D \r E L S E r 0040540 e s u l t _ 0 ; \r I 0040560 F B I T A N D [ d , 1 7 7 4 0040600 0 0 B ] = 0 T H E N r e s u 0040620 l t _ r e s u l t + 8 \r 0040640 E L S E 376 001 \0 R 211 d 0040660 _ B I T S H I F T [ d , - 8 0040700 ] ; \r R E T U R N [ r e 0040720 s u l t + p t [ d ] ] ; \r 0040740 E N D ; - - o f C o m m 0040760 o n L e n \r \r S h a l l o w 0041000 e r : P R I V A T E P R O C 0041020 E D U R E [ i 1 , i 2 : I t 0041040 e m ] R E T U R N S \r 0041060 [ B O O L E A N ] = I N L I 0041100 N E \r { R E T U R N [ S 0041120 E L E C T M i n [ i 1 ] - M i 0041140 n [ i 2 ] F R O M \r 0041160 < 0 = > T R U E , \r 0041200 > 0 = > F A L S E , \r 0041220 E N D C A S E = > 0041240 M a x [ i 2 ] < = M a x 376 001 \0 0041260 200 363 [ i 1 ] \r ] } ; \r \r 0041300 R a d i x M a x K e y : P 0041320 R I V A T E P R O C E D U R E 0041340 [ i t e m : I t e m ] \r 0041360 R E T U R N S [ R a d i x K e 0041400 y ] = I N L I N E \r 0041420 { R E T U R N [ T o R a d i x K 0041440 e y [ M a x [ i t e m ] ] ] } ; 0041460 \r \r T o R a d i x K e y : 0041500 P R I V A T E P R O C E D U R 0041520 E [ d : D o m a i n ] \r 0041540 R E T U R N S [ R a d i x K e 0041560 y ] = I N L I N E \r 0041600 { R E T U R N [ L O O P H O L E 0041620 [ d , R a d i x K e y ] + d o 0041640 m a i n O f f s e t ] } ; \r \r \r 0041660 376 001 \0 231 343 M i n : P R I V 0041700 A T E P R O C E D U R E [ i t 0041720 e m : I t e m ] - - c l o 0041740 s e d l o w e r b o u n d \r 0041760 R E T U R N S [ D o m a 0042000 i n ] = I N L I N E \r 0042020 { R E T U R N [ i t e m . c o 0042040 v e r . y 1 ] } ; \r \r M a x 0042060 : P R I V A T E P R O C E D 0042100 U R E [ i t e m : I t e m ] 0042120 - - o p e n u p p e r b o 0042140 u n d \r R E T U R N S [ 0042160 D o m a i n ] = I N L I N E 0042200 \r { R E T U R N [ i t e 0042220 m . c o v e r . y 2 ] } ; \r \r 0042240 E N D . - - o f F e a t 0042260 u r e P S T \r 377 \0 \0 l e f t f e 0042300 a t u r e p q . m e s a \0 373 235 203 0042320 036 372 \0 \0 376 001 \0 ` 026 - - L e f t 0042340 F e a t u r e P Q . m e s a \r \r 0042360 - - A g e n e r i c p a c 0042400 k a g e t o o r g a n i z e 0042420 i t e m s \r - - i n a p 0042440 r i o r i t y q u e u e , s 0042460 o r t e d b y i n c r e a s 0042500 i n g o r d e r o f \r - - 0042520 V a l . \r \r - - l a s t m o 0042540 d i f i e d b y E . M c C 0042560 r e i g h t , S e p t e m b e 0042600 r 2 7 , 1 9 8 4 1 2 : 5 0042620 5 P M \r - - c u s t o m i z 0042640 e d f o r L e f t F e a t u 0042660 r e b y E . M c C r e i g 0042700 h t , \r - - M a y 6 , 0042720 1 9 8 2 2 : 376 001 \0 x 277 3 4 0042740 P M \r - - w r i t t e n b 0042760 y E . M c C r e i g h t , 0043000 F e b r u a r y 8 , 1 9 8 2 0043020 2 : 0 4 P M \r \r D I R E C 0043040 T O R Y \r p p d e f s , \r 0043060 C h i p N e t D e f s ; \r \r L 0043100 e f t F e a t u r e P Q : D E 0043120 F I N I T I O N S I M P O R T 0043140 S C h i p N e t D e f s = \r 0043160 B E G I N \r c h e c k T 0043200 r e e : P R I V A T E B O O 0043220 L E A N = F A L S E ; \r \r 0043240 D o m a i n : P R I V A T E 0043260 T Y P E = C h i p N e t D 0043300 e f s . C o o r d ; \r I t e 0043320 m : P R I V A T E T Y P 376 001 0043340 \0 361 J E = C h i p N e t D e 0043360 f s . F e a t u r e P t r ; \r \r 0043400 L e f t F e a t u r e P Q H 0043420 a n d l e : T Y P E = L O 0043440 N G P O I N T E R T O P Q 0043460 O b j e c t _ N I L ; \r 0043500 P Q H a n d l e : P R I V A T 0043520 E T Y P E = L e f t F e a 0043540 t u r e P Q H a n d l e ; \r 0043560 m a x N S e q s : C A R D I N 0043600 A L = 1 6 ; \r P Q O b j 0043620 e c t : P R I V A T E T Y P 0043640 E = R E C O R D [ \r 0043660 z o n e : U N C O U N T E D 0043700 Z O N E , \r s i z e : 0043720 L O N G I N T E G E R _ 0043740 0 , \r 376 001 \0 312 033 t o p S 0043760 e q : [ 0 . . m a x N S e q s 0044000 ) _ 0 , \r s : A R 0044020 R A Y [ 0 . . m a x N S e q s 0044040 ) O F P Q S e q P t r _ 0044060 A L L [ N I L ] \r ] ; \r 0044100 \r P Q S e q P t r : P R I 0044120 V A T E T Y P E = L O N G 0044140 P O I N T E R T O P Q S e 0044160 q _ N I L ; \r m a x I t 0044200 e m s P e r S e q : C A R D I 0044220 N A L = 1 6 0 0 0 ; \r 0044240 - - W A R N I N G : T h i 0044260 s m a n y I t e m s m u s 0044300 t f i t i n n o m o r e 0044320 t h a n 3 2 7 0 0 w o r d 0044340 s , \r - 376 001 \0 374 216 - 0044360 b e c a u s e o f f r e 0044400 e s t o r a g e p a c k a g 0044420 e l i m i t a t i o n s ! ! \r 0044440 P Q S e q : P R I V A T E 0044460 T Y P E = R E C O R D [ \r 0044500 h e a p : S E Q U E N 0044520 C E m a x : [ 0 . . m a x I 0044540 t e m s P e r S e q ] O F I 0044560 t e m \r ] ; \r \f \r L 0044600 e f t F e a t u r e P Q U n d e 0044620 r f l o w : S I G N A L ; \r \r 0044640 N e w L e f t F e a t u r e 0044660 P Q : P R O C E D U R E [ z o 0044700 n e : U N C O U N T E D Z O 0044720 N E , \r m a x : C A R 0044740 D I N A L _ 5 0 ] \r 376 001 \0 0044760 342 004 R E T U R N S [ P Q H 0045000 a n d l e ] ; \r \r D e s t r 0045020 o y L e f t F e a t u r e P Q : 0045040 P R O C E D U R E [ p : P Q 0045060 H a n d l e ] \r R E T U 0045100 R N S [ P Q H a n d l e ] ; \r \r 0045120 I n s e r t L e f t F e a t 0045140 u r e P Q : P R O C E D U R E 0045160 [ p : P Q H a n d l e , i t 0045200 e m : I t e m ] ; \r \r E x 0045220 t r a c t L e f t F e a t u r e 0045240 P Q : P R O C E D U R E [ p : 0045260 P Q H a n d l e ] R E T U R 0045300 N S [ i t e m : I t e m ] ; \r 0045320 \r M a p E q u a l L e f t F 0045340 e a t u r e P Q : P R O C E D 0045360 U R 376 001 \0 005 323 E [ p : P Q H a 0045400 n d l e , \r p r o c : 0045420 P R O C E D U R E [ I t e m ] ] 0045440 ; \r \r D e l e t e E q u a l 0045460 L e f t F e a t u r e P Q : P 0045500 R O C E D U R E [ p : P Q H a 0045520 n d l e ] ; \r \r L e f t F e 0045540 a t u r e P Q S i z e : P R O 0045560 C E D U R E [ p : P Q H a n d 0045600 l e ] R E T U R N S [ L O N G 0045620 I N T E G E R ] = \r 0045640 I N L I N E \r { R E T U 0045660 R N [ p . s i z e ] } ; \r \r 0045700 L e f t F e a t u r e P Q M i n 0045720 : P R O C E D U R E [ p : P 0045740 Q H a n d l e ] R E T U R N S 0045760 [ i t e m : 376 \0 271 020 " I t e m 0046000 ] = \r I N L I N E \r 0046020 { R E T U R N [ p . s [ 0 0046040 ] [ 0 ] ] } ; \r \r V a l L e 0046060 s s : P R O C E D U R E [ i t 0046100 e m 1 , i t e m 2 : I t e m 0046120 ] R E T U R N S [ B O O L E A 0046140 N ] = I N L I N E \r 0046160 { R E T U R N [ i t e m 1 . c o 0046200 v e r . x 1 < i t e m 2 . c o v 0046220 e r . x 1 ] } ; \r \r E N D . 0046240 - - o f L e f t F e a t u 0046260 r e P Q \r 377 \0 \0 r i g h t f e a 0046300 t u r e p q . m e s a \0 373 235 204 H 0046320 261 \0 \0 376 001 \0 253 - - - R i g h t 0046340 F e a t u r e P Q . m e s a \r \r 0046360 - - A g e n e r i c p a c 0046400 k a g e t o o r g a n i z e 0046420 i t e m s \r - - i n a p 0046440 r i o r i t y q u e u e , s 0046460 o r t e d b y i n c r e a s 0046500 i n g o r d e r o f \r - - 0046520 V a l . \r \r - - l a s t m o 0046540 d i f i e d b y E . M c C 0046560 r e i g h t , S e p t e m b e 0046600 r 2 8 , 1 9 8 4 1 0 : 1 0046620 0 A M \r - - c u s t o m i z 0046640 e d f o r R i g h t F e a t 0046660 u r e b y E . M c C r e i 0046700 g h t , \r - - M a y 6 0046720 , 1 9 8 2 376 001 \0 347 4 2 : 3 0046740 4 P M \r - - w r i t t e n 0046760 b y E . M c C r e i g h t , 0047000 F e b r u a r y 8 , 1 9 8 0047020 2 2 : 0 4 P M \r \r D I R E 0047040 C T O R Y \r p p d e f s , \r 0047060 C h i p N e t D e f s ; \r \r 0047100 R i g h t F e a t u r e P Q : 0047120 D E F I N I T I O N S I M P O 0047140 R T S C h i p N e t D e f s 0047160 = \r B E G I N \r c h e c 0047200 k T r e e : P R I V A T E B 0047220 O O L E A N = F A L S E ; \r 0047240 \r D o m a i n : P R I V A 0047260 T E T Y P E = C h i p N e 0047300 t D e f s . C o o r d ; \r I 0047320 t e m : P R I V A T E 376 001 \0 0047340 256 211 T Y P E = C h i p N e t 0047360 D e f s . F e a t u r e P t r ; 0047400 \r \r R i g h t F e a t u r e 0047420 P Q H a n d l e : T Y P E = 0047440 L O N G P O I N T E R T O 0047460 P Q O b j e c t _ N I L ; 0047500 \r P Q H a n d l e : P R I 0047520 V A T E T Y P E = R i g h 0047540 t F e a t u r e P Q H a n d l e 0047560 ; \r m a x N S e q s : C A 0047600 R D I N A L = 1 6 ; \r P 0047620 Q O b j e c t : P R I V A T E 0047640 T Y P E = R E C O R D [ 0047660 \r z o n e : U N C O U 0047700 N T E D Z O N E , \r s 0047720 i z e : L O N G I N T E G E 0047740 R 376 001 \0 o 262 _ 0 , \r 0047760 t o p S e q : [ 0 . . m a x N 0050000 S e q s ) _ 0 , \r s 0050020 : A R R A Y [ 0 . . m a x N 0050040 S e q s ) O F P Q S e q P t 0050060 r _ A L L [ N I L ] \r 0050100 ] ; \r \r P Q S e q P t r : 0050120 P R I V A T E T Y P E = 0050140 L O N G P O I N T E R T O 0050160 P Q S e q _ N I L ; \r m 0050200 a x I t e m s P e r S e q : C 0050220 A R D I N A L = 1 6 0 0 0 ; 0050240 \r - - W A R N I N G : 0050260 T h i s m a n y I t e m s 0050300 m u s t f i t i n n o 0050320 m o r e t h a n 3 2 7 0 0 0050340 w o r d s , \r 376 001 \0 031 222 0050360 - - b e c a u s e o f 0050400 f r e e s t o r a g e p a 0050420 c k a g e l i m i t a t i o n 0050440 s ! ! \r P Q S e q : P R I 0050460 V A T E T Y P E = R E C O 0050500 R D [ \r h e a p : S E 0050520 Q U E N C E m a x : [ 0 . . 0050540 m a x I t e m s P e r S e q ] 0050560 O F I t e m \r ] ; \r \f 0050600 \r R i g h t F e a t u r e P 0050620 Q U n d e r f l o w : S I G N 0050640 A L ; \r \r N e w R i g h t F 0050660 e a t u r e P Q : P R O C E D 0050700 U R E [ z o n e : U N C O U N 0050720 T E D Z O N E , \r m a 0050740 x : C A R D I N A L 376 001 \0 235 0050760 s _ 5 0 ] \r R E T U R 0051000 N S [ P Q H a n d l e ] ; \r \r 0051020 D e s t r o y R i g h t F e a 0051040 t u r e P Q : P R O C E D U R 0051060 E [ p : P Q H a n d l e ] \r 0051100 R E T U R N S [ P Q H a n 0051120 d l e ] ; \r \r I n s e r t R 0051140 i g h t F e a t u r e P Q : P 0051160 R O C E D U R E [ p : P Q H a 0051200 n d l e , i t e m : I t e m 0051220 ] ; \r \r E x t r a c t R i g 0051240 h t F e a t u r e P Q : P R O 0051260 C E D U R E [ p : P Q H a n d 0051300 l e ] R E T U R N S [ i t e m 0051320 : I t e m ] ; \r \r M a p E 0051340 q u a l R i g h t F e a t u r e 0051360 P 376 001 \0 g C Q : P R O C E D U 0051400 R E [ p : P Q H a n d l e , \r 0051420 p r o c : P R O C E D 0051440 U R E [ I t e m ] ] ; \r \r D 0051460 e l e t e E q u a l R i g h t F 0051500 e a t u r e P Q : P R O C E D 0051520 U R E [ p : P Q H a n d l e ] 0051540 ; \r \r R i g h t F e a t u r 0051560 e P Q S i z e : P R O C E D U 0051600 R E [ p : P Q H a n d l e ] 0051620 R E T U R N S [ L O N G I N T 0051640 E G E R ] = \r I N L I 0051660 N E \r { R E T U R N [ p 0051700 . s i z e ] } ; \r \r R i g h 0051720 t F e a t u r e P Q M i n : P 0051740 R O C E D U R E [ p : P Q H a 0051760 n d l e ] 376 \0 311 221 314 R E T U R 0052000 N S [ i t e m : I t e m ] = 0052020 \r I N L I N E \r 0052040 { R E T U R N [ p . s [ 0 ] [ 0 0052060 ] ] } ; \r \r V a l L e s s : 0052100 P R O C E D U R E [ i t e m 1 0052120 , i t e m 2 : I t e m ] R 0052140 E T U R N S [ B O O L E A N ] 0052160 = I N L I N E \r { R E 0052200 T U R N [ i t e m 1 . c o v e r 0052220 . x 2 < i t e m 2 . c o v e r . 0052240 x 2 ] } ; \r \r \r E N D . - 0052260 - o f R i g h t F e a t u r 0052300 e P Q \r 377 \0 \0 c e l l i n s t p 0052320 q . m e s a \0 373 231 001 244 346 \0 \0 376 001 0052340 \0 B 266 - - C e l l I n s t P Q 0052360 . m e s a \r \r - - A g e n e 0052400 r i c p a c k a g e t o o 0052420 r g a n i z e i t e m s \r - - 0052440 i n a p r i o r i t y q 0052460 u e u e , s o r t e d b y 0052500 i n c r e a s i n g o r d e r 0052520 o f \r - - V a l . \r \r - - 0052540 l a s t m o d i f i e d b y 0052560 E . M c C r e i g h t , M 0052600 a y 6 , 1 9 8 2 2 : 3 6 0052620 P M \r - - w r i t t e n b 0052640 y E . M c C r e i g h t , 0052660 F e b r u a r y 8 , 1 9 8 2 0052700 2 : 0 4 P M \r - - c u s 0052720 t o m i z e d b y E . M c 0052740 C r e 376 001 \0 260 1 i g h t , F e 0052760 b r u a r y 8 , 1 9 8 2 0053000 3 : 3 6 P M \r \r D I R E C T O 0053020 R Y \r p p d e f s , \r C 0053040 h i p N e t D e f s ; \r \r C e l 0053060 l I n s t P Q : D E F I N I T 0053100 I O N S = \r B E G I N \r 0053120 c h e c k T r e e : P R I V 0053140 A T E B O O L E A N = F A 0053160 L S E ; \r \r D o m a i n : 0053200 P R I V A T E T Y P E = C 0053220 h i p N e t D e f s . C o o r d 0053240 ; \r I t e m : P R I V A T 0053260 E T Y P E = C h i p N e t 0053300 D e f s . C e l l I n s t P t ; 0053320 \r \r C e l l I n s t P Q H a 0053340 n d l e : T Y 376 001 \0 322 ' P E 0053360 = L O N G P O I N T E R T 0053400 O P Q O b j e c t _ N I L 0053420 ; \r P Q H a n d l e : P R 0053440 I V A T E T Y P E = C e l 0053460 l I n s t P Q H a n d l e ; \r 0053500 P Q O b j e c t : P R I V A 0053520 T E T Y P E = R E C O R D 0053540 [ \r z o n e : U N C 0053560 O U N T E D Z O N E , \r 0053600 s i z e : C A R D I N A L 0053620 _ 0 , \r s : P Q S e 0053640 q P t r \r ] ; \r \r P 0053660 Q S e q P t r : P R I V A T E 0053700 T Y P E = L O N G P O I 0053720 N T E R T O P Q S e q _ 0053740 N I L ; \r P Q S e q : 376 001 \0 0053760 g z P R I V A T E T Y P E 0054000 = R E C O R D [ \r h e 0054020 a p : S E Q U E N C E m a x 0054040 : C A R D I N A L O F I t 0054060 e m \r ] ; \r \f \r C e 0054100 l l I n s t P Q U n d e r f l o 0054120 w : S I G N A L ; \r \r N e 0054140 w C e l l I n s t P Q : P R O 0054160 C E D U R E [ z o n e : U N C 0054200 O U N T E D Z O N E , \r 0054220 m a x : C A R D I N A L _ 0054240 5 0 ] \r R E T U R N S 0054260 [ P Q H a n d l e ] ; \r \r D 0054300 e s t r o y C e l l I n s t P Q 0054320 : P R O C E D U R E [ p : P 0054340 Q H a n d l e ] \r R E T 0054360 U R 376 001 \0 357 : N S [ P Q H a n d 0054400 l e ] ; \r \r I n s e r t C e 0054420 l l I n s t P Q : P R O C E D 0054440 U R E [ p : P Q H a n d l e , 0054460 i t e m : I t e m ] ; \r \r 0054500 E x t r a c t C e l l I n s t 0054520 P Q : P R O C E D U R E [ p : 0054540 P Q H a n d l e ] R E T U R 0054560 N S [ i t e m : I t e m ] ; \r 0054600 \r C e l l I n s t P Q S i z 0054620 e : P R O C E D U R E [ p : 0054640 P Q H a n d l e ] R E T U R N 0054660 S [ C A R D I N A L ] = \r 0054700 I N L I N E \r { R E 0054720 T U R N [ p . s i z e ] } ; \r \r 0054740 C e l l I n s t P Q M i n : 0054760 P R O C E D 376 \0 263 T \a U R E [ 0055000 p : P Q H a n d l e ] R E T 0055020 U R N S [ i t e m : I t e m ] 0055040 = \r I N L I N E \r 0055060 { R E T U R N [ p . s . h e 0055100 a p [ 0 ] ] } ; \r \r V a l : 0055120 P R O C E D U R E [ i t e m : 0055140 I t e m ] R E T U R N S [ D 0055160 o m a i n ] = I N L I N E \r 0055200 { R E T U R N [ i t e m 0055220 . x ] } ; \r \r E N D . - - 0055240 o f C e l l I n s t P Q \r 377 0055260 \0 \0 c h i p w i r e . m e s a \0 0055300 373 231 w 024 A \0 \0 376 001 \0 331 036 - - C 0055320 h i p W i r e . m e s a \r \r - - 0055340 l a s t m o d i f i e d b 0055360 y E . M c C r e i g h t , 0055400 A u g u s t 3 , 1 9 8 2 0055420 4 : 1 5 P M \r - - w r i t t 0055440 e n b y E . M c C r e i g 0055460 h t , M a r c h 5 , 1 9 8 0055500 2 1 0 : 0 5 A M \r \r D I R 0055520 E C T O R Y \r C h i p N e t 0055540 D e f s , \r F e a t u r e P 0055560 S T , \r p p d e f s ; \r \r C 0055600 h i p W i r e : D E F I N I T 0055620 I O N S = \r B E G I N O 0055640 P E N C h i p N e t D e f s , 0055660 F e a t u r e P S T , p p d 0055700 e f s ; \r \r - - 376 001 \0 276 0055720 334 T y p e s \r \r S l 0055740 i c e P t r : T Y P E = L 0055760 O N G P O I N T E R T O S 0056000 l i c e _ N I L ; \r S l 0056020 i c e : T Y P E = A R R A 0056040 Y E x t r a c t L e v e l O 0056060 F F e a t u r e P S T H a n d 0056100 l e ; \r \r \r - - P r 0056120 o c e d u r e s \r 0056140 \r N e w S l i c e : P R O 0056160 C E D U R E R E T U R N S [ S 0056200 l i c e P t r ] ; \r \r D e s 0056220 t r o y S l i c e : P R O C E 0056240 D U R E [ s : S l i c e P t r 0056260 ] R E T U R N S [ S l i c e P 0056300 t r ] ; \r \r W i r e E n t e 0056320 r 376 001 \0 303 312 e d , W i r e L e 0056340 f t : P R O C E D U R E [ f : 0056360 F e a t u r e P t r , s l i 0056400 c e : S l i c e P t r ] ; \r \r 0056420 O v e r l a p I s V i o l a 0056440 t i o n : P R O C E D U R E [ 0056460 p : F e a t u r e P S T H a n 0056500 d l e , \r f : F e a t 0056520 u r e P t r , \r p r o b 0056540 l e m : P R O C E D U R E [ r 0056560 : C o o r d R e c t ] ] ; \r \r 0056600 H a v e S h a r e d A r e a 0056620 : P R O C E D U R E [ r 1 , 0056640 r 2 : C o o r d R e c t ] \r 0056660 R E T U R N S [ B O O L E 0056700 A N ] ; \r S h a r e d A r e 0056720 a : P R O 376 \0 J 375 024 C E D U R 0056740 E [ r 1 , r 2 : C o o r d R 0056760 e c t ] \r R E T U R N S 0057000 [ r : C o o r d R e c t ] ; \r 0057020 \r E N D . - - o f C h i p 0057040 W i r e \r 377 \0 \0 c h i p f e a t 0057060 u r e . m e s a \0 373 231 L 365 230 \0 \0 0057100 376 001 \0 } 365 - - C h i p F e a t 0057120 u r e . m e s a \r \r - - l a s 0057140 t m o d i f i e d b y E . 0057160 M c C r e i g h t , J u l y 0057200 2 , 1 9 8 2 5 : 4 0 P 0057220 M \r - - w r i t t e n b y 0057240 E . M c C r e i g h t , M a 0057260 r c h 1 1 , 1 9 8 2 4 : 0057300 4 8 P M \r \r D I R E C T O R Y 0057320 \r C h i p N e t D e f s , \r 0057340 C h i p W i r e , \r L e 0057360 f t F e a t u r e P Q , \r p 0057400 p d e f s ; \r \r C h i p F e a t 0057420 u r e : D E F I N I T I O N S 0057440 = \r B E G I N O P E N 0057460 p p d e f s , C h i p N e t D 0057500 e f s ; \r 376 001 \0 m 345 \r N e w 0057520 F e a t u r e : P R O C E D U 0057540 R E [ c o v e r : C o o r d R 0057560 e c t _ [ 0 , 0 , 0 , 0 ] , 0057600 \r l e v : E x t r a c 0057620 t L e v e l _ u n k n o w n 0057640 , \r c a l l e r : I t 0057660 e m R e f _ [ N I L , 0 ] 0057700 , \r l q : L e f t F e 0057720 a t u r e P Q . L e f t F e a t 0057740 u r e P Q H a n d l e _ N I 0057760 L ] \r R E T U R N S [ F 0060000 e a t u r e P t r ] ; \r \r D 0060020 e s t r o y F e a t u r e : P 0060040 R O C E D U R E [ f : F e a t 0060060 u r e P t r ] R E T U R N S [ 0060100 F e a t u r e P t r 376 \0 236 260 026 ] 0060120 ; \r \r B W C u r s o r : P 0060140 R O C E D U R E [ w o r l d : 0060160 C o o r d P o i n t ] ; \r \r 0060200 N o t e M a r k : P R O C E D 0060220 U R E [ r : C o o r d R e c t 0060240 , s : S T R I N G , \r 0060260 a r g 1 , a r g 2 , a r g 0060300 3 : P O I N T E R _ N I L 0060320 ] ; \r \r E N D . - - o f 0060340 C h i p F e a t u r e \r 377 \0 \0 0060360 c h i p e x p a n d . m e s a \0 0060400 373 231 ] 005 \n \0 \0 376 001 \0 326 D - - C 0060420 h i p E x p a n d . m e s a \r \r 0060440 - - l a s t m o d i f i e d 0060460 b y E . M c C r e i g h t 0060500 , J u l y 1 4 , 1 9 8 2 0060520 9 : 3 5 P M \r - - w r i t 0060540 t e n b y E . M c C r e i 0060560 g h t , M a r c h 1 1 , 1 0060600 9 8 2 4 : 4 8 P M \r \r D I 0060620 R E C T O R Y \r C e l l I n 0060640 s t P Q , \r C h i p N e t D 0060660 e f s , \r C h i p W i r e , 0060700 \r L e f t F e a t u r e P Q 0060720 , \r p p d e f s , \r R i 0060740 g h t F e a t u r e P Q ; \r \r C 0060760 h i p E x p a n d : D E F I N 0061000 I T I O N S = \r B 376 001 \0 027 0061020 321 E G I N O P E N p p d e f 0061040 s , C h i p N e t D e f s ; \r 0061060 \r M a k e I n s t a n c e : 0061100 P R O C E D U R E [ i t e m : 0061120 I t e m R e f , \r s l 0061140 i c e : C h i p W i r e . S l 0061160 i c e P t r , \r f u t u 0061200 r e F e a t u r e s : L e f t 0061220 F e a t u r e P Q . L e f t F e 0061240 a t u r e P Q H a n d l e , \r 0061260 p r e s e n t F e a t u r 0061300 e s : R i g h t F e a t u r e 0061320 P Q . R i g h t F e a t u r e P 0061340 Q H a n d l e , \r c e l 0061360 l Q , d e a d C e l l Q : C 0061400 e l l I n s t P Q . C e l l I n 0061420 s 376 001 \0 331 307 t P Q H a n d l e ] 0061440 ; \r \r E x i t I n s t a n c 0061460 e : P R O C E D U R E [ i n s 0061500 t : I n s t a n c e P t r ] ; 0061520 \r \r C h e c k C l u s t e r 0061540 s : P R O C E D U R E [ c a l 0061560 l : C e l l C a l l P t r ] ; 0061600 \r - - r e m o v e s 0061620 s a t i s f i e d M u s t C o 0061640 n n e c t ' s \r \r M a k e P 0061660 r o t o : P R O C E D U R E [ 0061700 o b : o b P t r , \r l 0061720 o c N u m S c a l e : L o c N 0061740 u m S c a l e _ l a m b d a 0061760 R e l a t i v e , \r n a 0062000 m e : S T R I N G _ N I L 0062020 ] R E T U 376 001 \0 ' 350 R N S [ c 0062040 : P r o t o P t r ] ; \r \r 0062060 P r o t o S e q : P R O C E D 0062100 U R E [ i n s t : I n s t a n 0062120 c e P t r ] \r R E T U R 0062140 N S [ L i s t P t r S e q P t r 0062160 ] ; \r \r N e a r e s t C e l 0062200 l I n s t a n c e : P R O C E 0062220 D U R E [ p : I n s t a n c e 0062240 P t r ] \r R E T U R N S 0062260 [ c : C e l l C a l l P t r ] 0062300 ; \r \r j o i n T o : P R I 0062320 V A T E L O N G P O I N T E 0062340 R T O n e t P t r ; \r \r 0062360 x s t r I n s t : P R I V A T 0062400 E X s t r C a l l P t r ; \r \r 0062420 e x X s t r 0 , 376 001 \0 % P 0062440 e x P X s t r 0 , e x A X s t 0062460 r 0 , e x P u 0 , e x B C 0 0062500 , \r e x B u C 0 : \r 0062520 P R I V A T E d r P r o c 0062540 ; \r \r E x t r a c t o r F e 0062560 a t u r e P r o c : P R I V A 0062600 T E T Y P E = R E C O R D 0062620 [ \r p : P R O C E D U 0062640 R E [ x 1 , y 1 , x 2 , y 0062660 2 : l o c N u m , l e v : 0062700 E x t r a c t L e v e l ] ] ; \r 0062720 \r E x t r a c t o r F e a t 0062740 u r e : P R I V A T E E x t 0062760 r a c t o r F e a t u r e P r o 0063000 c ; \r - - M e s a c 0063020 a n ' t h a n d l e a n e 0063040 376 \0 4 A / x p o r t e d p r o 0063060 c e d u r e v a r i a b l e \r 0063100 \r E N D . - - o f C h 0063120 i p E x p a n d \r 377 \0 \0 c h i p 0063140 d r c . m e s a \0 373 233 i R 306 \0 \0 0063160 376 001 \0 036 357 - - C h i p D R C . 0063200 m e s a \r \r - - l a s t m o 0063220 d i f i e d b y E . M c C 0063240 r e i g h t , A u g u s t 1 0063260 6 , 1 9 8 3 2 : 4 2 P M 0063300 \r - - w r i t t e n b y E 0063320 . M c C r e i g h t , A p r 0063340 i l 1 4 , 1 9 8 2 1 0 : 0063360 2 5 A M \r \r D I R E C T O R Y 0063400 \r C h i p N e t D e f s , \r 0063420 C h i p W i r e , \r L e 0063440 f t F e a t u r e P Q , \r R 0063460 i g h t F e a t u r e P Q , \r 0063500 p p d e f s ; \r \r C h i p D R 0063520 C : D E F I N I T I O N S = 0063540 \r B E G I N O P E N p p 0063560 d e f s , 376 001 \0 373 276 C h i p N 0063600 e t D e f s ; \r \r d o i n g 0063620 D R C : B O O L E A N ; \r \r 0063640 S e t u p D R C : P R O C E 0063660 D U R E [ c h e c k : B O O L 0063700 E A N ] ; \r \r F i n i s h D 0063720 R C : P R O C E D U R E [ r o 0063740 o t : C e l l C a l l P t r ] 0063760 ; \r \r L e f t E d g e s : 0064000 P R O C E D U R E [ p q : L e 0064020 f t F e a t u r e P Q . L e f t 0064040 F e a t u r e P Q H a n d l e ] 0064060 ; \r \r R i g h t E d g e s : 0064100 P R O C E D U R E [ \r 0064120 p q : R i g h t F e a t u r e 0064140 P Q . R i g h t F e a t u r e P 0064160 Q H a n d l e ] ; \r 376 001 \0 p S \r 0064200 P u r g e D R C V i o l a t 0064220 i o n s : P R O C E D U R E [ 0064240 n : n e t P t r ] ; \r \r 0064260 N o t e V i o l a t i o n : P 0064300 R O C E D U R E [ v : V i o l 0064320 a t i o n ] ; \r \r E n u m e 0064340 r a t e V i o l a t i o n s : 0064360 P R O C E D U R E [ ] ; \r \r 0064400 C h e c k T e r m i n a l C o n 0064420 n e c t i o n s : P R O C E D 0064440 U R E [ c a l l : C e l l C a 0064460 l l P t r ] ; \r \r p o l y G 0064500 a t e O v e r l a p , m i n T 0064520 r a n s i s t o r D i f f u s i 0064540 o n W i d t h , \r d e p 0064560 l e t i o n O v e r l a p : 376 0064600 001 \0 > l o c N u m ; \r \r h 0064620 o l d V i o l a t i o n s : P 0064640 R I V A T E B O O L E A N ; \r 0064660 d r c S w a t h : P R I V 0064700 A T E C h i p W i r e . S l i 0064720 c e P t r ; - - f e a t u r 0064740 e D e l a y w i d e \r d r 0064760 c S w a t h F e a t u r e s : 0065000 P R I V A T E \r R i g h 0065020 t F e a t u r e P Q . R i g h t 0065040 F e a t u r e P Q H a n d l e ; 0065060 \r - - t h e f e a t 0065100 u r e s i n t h e s l i c 0065120 e b u t a b a n d o n e d 0065140 b y E x t r a c t N e t s \r 0065160 d r c S w a t h W i d t h : 0065200 P R I V 376 \0 220 Y 8 A T E C o o 0065220 r d ; \r \r m i n S i z e , 0065240 c l o s e s t U n c o n n e c t 0065260 e d : \r P R I V A T E 0065300 A R R A Y E x t r a c t L e v 0065320 e l O F C o o r d ; \r \r 0065340 S e t D R C P a r a m s : P R 0065360 I V A T E P R O C E D U R E [ 0065400 ] ; \r \r E N D . - - o f 0065420 C h i p D R C \r 377 \0 \0 c e l l 0065440 i n s t p q i m p l . m e s a \0 0065460 373 230 217 020 326 \0 \0 376 001 \0 Z 310 - - C 0065500 e l l I n s t P Q I m p l . m e 0065520 s a \r \r - - A g e n e r i c 0065540 p a c k a g e t o o r g a 0065560 n i z e i t e m s \r - - i n 0065600 a p r i o r i t y q u e u 0065620 e , s o r t e d b y i n c 0065640 r e a s i n g o r d e r o f 0065660 \r - - V a l . \r \r - - w r i 0065700 t t e n b y E . M c C r e 0065720 i g h t , F e b r u a r y 8 0065740 , 1 9 8 2 2 : 0 4 P M \r 0065760 - - l a s t m o d i f i e d 0066000 b y E . M c C r e i g h t 0066020 , F e b r u a r y 8 , 1 9 0066040 8 2 2 : 2 0 P M \r - - c 0066060 u s t o m i z e d b y 376 001 \0 273 0066100 9 E . M c C r e i g h t , 0066120 F e b r u a r y 8 , 1 9 8 2 0066140 3 : 4 6 P M \r \r D I R E C 0066160 T O R Y \r C e l l I n s t P 0066200 Q ; \r \r C e l l I n s t P Q I m 0066220 p l : P R O G R A M \r I M 0066240 P O R T S C e l l I n s t P Q 0066260 \r E X P O R T S C e l l I 0066300 n s t P Q S H A R E S C e l 0066320 l I n s t P Q = \r B E G I 0066340 N O P E N C e l l I n s t P 0066360 Q ; \r \r C e l l I n s t P Q 0066400 U n d e r f l o w : P U B L I 0066420 C S I G N A L = C O D E ; 0066440 \r \r \r N e w C e l l I n s t 0066460 P Q : P U B L I C P R O C E 0066500 D 376 001 \0 313 274 U R E [ z o n e : 0066520 U N C O U N T E D Z O N E , \r 0066540 m a x : C A R D I N A 0066560 L _ 5 0 ] \r R E T U 0066600 R N S [ P Q H a n d l e ] = \r 0066620 { R E T U R N [ z o n e 0066640 . N E W [ P Q O b j e c t _ 0066660 [ z o n e : z o n e , s i z 0066700 e : 0 , \r s : z 0066720 o n e . N E W [ P Q S e q [ m a 0066740 x ] ] ] ] ] } ; \r \r \r D e s 0066760 t r o y C e l l I n s t P Q : 0067000 P U B L I C P R O C E D U R E 0067020 [ p : P Q H a n d l e ] \r 0067040 R E T U R N S [ P Q H a n d 0067060 l e ] = \r B E G I N \r 0067100 z o 376 001 \0 i Y n e : U 0067120 N C O U N T E D Z O N E _ 0067140 p . z o n e ; \r z o n e 0067160 . F R E E [ @ p . s ] ; \r 0067200 z o n e . F R E E [ @ p ] ; \r 0067220 R E T U R N [ N I L ] ; 0067240 \r E N D ; - - o f 0067260 D e s t r o y C e l l I n s t P 0067300 Q \r \r \r I n s e r t C e l l 0067320 I n s t P Q : P U B L I C P 0067340 R O C E D U R E [ p : P Q H a 0067360 n d l e , i t e m : I t e m 0067400 ] = \r B E G I N \r 0067420 i , j : C A R D I N A L 0067440 ; \r p q s : P Q S e q 0067460 P t r _ G r o w i n g P Q [ 0067500 p ] ; \r p . s 376 001 \0 , 262 0067520 i z e _ p . s i z e + 1 ; \r 0067540 F O R j _ p . s i 0067560 z e - 1 , i W H I L E j > 0067600 0 D O \r i _ ( 0067620 j - 1 ) / 2 ; \r I F 0067640 V a l [ i t e m ] > = V a l [ 0067660 p q s . h e a p [ i ] ] T H E 0067700 N E X I T \r E L S 0067720 E p q s . h e a p [ j ] _ 0067740 p q s . h e a p [ i ] ; \r 0067760 E N D L O O P ; \r 0070000 p q s . h e a p [ j ] _ i t 0070020 e m ; \r E N D ; \r \r 0070040 E x t r a c t C e l l I n s t P 0070060 Q : P U B L I C P R O C E D 0070100 U R E [ p : P Q H a n d l e ] 0070120 376 001 \0 214 300 \r R E T U R N 0070140 S [ i t e m : I t e m ] = \r 0070160 B E G I N \r p q 0070200 s : P Q S e q P t r _ S h 0070220 r i n k i n g P Q [ p ] ; \r 0070240 r e s u l t : I t e m _ 0070260 p q s . h e a p [ 0 ] ; \r 0070300 I F ( p . s i z e _ p 0070320 . s i z e - 1 ) > 0 T H E N \r 0070340 B E G I N \r 0070360 i , j : C A R D I N A L 0070400 ; \r r : C A R D I 0070420 N A L _ p . s i z e - 1 ; 0070440 - - m a x i n d e x \r 0070460 i t e m : I t e m _ 0070500 p q s . h e a p [ p . s i z e ] 0070520 ; \r 376 001 \0 026 \f F O R 0070540 i _ 0 , j D O \r 0070560 j _ i + i + 1 ; 0070600 \r I F j > r 0070620 T H E N E X I T ; \r 0070640 I F j < r A N D V a 0070660 l [ p q s . h e a p [ j + 1 ] ] 0070700 < V a l [ p q s . h e a p [ j ] 0070720 ] T H E N j _ j + 1 ; \r 0070740 I F V a l [ i 0070760 t e m ] < = V a l [ p q s . h e 0071000 a p [ j ] ] T H E N E X I T 0071020 \r E L S E p q 0071040 s . h e a p [ i ] _ p q s . 0071060 h e a p [ j ] ; \r 0071100 E N D L O O P ; \r 0071120 p q s . h e a p [ i 376 001 \0 336 \r ] 0071140 _ i t e m ; \r E 0071160 N D ; \r R E T U R N [ r 0071200 e s u l t ] ; \r E N D ; 0071220 \r \r \r G r o w i n g P Q : 0071240 P R O C E D U R E [ p : P Q H 0071260 a n d l e ] R E T U R N S [ P 0071300 Q S e q P t r ] = \r B 0071320 E G I N \r I F p . s i 0071340 z e > = p . s . m a x T H E N 0071360 \r B E G I N \r 0071400 o l d S e q : P Q S e q 0071420 P t r _ p . s ; \r 0071440 n e w S e q : P Q S e q P t 0071460 r _ \r p . z o 0071500 n e . N E W [ P Q S e q [ M A X 0071520 [ ( 1 5 * p . s i z e ) / 1 0 376 0071540 001 \0 332 252 , 5 0 ] ] ] ; \r 0071560 F O R i : C A R D I N 0071600 A L I N [ 0 . . p . s i z e 0071620 ) D O \r n e w 0071640 S e q [ i ] _ o l d S e q [ 0071660 i ] ; \r E N D L 0071700 O O P ; \r p . s _ 0071720 n e w S e q ; \r p 0071740 . z o n e . F R E E [ @ o l d S 0071760 e q ] ; \r E N D ; \r 0072000 R E T U R N [ p . s ] ; 0072020 \r E N D ; \r \r \r S h 0072040 r i n k i n g P Q : P R O C E 0072060 D U R E [ p : P Q H a n d l e 0072100 ] R E T U R N S [ P Q S e q P 0072120 t r ] = \r B E G I N \r 0072140 376 001 \0 220 ! W H I L E p 0072160 . s i z e < 1 D O S I G N A 0072200 L C e l l I n s t P Q U n d e 0072220 r f l o w E N D L O O P ; \r 0072240 I F M A X [ p . s i z e 0072260 , 5 0 ] < p . s . m a x / 2 0072300 T H E N \r B E G I N 0072320 \r o l d S e q : P 0072340 Q S e q P t r _ p . s ; \r 0072360 n e w S e q : P Q S 0072400 e q P t r _ \r 0072420 p . z o n e . N E W [ P Q S e q 0072440 [ M A X [ ( 1 5 * p . s i z e ) 0072460 / 1 0 , 5 0 ] ] ] ; \r 0072500 F O R i : C A R D I N A 0072520 L I N [ 0 . . p . s i z e ) 0072540 D O \r 376 \0 235 L 202 0072560 n e w S e q [ i ] _ o l d 0072600 S e q [ i ] ; \r 0072620 E N D L O O P ; \r p 0072640 . s _ n e w S e q ; \r 0072660 p . z o n e . F R E E [ @ 0072700 o l d S e q ] ; \r E 0072720 N D ; \r R E T U R N [ p 0072740 . s ] ; \r E N D ; \r \r 0072760 E N D . - - o f C e l l 0073000 I n s t P Q I m p l \r 377 \0 \0 c h 0073020 i p a p p e n d n a m e s . m e 0073040 s a \0 373 233 214 275 S \0 \0 376 001 \0 262 241 - 0073060 - C h i p A p p e n d N a m e 0073100 s . m e s a \r \r - - S u b r o 0073120 u t i n e s t o a p p e n d 0073140 t h e n a m e s o f v a 0073160 r i o u s t h i n g s t o \r 0073200 - - s t r i n g s . \r \r - - 0073220 l a s t m o d i f i e d b y 0073240 E . M c C r e i g h t , S 0073260 e p t e m b e r 1 2 , 1 9 8 0073300 3 1 1 : 2 6 A M \r - - w 0073320 r i t t e n b y E . M c C 0073340 r e i g h t , N o v e m b e r 0073360 3 , 1 9 8 1 3 : 0 6 P 0073400 M \r \r D I R E C T O R Y \r C 0073420 h i p N e t D e f s , \r C h 0073440 i p U s e r I n t , \r I n 376 0073460 001 \0 G 362 l i n e D e f s , \r 0073500 p p d e f s , \r S t r i n g 0073520 D e f s ; \r \r C h i p A p p e n 0073540 d N a m e s : P R O G R A M \r 0073560 I M P O R T S C h i p N e 0073600 t D e f s , C h i p U s e r I 0073620 n t , I n l i n e D e f s , \r 0073640 p p d e f s , S t r i 0073660 n g D e f s \r E X P O R T S 0073700 C h i p N e t D e f s = \r 0073720 B E G I N O P E N p p d e 0073740 f s , C h i p N e t D e f s ; 0073760 \r \r \r A p p e n d N e t : 0074000 P U B L I C P R O C E D U R E 0074020 [ s : S T R I N G , n e t : 0074040 n e t P t r ] \r R E T 0074060 U R N S 376 001 \0 253 Y [ c n : C a 0074100 n o n N e t P t r ] = \r 0074120 B E G I N O P E N S t r i 0074140 n g D e f s ; \r c n _ 0074160 C a n o n N e t [ n e t ] ; \r 0074200 W I T H d i d : ( c 0074220 n _ C a n o n N e t [ n e t 0074240 ] ) . i d S E L E C T F R O 0074260 M \r n o r m a l = 0074300 > A p p e n d N e t I d [ s , 0074320 @ d i d ] ; \r E N 0074340 D C A S E = > C h i p U s e 0074360 r I n t . E x p l a i n [ " E x 0074400 t r a c t o r b u g - b o 0074420 g u s n e t " ] ; \r E 0074440 N D ; \r \r \r n e x t N u m e 0074460 r i c N e t : l 376 001 \0 003 035 o c 0074500 N u m _ 1 ; \r \r A p p e 0074520 n d N e t I d : P U B L I C 0074540 P R O C E D U R E [ s : S T R 0074560 I N G , \r n e t I d : 0074600 N o r m a l N e t I d P t r ] 0074620 = \r B E G I N O P E N 0074640 S t r i n g D e f s ; \r 0074660 I F n e t I d . n a m e C l 0074700 a s s = a n o n y m o u s T H 0074720 E N \r B E G I N \r 0074740 n e t I d . n a m e 0074760 _ n u m e r i c [ n : n e x 0075000 t N u m e r i c N e t ] ; \r 0075020 n e x t N u m e r i c N 0075040 e t _ n e x t N u m e r i c 0075060 N e t + 1 ; \r E 376 001 0075100 \0 303 N D ; \r \r W I T H 0075120 d n : n e t I d S E L E C 0075140 T F R O M \r n u m 0075160 e r i c = > { A p p e n d C 0075200 h a r [ s , ' N ] ; A p p e 0075220 n d C a r d [ s , d n . n ] } 0075240 ; \r q u a l i f i e 0075260 d = > A p p e n d T e r m i 0075300 n a l N a m e [ s , [ d n . s 0075320 o u r c e , d n . s e e ] ] ; 0075340 \r n a m e d = > 0075360 A p p e n d A t o m [ s , d n 0075400 . n a m e ] ; \r E N 0075420 D C A S E = > E R R O R ; \r 0075440 E N D ; - - o f A 0075460 p p e n d N e t I d \r \r \r A 0075500 p p e 376 001 \0 G 337 n d T e r m i n 0075520 a l N a m e : P U B L I C P 0075540 R O C E D U R E [ s : S T R I 0075560 N G , \r c : I t e m R 0075600 e f ] = \r B E G I N 0075620 O P E N S t r i n g D e f s ; 0075640 \r o l d L e n : C A R 0075660 D I N A L _ s . l e n g t h 0075700 ; \r A p p e n d C a l l 0075720 e r C h a i n [ s , c . h e a 0075740 d ] ; \r I F s . l e n 0075760 g t h > o l d L e n T H E N 0076000 A p p e n d C h a r [ s , ' . 0076020 ] ; \r A p p e n d L o n 0076040 g S t r i n g [ s , A t o m T 0076060 o S t r i n g [ F i n d P r o p 0076100 V a l u e [ I t 376 001 \0 001 ~ e m R 0076120 e f T o L p [ c ] , s i g n a 0076140 l N a m e ] ] ] ; \r E N 0076160 D ; - - o f A p p e n d T 0076200 e r m i n a l N a m e \r \r \r 0076220 A p p e n d C a l l e r C h a i 0076240 n : P U B L I C P R O C E D 0076260 U R E [ s : S T R I N G , \r 0076300 c : I n s t a n c e P t 0076320 r ] = \r B E G I N O 0076340 P E N S t r i n g D e f s ; \r 0076360 I F c . c a l l e r . 0076400 h e a d # N I L T H E N \r 0076420 B E G I N \r 0076440 o l d L e n : C A R D I N A L 0076460 _ s . l e n g t h ; \r 0076500 A p p e n d C a l l 376 001 \0 0076520 255 366 e r C h a i n [ s , c . c 0076540 a l l e r . h e a d ] ; \r 0076560 I F s . l e n g t h > o 0076600 l d L e n T H E N A p p e n 0076620 d C h a r [ s , ' . ] ; \r 0076640 A p p e n d C a l l e r 0076660 L i n k [ s , c ] ; \r 0076700 E N D ; \r E N D ; 0076720 - - o f A p p e n d C a l l 0076740 e r C h a i n \r \r \r A p p e 0076760 n d C a l l e r L i n k : P U 0077000 B L I C P R O C E D U R E [ s 0077020 : S T R I N G , \r c : 0077040 I n s t a n c e P t r ] = \r 0077060 B E G I N O P E N S 0077100 t r i n g D e f s ; \r v 0077120 : 376 001 \0 E 231 A t o m _ F i 0077140 n d P r o p V a l u e [ I t e m 0077160 R e f T o L p [ c . c a l l e r 0077200 ] , i n s t a n c e N a m e ] 0077220 ; \r l p : l i s t P t 0077240 r _ I t e m R e f T o L p [ 0077260 c . c a l l e r ] ; \r i 0077300 : C A R D I N A L _ 1 ; \r 0077320 I F v # N I L T H E 0077340 N A p p e n d L o n g S t r i 0077360 n g [ s , A t o m T o S t r i 0077400 n g [ v ] ] \r - 0077420 - a s s u m e s i n s t a n 0077440 c e s a r e n a m e d u n 0077460 i q u e l y \r E L S E 0077500 - - a n o n y m o u s i n s 0077520 t a n c e \r 376 001 \0 3 362 0077540 B E G I N \r W I T 0077560 H d o b : l p . o b S E L 0077600 E C T F R O M \r 0077620 c e l l = > \r 0077640 B E G I N \r 0077660 s a m e C e l l C n t : 0077700 C A R D I N A L _ 0 ; \r 0077720 I F c . p r o 0077740 t o . n a m e # N I L T H E N 0077760 \r A p p 0100000 e n d S t r i n g [ s , c . p 0100020 r o t o . n a m e ] \r 0100040 E L S E \r 0100060 B E G I N \r 0100100 c e l l N o : 0100120 C A R D I N A L _ 1 376 001 \0 027 0100140 032 ; \r A 0100160 p p e n d S t r i n g [ s , " 0100200 A n o n C e l l " ] ; \r 0100220 F O R o b : 0100240 L O N G P O I N T E R T O 0100260 c e l l o b j e c t _ \r 0100300 G e t C 0100320 e l l S u p e r [ ] , o b . s 0100340 u p e r \r 0100360 W H I L E o b # l p . o 0100400 b A N D o b # N I L D O \r 0100420 c e 0100440 l l N o _ c e l l N o + 1 ; 0100460 \r E 0100500 N D L O O P ; \r 0100520 A p p e n d C a r d [ s 0100540 , 376 001 \0 265 032 c e l l N o ] ; \r 0100560 E N D ; 0100600 \r F O R l 0100620 p p : l i s t P t r _ c . 0100640 c a l l e r . h e a d . p r o t 0100660 o . l p , l p p . n x t \r 0100700 W H I L E 0100720 l p p # N I L D O \r 0100740 I F l p p . o b 0100760 = l p . o b T H E N \r 0101000 B E G I N \r 0101020 s a 0101040 m e C e l l C n t _ s a m e 0101060 C e l l C n t + 1 ; \r 0101100 I F ( l p p 0101120 . l x < l p . l x O R ( l p 0101140 p . l x = l 376 001 \0 205 211 p . l x 0101160 A N D l p p . l y < l p . l y 0101200 ) ) \r 0101220 T H E N i _ i + 1 ; 0101240 \r E 0101260 N D ; \r 0101300 E N D L O O P ; \r 0101320 I F s a m e C e l l C n 0101340 t > 1 T H E N \r 0101360 { A p p e n d C h a r 0101400 [ s , ' # ] ; A p p e n d C 0101420 a r d [ s , i ] } ; \r 0101440 E N D ; \r 0101460 x s t r = > \r 0101500 B E G I N \r 0101520 A p p e n d S t r i n 0101540 g [ s , " Q " ] ; \r 376 001 \0 x \t 0101560 F O R l p 0101600 p : l i s t P t r _ c . c 0101620 a l l e r . h e a d . p r o t o 0101640 . l p , l p p . n x t \r 0101660 W H I L E l 0101700 p p # N I L D O \r 0101720 I F l p p . o b . 0101740 o t y p = x s t r A N D \r 0101760 ( l p p 0102000 . l x < l p . l x O R ( l p 0102020 p . l x = l p . l x A N D l 0102040 p p . l y < l p . l y ) ) \r 0102060 T H E N 0102100 i _ i + 1 ; \r 0102120 E N D L O O P ; \r 0102140 A p p e n d C 0102160 376 001 \0 264 201 a r d [ s , i ] ; \r 0102200 E N D ; \r 0102220 c o n t = > \r 0102240 B E G I N \r 0102260 A p p e n d S 0102300 t r i n g [ s , " J " ] ; \r 0102320 F O R l p p 0102340 : l i s t P t r _ c . c a 0102360 l l e r . h e a d . p r o t o . 0102400 l p , l p p . n x t \r 0102420 W H I L E l p 0102440 p # N I L D O \r 0102460 I F l p p . o b . o 0102500 t y p = c o n t A N D \r 0102520 ( l p p . 0102540 l x < l p . l x O R ( l p p 0102560 . l x = l 376 001 \0 177 216 p . l x A 0102600 N D l p p . l y < l p . l y ) 0102620 ) \r 0102640 T H E N i _ i + 1 ; \r 0102660 E N D L O O 0102700 P ; \r A p p 0102720 e n d C a r d [ s , i ] ; \r 0102740 E N D ; \r 0102760 b u s = > \r 0103000 B E G I N \r 0103020 A p p e n d S t r 0103040 i n g [ s , " B u s " ] ; \r 0103060 F O R l p p 0103100 : l i s t P t r _ c . c a 0103120 l l e r . h e a d . p r o t o . 0103140 l p , l p p . n x t \r 0103160 W H 376 001 \0 021 271 I 0103200 L E l p p # N I L D O \r 0103220 I F l p p 0103240 . o b . o t y p = b u s A N D 0103260 \r ( 0103300 l p p . l x < l p . l x O R 0103320 ( l p p . l x = l p . l x A N 0103340 D l p p . l y < l p . l y ) ) 0103360 \r T 0103400 H E N i _ i + 1 ; \r 0103420 E N D L O O P 0103440 ; \r A p p e 0103460 n d C a r d [ s , i ] ; \r 0103500 E N D ; \r 0103520 E N D C A S E = > 0103540 N U L L ; \r E N D ; 0103560 \r E N D ; - - o f 376 0103600 001 \0 220 u A p p e n d C a l l e 0103620 r L i n k \r \r \r A p p e n d 0103640 L o c N u m : P U B L I C P 0103660 R O C E D U R E [ s : S T R I 0103700 N G , n : l o c N u m ] = 0103720 \r B E G I N O P E N 0103740 S t r i n g D e f s ; \r 0103760 A p p e n d C h a r [ s , ' 0104000 ] ; \r I F n < 0 T H 0104020 E N { A p p e n d C h a r [ s 0104040 , ' - ] ; n _ - n } ; \r 0104060 A p p e n d C a r d [ s 0104100 , n / L a m b d a ] ; \r 0104120 E N D ; \r \r A p p e n d C 0104140 o o r d : P U B L I C P R O 0104160 C E D U R E [ s : S T R I N G 0104200 , n : 376 001 \0 246 243 C o o r d ] 0104220 = \r B E G I N O P E 0104240 N S t r i n g D e f s ; \r 0104260 A p p e n d C h a r [ s , 0104300 ' ] ; \r I F n < 0 0104320 T H E N { A p p e n d C h a r 0104340 [ s , ' - ] ; n _ - n } 0104360 ; \r A p p e n d C a r d 0104400 [ s , n ] ; \r E N D ; 0104420 \r \r A p p e n d C a r d : 0104440 P U B L I C P R O C E D U R E 0104460 [ s : S T R I N G , \r 0104500 n : L O N G C A R D I N A L 0104520 ] = \r B E G I N O P 0104540 E N S t r i n g D e f s ; \r 0104560 I F n > 9 T H E N { 0104600 A p p e n d C a r 376 001 \0 303 233 d [ 0104620 s , n / 1 0 ] ; n _ n 0104640 M O D 1 0 } ; \r A p p 0104660 e n d C h a r [ s , ' 0 + I n 0104700 l i n e D e f s . L o w H a l f 0104720 [ n ] ] ; \r E N D ; \r \r 0104740 A p p e n d L o n g S t r i 0104760 n g : P U B L I C P R O C 0105000 [ t o , f r o m : L O N G 0105020 S T R I N G ] = \r B E 0105040 G I N \r F O R i : C 0105060 A R D I N A L I N [ 0 . . f 0105100 r o m . l e n g t h ) D O \r 0105120 t o [ t o . l e n g t 0105140 h + i ] _ f r o m [ i ] ; \r 0105160 E N D L O O P ; \r 0105200 t o . l e n g t h _ 376 001 0105220 \0 2 361 t o . l e n g t h + f r 0105240 o m . l e n g t h ; \r E 0105260 N D ; \r \r A p p e n d A t o 0105300 m : P U B L I C P R O C [ 0105320 s : L O N G S T R I N G , 0105340 a t o m : A t o m ] = \r 0105360 { A p p e n d L o n g S t r 0105400 i n g [ t o : s , f r o m : 0105420 L O O P H O L E [ a t o m , 0105440 L O N G S T R I N G ] ] } ; \r 0105460 \r F i n d P r o p V a l u e 0105500 : P U B L I C P R O C [ l 0105520 p : l i s t P t r , a t t r 0105540 i b u t e : A t o m ] R E T 0105560 U R N S [ v a l u e : A t o 0105600 m ] = \r B E G I N \r 0105620 376 001 \0 337 210 I F l p # N I 0105640 L T H E N \r F O R 0105660 p : p r o p P t r _ l p 0105700 . p r o p s , p . n e x t W 0105720 H I L E p # N I L D O \r 0105740 I F p . a t t r i 0105760 b u t e = a t t r i b u t e T 0106000 H E N R E T U R N [ p . v a l 0106020 u e ] ; \r E N D 0106040 L O O P ; \r R E T U R N 0106060 [ N I L ] ; \r E N D ; \r 0106100 \r s i g n a l N a m e : P 0106120 U B L I C A t o m = M a k 0106140 e A t o m [ " S i g n a l n a 0106160 m e " ] ; \r i n s t a n c e 0106200 N a m e : P U B L I C A t o 0106220 m = M a k e 376 \0 5 ? z A t o 0106240 m [ " I n s t a n c e n a m e 0106260 " ] ; \r \r E N D . - - o 0106300 f C h i p A p p e n d N a m e 0106320 s \r 377 \0 \0 c h i p d r c i m p l 0106340 . m e s a \0 373 234 E 275 201 \0 \0 376 001 \0 0106360 ( m - - C h i p D R C I m p l 0106400 . m e s a \r \r - - l a s t m 0106420 o d i f i e d b y E . M c 0106440 C r e i g h t , J a n u a r y 0106460 3 0 , 1 9 8 4 6 : 1 6 0106500 P M \r - - w r i t t e n b y 0106520 E . M c C r e i g h t , A 0106540 p r i l 1 4 , 1 9 8 2 1 0106560 0 : 2 5 A M \r \r D I R E C T O 0106600 R Y \r C h i p D R C , \r 0106620 C h i p F e a t u r e , \r C 0106640 h i p N e t D e f s , \r C h 0106660 i p W i r e , \r L e f t F e 0106700 a t u r e P Q , \r F e a t u 0106720 r e P S T , \r p p d e f s , 0106740 \r R i g h t F e a t u r e P 0106760 Q , 376 001 \0 266 035 \r S t r e a m 0107000 D e f s ; \r \r C h i p D R C I m 0107020 p l : P R O G R A M \r I M 0107040 P O R T S C h i p D R C , C 0107060 h i p F e a t u r e , C h i p 0107100 N e t D e f s , \r C h i 0107120 p W i r e , L e f t F e a t u 0107140 r e P Q , F e a t u r e P S T 0107160 , R i g h t F e a t u r e P Q 0107200 \r E X P O R T S C h i p D 0107220 R C S H A R E S C h i p D R 0107240 C = \r B E G I N O P E N 0107260 p p d e f s , C h i p N e t 0107300 D e f s , \r F e a t u r 0107320 e P S T , L e f t F e a t u r 0107340 e P Q , R i g h t F e a t u r 0107360 e P Q , \r 376 001 \0 274 \b C h 0107400 i p W i r e , C h i p D R C ; 0107420 \r \r d r c S w a t h W i d t 0107440 h : P U B L I C C o o r d ; 0107460 \r \r d o i n g D R C : P U 0107500 B L I C B O O L E A N _ F 0107520 A L S E ; \r \r p o l y G a t 0107540 e O v e r l a p , m i n T r a 0107560 n s i s t o r D i f f u s i o n 0107600 W i d t h , \r d e p l e 0107620 t i o n O v e r l a p : P U B 0107640 L I C l o c N u m ; \r \r m 0107660 i n S i z e , c l o s e s t U 0107700 n c o n n e c t e d : \r 0107720 P U B L I C A R R A Y E x t 0107740 r a c t L e v e l O F C o o 0107760 r d ; \r \r d r c S w 376 001 \0 355 0110000 Q a t h : P U B L I C C h i 0110020 p W i r e . S l i c e P t r ; 0110040 - - d r c S w a t h W i d t h 0110060 w i d e \r d r c S w a t h 0110100 F e a t u r e s : P U B L I C 0110120 R i g h t F e a t u r e P Q H 0110140 a n d l e ; \r - - t h 0110160 e f e a t u r e s i n t h 0110200 e s l i c e b u t a b a n 0110220 d o n e d b y E x t r a c t 0110240 N e t s \r \r S e t u p D R C 0110260 : P U B L I C P R O C E D U 0110300 R E [ c h e c k : B O O L E A 0110320 N ] = \r B E G I N \r 0110340 I F ( d o i n g D R C 0110360 _ c h e c k ) T H E N \r 0110400 376 001 \0 337 A B E G I N \r 0110420 S e t D R C P a r a m 0110440 s [ ] ; \r h o l d V 0110460 i o l a t i o n s _ N O T 0110500 H e S e t s P a r a m s A n d S 0110520 a y s Y e s [ \r 0110540 " S h o u l d I t e l l y 0110560 o u a b o u t e r r o r s 0110600 a s I f i n d t h e m ? " 0110620 ] ; \r d r c S w a t 0110640 h _ C h i p W i r e . N e w 0110660 S l i c e [ ] ; \r d 0110700 r c S w a t h F e a t u r e s 0110720 _ N e w R i g h t F e a t u r 0110740 e P Q [ u z ] ; \r E 0110760 N D ; \r E N D ; - - 0111000 o f S e t 376 001 \0 a y u p D R C 0111020 \r \r \r F i n i s h D R C : 0111040 P U B L I C P R O C E D U R E 0111060 [ r o o t : C e l l C a l l P 0111100 t r ] = \r B E G I N \r 0111120 I F d o i n g D R C 0111140 T H E N \r B E G I N 0111160 \r P u r g e S w a t 0111200 h [ L A S T [ C o o r d ] ] ; \r 0111220 d r c S w a t h _ 0111240 C h i p W i r e . D e s t r o 0111260 y S l i c e [ d r c S w a t h ] 0111300 ; \r d r c S w a t h 0111320 F e a t u r e s _ D e s t r 0111340 o y R i g h t F e a t u r e P Q 0111360 [ d r c S w a t h F e a t u r e 0111400 s ] ; \r E 376 001 \0 373 Y 0111420 N D ; \r C h e c k T e r 0111440 m i n a l C o n n e c t i o n s 0111460 [ r o o t ] ; \r E n u m 0111500 e r a t e V i o l a t i o n s [ 0111520 ] ; \r E N D ; - - o 0111540 f F i n i s h D R C \r \r \r 0111560 L e f t E d g e s : P U B L I 0111600 C P R O C E D U R E [ p q : 0111620 L e f t F e a t u r e P Q H a n 0111640 d l e ] = \r B E G I N 0111660 \r \r E n t e r S w a t h 0111700 : P R O C E D U R E [ f : F 0111720 e a t u r e P t r ] = \r 0111740 B E G I N \r r 0111760 L e v : E x t r a c t L e v e 0112000 l ; \r I F I n v e 0112020 376 001 \0 360 307 r s e R e q u i r e d 0112040 L e v e l [ f . l e v ] = u n k 0112060 n o w n T H E N \r 0112100 I n s e r t F e a t u r e P 0112120 S T [ p : d r c S w a t h [ f 0112140 . l e v ] , i t e m : f ] ; 0112160 \r I F ( r L e v 0112200 _ R e q u i r e d L e v e l [ 0112220 f . l e v ] ) # u n k n o w n 0112240 T H E N \r N o t 0112260 e C o v e r [ l e v : r L e v 0112300 , c : f . c o v e r ] ; \r 0112320 E N D ; \r \r C 0112340 h e c k L e f t E d g e : P R 0112360 O C E D U R E [ f : F e a t u 0112400 r e P t r ] = \r B 0112420 E G I N \r 376 001 \0 241 325 0112440 l e v , r L e v , f L e v : 0112460 E x t r a c t L e v e l ; \r \r 0112500 F o r b i d d e n H 0112520 e r e : P R O C E D U R E [ i 0112540 t e m : F e a t u r e P t r ] 0112560 = \r B E G I N 0112600 \r p : P o i n 0112620 t ; \r I F N O 0112640 T H a v e S h a r e d A r e a 0112660 [ f . c o v e r , i t e m . c 0112700 o v e r ] T H E N R E T U R 0112720 N ; \r p _ R 0112740 e f C o o r d P t [ S h a r e d 0112760 A r e a [ f . c o v e r , i t 0113000 e m . c o v e r ] ] ; \r 0113020 I F f . n 376 001 \0 324 242 e 0113040 t = N I L O R i t e m . n e 0113060 t = N I L T H E N \r 0113100 N o t e V i o l a t i 0113120 o n [ [ p l a c e : p , i n 0113140 f o : c o v e r a g e F o r b 0113160 i d d e n [ l e v : l e v ] ] 0113200 ] \r E L S E - 0113220 - i t ' s a v i o l a t i 0113240 o n o n l y i f t h e y ' 0113260 r e n o t t h e s a m e \r 0113300 I F ( f . 0113320 n e t _ C a n o n N e t [ f 0113340 . n e t ] ) # \r 0113360 ( i t e m . n e t _ 0113400 C a n o n N e t [ i t e m . n e 0113420 t ] ) T H E N \r 376 0113440 001 \0 341 252 B E G I N \r 0113460 i d : 0113500 N o r m a l N e t I d P t r = 0113520 G e t N o r m a l N e t I d [ 0113540 @ f . n e t ] ; \r 0113560 i d . v i o l a t i o 0113600 n s _ u z . N E W [ V i o l 0113620 a t i o n L i s t _ [ \r 0113640 n e x t 0113660 : i d . v i o l a t i o n s , 0113700 \r v 0113720 : [ p l a c e : p , i n f 0113740 o : c o v e r a g e F o r b i 0113760 d d e n I f N e t s D i f f e r 0114000 [ l e v : l e v , \r 0114020 n 1 : R 0114040 e f C a 376 001 \0 m 214 n o n N e t [ 0114060 i t e m . n e t ] , n 2 : R 0114100 e f C a n o n N e t [ f . n e t 0114120 ] ] ] ] ] ; \r 0114140 E N D ; \r 0114160 E N D ; \r \r I F ( 0114200 r L e v _ I n v e r s e R e 0114220 q u i r e d L e v e l [ f . l e 0114240 v ] ) # u n k n o w n T H E N 0114260 \r E n s u r e C 0114300 o v e r a g e [ l e v : r L e 0114320 v , x N o w : f . c o v e r 0114340 . x 1 , \r r 0114360 : f . c o v e r , N o C o v 0114400 e r a g e : C o v e r a g e F 0114420 a i l e d ] ; \r \r l 0114440 e v _ f . l e 376 001 \0 ) x v ; 0114460 \r I F ( f L e v 0114500 _ F o r b i d d e n L e v e l 0114520 [ f . l e v ] ) # u n k n o w n 0114540 T H E N \r S e 0114560 a r c h F e a t u r e P S T [ p 0114600 : d r c S w a t h [ f L e v ] 0114620 , \r i n t : 0114640 [ f . c o v e r . y 1 , f . 0114660 c o v e r . y 2 ] , \r 0114700 t o u c h : F o r b 0114720 i d d e n H e r e ] \r 0114740 E L S E I F ( l e v _ 0114760 I n v e r s e F o r b i d d e n 0115000 L e v e l [ f . l e v ] ) # u n 0115020 k n o w n T H E N \r 0115040 S e a r c h F e a t u 376 001 0115060 \0 q L r e P S T [ p : d r c S 0115100 w a t h [ l e v ] , \r 0115120 i n t : [ f . c o v 0115140 e r . y 1 , f . c o v e r . y 0115160 2 ] , \r t o 0115200 u c h : F o r b i d d e n H e 0115220 r e ] ; \r \r I F c 0115240 l o s e s t U n c o n n e c t e 0115260 d [ f . l e v ] > 0 T H E N \r 0115300 N e i g h b o r 0115320 C h e c k [ f : f , i n L e 0115340 v e l : f . l e v , d i s t 0115360 : c l o s e s t U n c o n n e 0115400 c t e d [ f . l e v ] ] ; \r \r 0115420 S E L E C T f . l e 0115440 v F R O M \r b 0115460 u r 376 001 \0 V 222 = > \r 0115500 B E G I N \r 0115520 N e i g h b o r C h e 0115540 c k [ f : f , i n L e v e l 0115560 : n G a t e , d i s t : ( 0115600 3 * L a m b d a ) / 2 ] ; \r 0115620 N e i g h b o r 0115640 C h e c k [ f : f , i n L e 0115660 v e l : p G a t e , d i s t 0115700 : ( 3 * L a m b d a ) / 2 ] ; 0115720 \r E N D ; \r 0115740 n P l u s = > 0115760 N e i g h b o r C h e c k [ f 0116000 : f , i n L e v e l : p w 0116020 e l C o n t , d i s t : 3 * 0116040 L a m b d a ] ; \r 0116060 p P l u s = 376 001 \0 265 324 > N 0116100 e i g h b o r C h e c k [ f : 0116120 f , i n L e v e l : n w e l 0116140 C o n t , d i s t : 3 * L a 0116160 m b d a ] ; \r p 0116200 w e l C o n t = > N e i g h 0116220 b o r C h e c k [ f : f , i 0116240 n L e v e l : n P l u s , d 0116260 i s t : 3 * L a m b d a ] ; \r 0116300 n w e l C o n t 0116320 = > N e i g h b o r C h e c 0116340 k [ f : f , i n L e v e l : 0116360 p P l u s , d i s t : 3 * 0116400 L a m b d a ] ; \r 0116420 E N D C A S E = > N U L L 0116440 ; \r \r I F 0 < m i 0116460 n S i z e [ f . l e v ] 376 001 \0 0116500 276 233 T H E N \r L 0116520 e f t E d g e S i z e C h e c k 0116540 [ f : f , m i n S i z e : 0116560 m i n S i z e [ f . l e v ] ] ; 0116600 \r E N D ; - - o 0116620 f C h e c k L e f t E d g e \r 0116640 \r x 1 : C o o r d _ 0116660 L e f t F e a t u r e P Q M i 0116700 n [ p q ] . c o v e r . x 1 ; \r 0116720 P u r g e S w a t h [ x 0116740 1 - d r c S w a t h W i d t h ] 0116760 ; \r M a p E q u a l L e 0117000 f t F e a t u r e P Q [ p : p 0117020 q , p r o c : E n t e r S w 0117040 a t h ] ; \r M a p E q u 0117060 a l L e f t F e a t u r e P Q [ 0117100 p : 376 001 \0 K 025 p q , p r o c 0117120 : C h e c k L e f t E d g e ] 0117140 ; \r E N D ; - - o f 0117160 L e f t E d g e s \r \r \r R 0117200 i g h t E d g e s : P U B L I 0117220 C P R O C E D U R E [ p q : 0117240 R i g h t F e a t u r e P Q H a 0117260 n d l e ] = \r B E G I 0117300 N \r \r C h e c k R i g h 0117320 t E d g e : P R O C E D U R E 0117340 [ f : F e a t u r e P t r ] 0117360 = \r B E G I N \r 0117400 I F 0 < m i n S i z e 0117420 [ f . l e v ] T H E N \r 0117440 R i g h t E d g e S i 0117460 z e C h e c k [ f : f , m i 0117500 n S i z e : 376 001 \0 g 261 m i n S 0117520 i z e [ f . l e v ] ] ; \r \r 0117540 I F I n v e r s e R e 0117560 q u i r e d L e v e l [ f . l e 0117600 v ] = u n k n o w n T H E N \r 0117620 I n s e r t R i 0117640 g h t F e a t u r e P Q [ p : 0117660 d r c S w a t h F e a t u r e s 0117700 , i t e m : f ] \r 0117720 E L S E f _ C h i p F e 0117740 a t u r e . D e s t r o y F e a 0117760 t u r e [ f ] ; \r E 0120000 N D ; - - o f C h e c k R 0120020 i g h t E d g e \r \r x 2 0120040 : C o o r d _ R i g h t F 0120060 e a t u r e P Q M i n [ p q ] . 0120100 c o v e r . x 2 ; \r 376 001 \0 6 0120120 361 P u r g e S w a t h [ x 2 0120140 - d r c S w a t h W i d t h ] ; 0120160 \r M a p E q u a l R i g 0120200 h t F e a t u r e P Q [ p : p 0120220 q , p r o c : C h e c k R i 0120240 g h t E d g e ] ; \r E N 0120260 D ; - - o f R i g h t E d 0120300 g e s \r \r \r P u r g e S w a 0120320 t h : P R O C E D U R E [ x : 0120340 C o o r d ] = \r B E 0120360 G I N \r W H I L E R i 0120400 g h t F e a t u r e P Q S i z e 0120420 [ d r c S w a t h F e a t u r e 0120440 s ] > 0 A N D \r R 0120460 i g h t F e a t u r e P Q M i n 0120500 [ d r c S w a t h F e a t u r e 0120520 s 376 001 \0 237 345 ] . c o v e r . x 2 0120540 < x D O \r o l d F 0120560 : F e a t u r e P t r _ E 0120600 x t r a c t R i g h t F e a t u 0120620 r e P Q [ d r c S w a t h F e a 0120640 t u r e s ] ; \r D e 0120660 l e t e F e a t u r e P S T [ p 0120700 : d r c S w a t h [ o l d F . 0120720 l e v ] , i t e m : o l d F 0120740 ] ; \r S E L E C T 0120760 o l d F . l e v F R O M \r 0121000 n W e l l R e q u i 0121020 r e d , p W e l l R e q u i r 0121040 e d , n D e p l e t i o n R e 0121060 q u i r e d , \r 0121100 n B u r i e d C o n t a c t 0121120 R e q u i r 376 001 \0 204 235 e d , n 0121140 P l u s R e q u i r e d , p P 0121160 l u s R e q u i r e d , \r 0121200 n G a t e R e q u 0121220 i r e d , p G a t e R e q u i 0121240 r e d , p o l y R e q u i r e 0121260 d = > \r I 0121300 F o l d F . c o v e r . x 1 < 0121320 o l d F . c o v e r . x 2 A N 0121340 D \r o l 0121360 d F . c o v e r . y 1 < o l d F 0121400 . c o v e r . y 2 T H E N \r 0121420 N o t e V 0121440 i o l a t i o n [ [ p l a c e : 0121460 R e f C o o r d P t [ o l d F 0121500 . c o v e r ] , \r 0121520 i n f o 376 001 \0 221 253 0121540 : c o v e r a g e N e e d e d 0121560 [ l e v : I n v e r s e R e q 0121600 u i r e d L e v e l [ o l d F . 0121620 l e v ] ] ] ] ; \r 0121640 E N D C A S E = > N U L L 0121660 ; \r o l d F _ C 0121700 h i p F e a t u r e . D e s t r 0121720 o y F e a t u r e [ o l d F ] ; 0121740 \r E N D L O O P ; \r 0121760 E N D ; - - o f P 0122000 u r g e S w a t h \r \f \r 0122020 - - S i z e c h e c k i n g 0122040 e n s u r e s t h a t c o 0122060 n n e c t e d \r - - f 0122100 e a t u r e s o n t h e s 0122120 a m e l a y e r a r e d r 0122140 376 001 \0 ! t a w n \r - - 0122160 s o t h a t a s q u a r e 0122200 o f s i z e m i n S i z e 0122220 c a n b e m o v e d \r 0122240 - - a r o u n d e v e r 0122260 y i n t e r i o r b o u n d 0122300 a r y o f \r - - t h 0122320 e c o n n e c t e d r e g i 0122340 o n w i t h o u t g e t t i 0122360 n g s t u c k . \r \r - 0122400 - R a m s h a w a n d I 0122420 s p e n t a l u n c h b r 0122440 a i n s t o r m i n g , \r 0122460 - - a n d w e d e c i d 0122500 e d t h a t t h i s \r 0122520 - - i s e q u i v a l e n 0122540 t t o 376 001 \0 027 252 e v e r y 0122560 c o n n e c t e d r e g i o n 0122600 ' s \r - - c o n t a i 0122620 n i n g a s q u a r e o f 0122640 s i z e m i n S i z e o n 0122660 t h e i n t e r i o r o f 0122700 \r - - e v e r y c o 0122720 r n e r . \r \r - - C o 0122740 r n e r a r e d e s i g n a 0122760 t e d a s { n , s } { e , 0123000 w } { C , E } . \r - 0123020 - ( I n C h i p m o n k ' s 0123040 c o - o r d i n a t e s y s 0123060 t e m , y i n c r e a s e s 0123100 \r - - s o u t h w a r 0123120 d a n d x i n c r e a s e 0123140 s e a s t w a r d 376 001 \0 303 276 ) 0123160 . \r - - F o r e x a 0123200 m p l e , a n w C c o r n 0123220 e r i s a c o r n e r w 0123240 h o s e n o r t h w e s t \r 0123260 - - q u a d r a n t i 0123300 s c o v e r e d a n d a l 0123320 l o t h e r s a r e e m p 0123340 t y . A s e E c o r n e 0123360 r \r - - i s a c o 0123400 r n e r w h o s e s o u t h 0123420 e a s t q u a d r a n t i s 0123440 e m p t y a n d a l l o 0123460 t h e r s \r - - a r e 0123500 c o v e r e d . T h e r e 0123520 a r e e i g h t o f t h 0123540 e s e d e s i g n a t o r s 376 0123560 001 \0 310 005 , a n d \r - - 0123600 a c o r n e r i s c o m 0123620 p l e t e l y d e t e r m i n 0123640 e d b y a p o i n t a n 0123660 d a d e s i g n a t o r . \r 0123700 \r \r L e f t E d g e S i z e 0123720 C h e c k : P R O C E D U R E 0123740 [ f : F e a t u r e P t r , 0123760 m i n S i z e : C o o r d ] 0124000 = \r B E G I N \r \r 0124020 L e f t M i n S i z e V i o l 0124040 a t i o n : P R O C E D U R E 0124060 [ l e v : E x t r a c t L e v 0124100 e l , \r r : C o o 0124120 r d R e c t ] R E T U R N S [ 0124140 c o n t i n u e : B O O L E A 0124160 N ] = 376 001 \0 ` 202 \r 0124200 B E G I N \r M i n S 0124220 i z e V i o l a t i o n [ f : 0124240 f , r : r ] ; \r 0124260 c o n t i n u e _ T R U E ; 0124300 \r E N D ; \r \r 0124320 r : C o o r d R e c t = 0124340 f . c o v e r ; \r \r I F 0124360 r . x 1 = r . x 2 O R r . 0124400 y 1 = r . y 2 T H E N R E T 0124420 U R N ; \r - - r 0124440 i s a p o i n t o r a 0124460 l i n e . \r - - S 0124500 u c h f e a t u r e s c o r 0124520 r e s p o n d t o r e q u i 0124540 r e d a r e a s , w h o s e 0124560 a b s e n c e \r 376 001 \0 222 254 0124600 - - i s d e t e c t 0124620 e d i n o t h e r w a y s 0124640 . \r \r - - r i s k 0124660 n o w n t o b e a n o n 0124700 - e m p t y a r e a \r 0124720 I F r . y 2 < r . y 1 + m i n 0124740 S i z e \r A N D N 0124760 O T C o v e r e d [ p : [ r 0125000 . x 1 , r . y 1 - 1 ] , l e 0125020 v : f . l e v ] \r 0125040 T H E N - - [ r . x 1 , r 0125060 . y 1 ] i s a s e C c o 0125100 r n e r \r E n s u r 0125120 e C o v e r a g e [ l e v : f 0125140 . l e v , x N o w : r . x 1 0125160 + 1 , \r r : 376 001 0125200 \0 327 y [ x 1 : r . x 1 , \r 0125220 y 1 : r . y 0125240 1 , \r x 2 : 0125260 r . x 1 + 1 , \r 0125300 y 2 : r . y 1 + m i n S 0125320 i z e ] , \r 0125340 N o C o v e r a g e : L e f t 0125360 M i n S i z e V i o l a t i o n 0125400 ] ; \r E N D ; - - o 0125420 f L e f t E d g e S i z e C h 0125440 e c k \r \f \r R i g h t E d g 0125460 e S i z e C h e c k : P R O C 0125500 E D U R E [ f : F e a t u r e 0125520 P t r , m i n S i z e : C o 0125540 o r d ] = \r B E G I N 0125560 \r r i g h t C o v e r : 0125600 I n 376 001 \0 265 021 t e r v a l ; 0125620 - - [ m i n . . m a x ) \r 0125640 r : C o o r d R e c t = 0125660 f . c o v e r ; \r \r R 0125700 i g h t M i n S i z e V i o l a 0125720 t i o n : P R O C E D U R E [ 0125740 l e v : E x t r a c t L e v e 0125760 l , \r r : C o o r 0126000 d R e c t ] R E T U R N S [ c 0126020 o n t i n u e : B O O L E A N 0126040 ] = \r B E G I N \r 0126060 M i n S i z e V i o 0126100 l a t i o n [ f : f , r : 0126120 r ] ; \r c o n t i n 0126140 u e _ T R U E ; \r 0126160 E N D ; \r \r E x t e n 0126200 d R i g h t Y C 376 001 \0 260 340 o v e 0126220 r : P R O C E D U R E [ i t e 0126240 m : F e a t u r e P t r ] = 0126260 \r B E G I N - - 0126300 i t e m ' s c o m e i n i 0126320 n c r e a s i n g o r d e r 0126340 o f i t e m . c o v e r . y 1 0126360 \r I F r . x 2 < i 0126400 t e m . c o v e r . x 2 A N D 0126420 \r r i g h t C o 0126440 v e r . m a x < = r . y 2 T H 0126460 E N \r B E G I N 0126500 \r I F i t e m 0126520 . c o v e r . y 1 < = r i g h t 0126540 C o v e r . m a x T H E N \r 0126560 - - e x t e 0126600 n d p r e v i o u s r 376 001 \0 0126620 9 353 i g h t c o v e r \r 0126640 r i g h t C o v e 0126660 r . m a x _ \r 0126700 M A X [ r i g h t C o v 0126720 e r . m a x , i t e m . c o v 0126740 e r . y 2 ] \r E 0126760 L S E \r B E 0127000 G I N \r C h 0127020 e c k R i g h t C o v e r A n d 0127040 G a p [ i t e m . c o v e r . y 0127060 1 ] ; \r r i 0127100 g h t C o v e r _ [ m i n : 0127120 i t e m . c o v e r . y 1 , 0127140 m a x : i t e m . c o v e r . 0127160 y 2 ] ; \r E 0127200 N D ; \r E N D ; 0127220 \r 376 001 \0 230 352 E N D ; 0127240 - - o f E x t e n d R i g 0127260 h t Y C o v e r \r \r C h 0127300 e c k R i g h t C o v e r A n d 0127320 G a p : P R O C E D U R E [ n 0127340 e x t C o v e r : C o o r d ] 0127360 = \r B E G I N \r 0127400 - - W h e n t h i 0127420 s p r o c e d u r e i s c 0127440 a l l e d , \r - - 0127460 [ r i g h t C o v e r . m i n 0127500 . . r i g h t C o v e r . m a x 0127520 ) i s c o v e r e d , a n 0127540 d \r - - [ r i g 0127560 h t C o v e r . m a x . . n e x 0127600 t C o v e r ) i s a g a p 0127620 . \r \r 376 001 \0 ^ 371 - - 0127640 T h i s p r o c e d u r e 0127660 c h e c k s t h e f o l l o 0127700 w i n g p o s s i b i l i t i 0127720 e s : \r - - 1 ) 0127740 [ x : r . x 2 , y : r 0127760 . y 1 ] i s a s w C c o 0130000 r n e r \r - - 3 0130020 ) [ x : r . x 2 , y : 0130040 r i g h t C o v e r . m a x - 1 0130060 ] i s a s e E c o r n e 0130100 r \r - - 4 ) 0130120 [ x : r . x 2 , y : n e x 0130140 t C o v e r ] i s a n e E 0130160 c o r n e r \r - - 0130200 6 ) [ x : r . x 2 , 0130220 y : r . y 2 - 1 ] i 376 001 \0 314 0130240 f s a n w C c o r n e r \r 0130260 \r S E L E C T r i 0130300 g h t C o v e r . m a x F R O 0130320 M \r < r . y 1 0130340 = > \r - - 0130360 [ x : r . x 2 , y : r . 0130400 y 1 ] c o u l d b e a s 0130420 w C c o r n e r \r 0130440 I F ( r . y 2 < r . y 0130460 1 + m i n S i z e O R \r 0130500 r . x 2 < r . 0130520 x 1 + m i n S i z e ) \r 0130540 - - f i 0130560 s n o t l a r g e e n o u 0130600 g h b y i t s e l f \r 0130620 A N D r . y 0130640 1 376 001 \0 I & < n e x t C o v e r 0130660 - - n o c o v e r t o 0130700 t h e s o u t h e a s t \r 0130720 A N D N O 0130740 T C o v e r e d [ p : [ x : 0130760 r . x 2 - 1 , y : r . y 1 0131000 - 1 ] , \r 0131020 l e v : f . l e v ] - 0131040 - n o c o v e r t o t h 0131060 e n o r t h w e s t \r 0131100 T H E N \r 0131120 B E G I N \r 0131140 E n s u r 0131160 e C o v e r a g e [ l e v : f 0131200 . l e v , x N o w : r . x 2 0131220 + 1 , \r 0131240 r : [ 376 001 \0 355 270 x 1 : r 0131260 . x 2 - m i n S i z e , \r 0131300 y 1 : 0131320 r . y 1 , \r 0131340 x 2 : r . x 2 , 0131360 \r 0131400 y 2 : r . y 1 + m i n S i z 0131420 e ] , \r 0131440 N o C o v e r a g e : 0131460 R i g h t M i n S i z e V i o l 0131500 a t i o n ] ; \r 0131520 E N D ; \r < 0131540 r . y 2 = > \r 0131560 - - [ x : r . x 2 , y : 0131600 r i g h t C o v e r . m a x - 1 0131620 ] i s a s e E c o r n e 0131640 r \r E 376 001 \0 { 267 0131660 n s u r e C o v e r a g e [ l e 0131700 v : f . l e v , x N o w : 0131720 r . x 2 + 1 , \r 0131740 r : [ x 1 : r . x 2 - m 0131760 i n S i z e , \r 0132000 y 1 : r i g h t C o v 0132020 e r . m a x - m i n S i z e , \r 0132040 x 2 : 0132060 r . x 2 , \r 0132100 y 2 : r i g h t C o v e r 0132120 . m a x ] , \r 0132140 N o C o v e r a g e : R 0132160 i g h t M i n S i z e V i o l a 0132200 t i o n ] ; \r E N D 0132220 C A S E = > N U L L ; \r \r 0132240 S E L E C T n e x t C o 0132260 376 001 \0 \0 232 v e r F R O M \r 0132300 < = r . y 1 = > N U 0132320 L L ; \r < r . y 2 0132340 = > \r - - [ 0132360 x : r . x 2 , y : n e x t 0132400 C o v e r ] i s a n e E 0132420 c o r n e r \r E 0132440 n s u r e C o v e r a g e [ l e 0132460 v : f . l e v , x N o w : 0132500 r . x 2 + 1 , \r 0132520 r : [ x 1 : r . x 2 - m 0132540 i n S i z e , \r 0132560 y 1 : n e x t C o v e 0132600 r , \r x 0132620 2 : r . x 2 , \r 0132640 y 2 : n e x t C o v 0132660 e r + m i 376 001 \0 212 u n S i z e ] 0132700 , \r N o 0132720 C o v e r a g e : R i g h t M 0132740 i n S i z e V i o l a t i o n ] 0132760 ; \r E N D C A S E 0133000 = > \r - - [ x 0133020 : r . x 2 , y : r . y 2 - 0133040 1 ] c o u l d b e a n w 0133060 C c o r n e r \r 0133100 I F ( r . y 2 < r . y 1 + m 0133120 i n S i z e O R \r 0133140 r . x 2 < r . x 1 + m i 0133160 n S i z e ) \r 0133200 - - f i s n o t l a 0133220 r g e e n o u g h b y i t 0133240 s e l f \r A N 0133260 D r i g h t C o v 376 001 \0 202 @ e 0133300 r . m a x < r . y 2 - - n o 0133320 c o v e r t o t h e n o 0133340 r t h w e s t \r 0133360 A N D N O T C o v e r e d 0133400 [ p : [ x : r . x 2 - 1 , 0133420 y : r . y 2 ] , \r 0133440 l e v : f . 0133460 l e v ] - - n o c o v e r 0133500 t o t h e s o u t h w e s 0133520 t \r T H E N \r 0133540 E n s u r e C 0133560 o v e r a g e [ l e v : f . l 0133600 e v , x N o w : r . x 2 + 1 0133620 , \r r : 0133640 [ x 1 : r . x 2 - m i n S i z 0133660 e , \r 376 0133700 001 \0 375 201 y 1 : r . y 2 - m i 0133720 n S i z e , \r 0133740 x 2 : r . x 2 , \r 0133760 y 2 : r 0134000 . y 2 ] , \r 0134020 N o C o v e r a g e : R 0134040 i g h t M i n S i z e V i o l a 0134060 t i o n ] ; \r E N D 0134100 ; - - o f C h e c k R i g 0134120 h t C o v e r A n d G a p \r \r 0134140 I F r . x 1 = r . x 2 0134160 O R r . y 1 = r . y 2 T H E 0134200 N R E T U R N ; \r 0134220 - - r i s a p o i n t 0134240 o r a l i n e . \r 0134260 - - S u c h f e a t u r e 0134300 s c o 376 001 \0 234 225 r r e s p o n 0134320 d t o r e q u i r e d a r 0134340 e a s , w h o s e a b s e n 0134360 c e \r - - i s d 0134400 e t e c t e d i n o t h e r 0134420 w a y s . \r \r - - r 0134440 i s k n o w n t o b e 0134460 a n o n - e m p t y a r e a 0134500 \r r i g h t C o v e r 0134520 _ [ m i n : r . y 1 - 1 , 0134540 m a x : r . y 1 - 1 ] ; \r 0134560 S e a r c h F e a t u r e P 0134600 S T [ p : d r c S w a t h [ f 0134620 . l e v ] , \r i n t 0134640 : [ m i n : r . y 1 - 1 , 0134660 m a x : r . y 2 + 1 ] , \r 0134700 t o u c h 376 001 \0 C 351 : 0134720 E x t e n d R i g h t Y C o v e 0134740 r ] ; \r I F r i g h t 0134760 C o v e r . m a x < = r . y 2 0135000 T H E N \r C h e c k 0135020 R i g h t C o v e r A n d G a p 0135040 [ r . y 2 + 1 ] ; \r E N 0135060 D ; - - o f R i g h t E d 0135100 g e S i z e C h e c k \r \r \r 0135120 C o v e r e d : P R O C E D U 0135140 R E [ p : C o o r d P o i n t 0135160 , l e v : E x t r a c t L e 0135200 v e l ] \r R E T U R N S 0135220 [ c o v e r e d : B O O L E A 0135240 N ] = \r B E G I N \r \r 0135260 C h e c k X C o v e r : 0135300 P R O C E D U R E [ i t e 376 001 0135320 \0 d 277 m : F e a t u r e P t r 0135340 ] = \r { I F p . 0135360 x I N [ i t e m . c o v e r 0135400 . x 1 . . i t e m . c o v e r . 0135420 x 2 ) T H E N \r 0135440 c o v e r e d _ T R U E } 0135460 ; \r \r c o v e r e d _ 0135500 F A L S E ; \r S e a r 0135520 c h F e a t u r e P S T [ p : 0135540 d r c S w a t h [ l e v ] , \r 0135560 i n t : [ m i n : 0135600 p . y , m a x : p . y + 1 ] 0135620 , \r t o u c h : C 0135640 h e c k X C o v e r ] ; \r 0135660 E N D ; - - o f C o v e 0135700 r e d \r \r \r M i n S i z e V 0135720 i o l 376 001 \0 326 026 a t i o n : P 0135740 R O C E D U R E [ f : F e a t 0135760 u r e P t r , r : C o o r d 0136000 R e c t ] = \r B E G I 0136020 N \r v : V i o l a t i 0136040 o n = [ p l a c e : R e f 0136060 C o o r d P t [ r ] , i n f o 0136100 : t o o N a r r o w [ l e v : 0136120 f . l e v ] ] ; \r I F 0136140 f . n e t # N I L T H E N \r 0136160 B E G I N \r 0136200 c n : C a n o n N e t P t 0136220 r _ f . n e t _ C a n o 0136240 n N e t [ f . n e t ] ; \r 0136260 W I T H d i d : c n . 0136300 i d S E L E C T F R O M \r 0136320 n 376 001 \0 314 252 o r m 0136340 a l = > \r 0136360 I F d i d . c o u l d B e L o 0136400 g o T H E N \r 0136420 { d i d . v i o l a t i 0136440 o n s _ u z . N E W [ V i o 0136460 l a t i o n L i s t _ [ n 0136500 e x t : d i d . v i o l a t i 0136520 o n s , v : v ] ] ; R E 0136540 T U R N } ; \r E 0136560 N D C A S E = > N U L L ; \r 0136600 E N D ; \r N 0136620 o t e V i o l a t i o n [ v ] ; 0136640 \r E N D ; - - o f 0136660 M i n S i z e V i o l a t i o n 0136700 \r \f \r N e i g h b o r C h e 0136720 c k : P R O C E D U R E 376 001 \0 0136740 331 316 [ f : F e a t u r e P t r 0136760 , i n L e v e l : E x t r a 0137000 c t L e v e l , d i s t : C 0137020 o o r d ] = \r B E G I 0137040 N \r \r T o o C l o s e V 0137060 i o l a t i o n : P R O C E D 0137100 U R E [ n e i g h b o r : F e 0137120 a t u r e P t r ] = \r 0137140 B E G I N \r c n 0137160 N e i g h b o r : C a n o n N 0137200 e t P t r _ n e i g h b o r 0137220 . n e t _ \r C 0137240 a n o n N e t [ n e i g h b o r 0137260 . n e t ] ; \r v : 0137300 V i o l a t i o n _ [ \r 0137320 p l a c e : R e f 0137340 C o 376 001 \0 ~ 021 o r d P t [ [ \r 0137360 x 1 : M I N 0137400 [ f . c o v e r . x 1 , n e i 0137420 g h b o r . c o v e r . x 2 ] , 0137440 \r x 2 : f 0137460 . c o v e r . x 1 , \r 0137500 y 1 : M A X [ f . c 0137520 o v e r . y 1 - d i s t , n e 0137540 i g h b o r . c o v e r . y 1 ] 0137560 , \r y 2 : 0137600 M I N [ f . c o v e r . y 2 + d 0137620 i s t , n e i g h b o r . c o 0137640 v e r . y 2 ] ] ] , \r 0137660 i n f o : t o o C l o s 0137700 e [ l e v 1 : f . l e v , l 0137720 e v 2 : n e i g h b o r . l e 0137740 v , \r 376 001 \0 P p 0137760 n 1 : ( f . n e t _ R 0140000 e f C a n o n N e t [ f . n e t 0140020 ] ) , n 2 : R e f C a n o n 0140040 N e t [ c n N e i g h b o r ] ] 0140060 ] ; \r I F f . c o 0140100 v e r . x 1 < = c n N e i g h b 0140120 o r . i d . f i n a l . r . x 2 0140140 O R \r ( G e t 0140160 N o r m a l N e t I d [ @ f . n 0140200 e t ] . c o u l d B e L o g o 0140220 A N D \r G e t N 0140240 o r m a l N e t I d [ @ n e i g 0140260 h b o r . n e t ] . c o u l d B 0140300 e L o g o ) T H E N \r 0140320 - - n e t s c o u l 0140340 d s t i l l n o t 376 001 \0 & 0140360 271 b e i n e r r o r \r 0140400 c n N e i g h b o r . 0140420 i d . v i o l a t i o n s _ 0140440 u z . N E W [ V i o l a t i o n 0140460 L i s t _ \r 0140500 [ n e x t : c n N e i g h b 0140520 o r . i d . v i o l a t i o n s 0140540 , v : v ] ] \r E 0140560 L S E N o t e V i o l a t i o 0140600 n [ v ] ; \r E N D ; 0140620 - - o f T o o C l o s e V 0140640 i o l a t i o n \r \r C h 0140660 e c k N e i g h b o r D i f f u 0140700 s i o n : P R O C E D U R E [ 0140720 i t e m : F e a t u r e P t r 0140740 ] = \r B E G I N \r 0140760 376 001 \0 346 300 c n i t e 0141000 m : C a n o n N e t P t r _ 0141020 i t e m . n e t _ C a n o 0141040 n N e t [ i t e m . n e t ] ; \r 0141060 \r A S S E R T [ i t 0141100 e m . c o v e r . x 1 < = f . c 0141120 o v e r . x 1 ] ; \r \r 0141140 I F f # i t e m A N D f 0141160 . c o v e r . x 1 < i t e m . c 0141200 o v e r . x 2 + d i s t A N D 0141220 \r c n i t e m # 0141240 c n f A N D i t e m . l e v 0141260 = f . l e v T H E N \r 0141300 - - M i n s e p a r 0141320 a t i o n i s n o t v i o 0141340 l a t e d i f t h e r e i 0141360 s p o l y 376 001 \0 x 373 \r 0141400 - - b e t w e e n t 0141420 h e t w o d i f f u s e d 0141440 r e g i o n s \r 0141460 B E G I N \r \r p 0141500 o l y P o s s i b l e : B O O 0141520