+
    26jK                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
Ht ]	! ]4      P                  4       P                  ^,          t]R,          R,          t]R,          t]R	,          t]R
,          t]R,          t]R,          tRRRRRRRRRRRRRR/tR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltRLtR*tR+t R,t!RLt"R)t#R- R. lt$R/ R0 lt%R1 R2 lt&R3 R4 lt'R5 R6 lt(R7 R8 lt)R9 R: lt*R; R< lt+R= R> lt,R? R@ lt-RA RB lt.RC RD lt/RE RF lt0RMRG RH llt1RI RJ lt2]3RK8X  d   ]4! ]2! 4       4      hR# )N    )annotationsN)datetimetimezone)Path)Anypreview_exportsassemblyz)roof_mount_platform_concept_assembly.jsonzeditable_parameters.jsonzsubmitted_parameters.jsonz(roof_mount_platform_engine_assembly.jsonzstandalone_engine_report.jsonplatform_initial_lengthg     @platform_lengthg     f@platform_width_trussg     p@screen_widthg     X@screen_heightg     @@screen_extension_heightg     @pitch_angleg      @c                    V ^8  d   QhRRRR/# )   pathr   returnr    )formats   "#tools/standalone_platform_engine.py__annotate__r      s     8 8D 8S 8    c                N    \         P                  ! V P                  R R7      4      # )utf-8encoding)jsonloads	read_text)r   s   &r   	read_jsonr!      s    ::dnngn677r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   valuer   r   Noner   )r   s   "r   r   r   #   s&     C CT C# C$ Cr   c                X    V P                  \        P                  ! V^R7      RR7       R# )r   indentr   r   N)
write_textr   dumps)r   r#   s   &&r   
write_jsonr*   #   s    OODJJuQ/'OBr   c                    V ^8  d   QhRRRR/# )r   payloaddict[str, Any] | Noner   dict[str, Any]r   )r   s   "r   r   r   '   s      0 ^ r   c                    \        \        4      R ,          pV Uu/ uF  q"R,          VP                  R4      bK  	  ppV '       d4   V P                  R . 4       F  pVP                  R4      W2R,          &   K  	  V# u upi )
parametersnamer#   )r!   PARAMETER_FILEget)r,   paramsparamvaluess   &   r   parameter_mapr7   '   sm    ~&|4F=CDVEFmUYYw//VFD[[r2E$)IIg$6F=! 3M	 Es   !A;c               (    V ^8  d   QhRRRRRRRR/# )r   r6   r.   r1   strfallbackfloatr   r   )r   s   "r   r   r   0   s(      >   % r   c                j     \        V P                  W4      4      #   \        \        3 d    Tu # i ; iN)r;   r3   	TypeError
ValueError)r6   r1   r:   s   &&&r   numberr@   0   s4    VZZ/00z" s    22c               (    V ^8  d   QhRRRRRRRR/# )r   r6   r.   r1   r9   r:   boolr   r   )r   s   "r   r   r   7   s.     D DN D# D D$ Dr   c                    V P                  W4      p\        V\        4      '       d   V# \        V4      P	                  4       P                  4       R9   # )1>   rD   onyestrue)r3   
isinstancerB   r9   striplower)r6   r1   r:   r#   s   &&& r   booleanrK   7   sD    JJt&E%u:##%)CCCr   c                    V ^8  d   QhRRRR/# )r   r#   r   r   r.   r   )r   s   "r   r   r   >   s     _ _3 _> _r   c                   \        T ;'       g    R 4      P                  4       P                  4       pV'       d   VR 8X  d   RRRR /# VP                  R4       Uu. uF  q"P                  4       NK  	  pp\	        V4      ^8w  d	   RRRVRR/#  \        V^ ,          4      pT^,          pTR9  d	   RRRTRR/# RR	R
\        ^T4      RTR\        ^T4       RT 2/# u upi   \         d    RRRTRR/u # i ; i)0enabledFraw,errorzExpected bay,L or bay,RzBay must be a numberzHand must be L or RTbayhand>   LR)r9   rI   uppersplitlenintr?   max)r#   textpiecepiecesrS   rT   s   &     r   parse_door_datar_   >   s   u||""$**,D43;5%--)-C9kkmF9
6{a5%w8QRRP&)n !9D:5%w8MNNtUC3KuQPSUVW[V\F]^^ :
  P5%w8NOOPs   CC C54C5c               (    V ^8  d   QhRRRRRRRR/# )r   r6   r.   r   r;   platform_widthr   r   )r   s   "r   r   r   O   s*        PU Zh r   c                `   R RRV3RRRV3RRRV3R	R
RV3/p/ pVP                  4        EF   w  pw  rgp\        ^\        ^\        P                  ! \        RVR,
          4      R,          4      4      4      p	\        V P                  VR4      4      p
V
P                  R4      '       dB   \        V	\        ^\        V
R,          4      4      4      V
R&   V
R,           RV
R,           2V
R&   \        WR4      p\        V
P                  R4      ;'       d    T4      V
R&   RVRVRVRV	RV
/WE&   EK  	  V# )frontFRONT_DOORS_DATASCREEN_FRONTbackBACK_DOORS_DATASCREEN_BACKleftLEFT_DOORS_DATASCREEN_LEFTrightRIGHT_DOORS_DATASCREEN_RIGHTg     @g      k@     @rN   rO   rS   rQ   rT   rP   Tvisible	parameterscreenParameterscreenEnabledbayCountdoor)
itemsr[   minmathfloorr_   r3   rZ   rK   rB   )r6   r   ra   sideslayoutside
door_paramscreen_paramlength	bay_countru   screen_enableds   &&&         r   door_layoutr   O   s?   $noF"M?C"M>B$nnE	E  F49KKM00z3q$**S%-H6-Q"RST	vzz*c:;88IiQDK0@)ABDK!%[M4<.9DK t<txx	2EE~FY|^	D
 5B Mr   g      ^@g     p@ro   gv@c                    V ^8  d   QhRRRR/# )r   doorsr.   r   z list[tuple[str, dict[str, Any]]]r   )r   s   "r   r   r   q   s       3S r   c                    . pV P                  4        FB  w  r#VP                  R / 4      pVP                  R4      '       g   K0  VP                  W$34       KD  	  V# )ru   rp   )rv   r3   append)r   entriesr|   	side_dataru   s   &    r   visible_door_entriesr   q   sM    02G ;;=}}VR(88INND<( ) Nr   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r   pointtuple[float, float, float]r|   r9   rS   rZ   r   r;   r   r   r   )r   s   "r   r   r   z   sD      %
 
 	
   r   c                   V w  rVpV\         ,
          pV\        ,
          p	\        ^V4      ^,
          \        ,          p
VR8X  d#   \         V,           \        V
,           V	,           V3# VR8X  d*   V\        ,           V,
          \        V
,           V	,           V3# VR8X  d#   \        V
,           V	,           \
        V,
          V3# VR8X  d   W5,
          \        V
,           V	,           V3# V # )   rc   rf   ri   rl   )DOOR_BASE_XDOOR_BASE_Yr[   DOOR_BAY_STEPDOOR_BACK_X_OFFSETDOOR_FRONT_Y)r   r|   rS   r   r   xyzrel_xrel_y
bay_offsets   &&&&&      r   map_door_pointr   z   s     GA!OEOEa+/]2Jwe#[:%=%EqIIv~"44u<kJ>VY^>^`abbv~j(50,2FJJw#[:%=%EqIILr   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r   matrixlist[float]r|   r9   rS   rZ   r   r;   r   r   r   )r   s   "r   r   r      sD      
 
 	
  r   c                   V ^,          V ^,          V ^,          3pV ^ ,          V ^,          V ^,          3V ^,          V ^,          V ^	,          3V ^,          V ^,          V ^
,          3.p\        WQW#V4      p. pV F  p	V^ ,          V	^ ,          ,           V^,          V	^,          ,           V^,          V	^,          ,           3p
\        WW#V4      pVP                  V^ ,          V^ ,          ,
          V^,          V^,          ,
          V^,          V^,          ,
          34       K  	  V^ ,          ^ ,          V^,          ^ ,          V^,          ^ ,          V^ ,          V^ ,          ^,          V^,          ^,          V^,          ^,          V^,          V^ ,          ^,          V^,          ^,          V^,          ^,          V^,          RRRR.# )                 ?)r   r   )r   r|   rS   r   r   origincolumnsmapped_originmapped_columnscolumnendpointmapped_endpoints   &&&&&       r   map_door_matrixr      s    QiF2J/F	F1Ivay)	F1Ivay)	F1Ivbz*G
 #6|TM79N1Iq	)6!9vay+@&)fUViBWX(|\"]1%55"]1%55"]1%55	
  	q!nQ/2N14Ea4H-XYJZq!nQ/2N14Ea4H-XYJZq!nQ/2N14Ea4H-XYJZS#s	 r   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r   	templateszlist[dict[str, Any]]r   r.   screen_scaler   r   r;   r   r   r   )r   s   "r   r   r      sD        #     	 
    r   c                   \        V4      pV'       g   R R^RRRR/3.p. pV EFH  w  rx\        VP                  R^4      4      p	\        VP                  R4      4      p
\	        V ^R7       F  w  rVP                  RR4      pR	VP                  4       9   pV
'       d   V'       g   K<  \        V4      p\        VP                  RR4      4      P                  4       pR
V RV	 RV RVR 2VR&   VP                  4        RV	 RV RVP                  RVR,          4       2VR&   WR&   WR&   VVR&   WR&   \        VR,          WyW44      p\        VV4      VR&   VP                  V4       K  	  EKK  	  V# )rc   rS   rT   rU   
infillOnlyTstart
sourcePath 	door_slatengine_door__04did_BAY__DOOR_r1   doorSidedoorBaydoorHanddoorInfillOnlymatrixRowMajor)r   rZ   r3   rB   	enumeraterJ   dictr9   rW   r   matmul4r   )r   r   r   r   r   r   clonesr|   ru   rS   infill_onlytemplate_indextemplatesource_path	is_infillclonerT   mapped_matrixs   &&&&&             r   clone_door_occurrencesr      s    #5)GeQ\4HIJ#%F
$((5!$%488L12(1)1(E$N",,|R8K#{'8'8'::I9NEtxx,-335D(auAdV1^C<PQE$K#zz|nE#fTF!HLLQWY^_cYdDeCfgE&M $*") $E*&1"#+H5E,FSbqM&-lM&JE"#MM% ! )F ( Mr   c               $    V ^8  d   QhRRRRRR/# )r   ar   br   r   )r   s   "r   r   r      s!      { { { r   c                   a aaa R .^,          p\        ^4       FG  o\        ^4       F5  o\        V VVV3R l\        ^4       4       4      VS^,          S,           &   K7  	  KI  	  V# )r   c              3     <"   T F8  pSS^,          V,           ,          SV^,          S,           ,          ,          x  K:  	  R# 5i)   Nr   ).0kr   r   colrows   & r   	<genexpr>matmul4.<locals>.<genexpr>   s1     $WhQsQw{^aAn%D%Dhs   A A)rangesum)r   r   outr   r   s   ff @@r   r   r      sS    %"*CQx8C!$$WeTUh$W!WCa#   Jr   c               $    V ^8  d   QhRRRRRR/# )r   r   r   mirror_widthr;   r   r   )r   s   "r   r   r      s!      K u  r   c                    \        V 4      pV^ ,          ) V^ &   V^,          ) V^&   V^,          ) V^&   W^,          ,
          V^&   V# r   )list)r   r   mirroreds   && r   mirror_matrix_xr      sM    F|HA;,HQKA;,HQKA;,HQK!,HQKOr   c                    V ^8  d   QhRRRR/# )r   degreesr;   r   r   r   )r   s   "r   r   r      s     	 	 	+ 	r   c                    \         P                  ! V 4      p\         P                  ! V4      p\         P                  ! V4      pR RRRRW#) RRW2RRRRR .# )r   r   )rx   radianscossin)r   anglecss   &   r   
rotation_xr      sV    LL!EAAS#sQCQ3S#s	 r   c               (    V ^8  d   QhRRRRRRRR/# )r   x_scaler;   y_scalez_scaler   r   r   )r   s   "r   r   r      s(         ; r   c                &    V R R R R VR R R R VR R R R R.# )r   r   r   )r   r   r   s   &&&r   global_scale_matrixr      s0    c3Wc3S'3S#s	 r   c               $    V ^8  d   QhRRRRRR/# )r   mr   r   r   r   r   )r   s   "r   r   r      s"       ,F ; r   c                   Vw  r#pV ^ ,          V,          V ^,          V,          ,           V ^,          V,          ,           V ^,          ,           V ^,          V,          V ^,          V,          ,           V ^,          V,          ,           V ^,          ,           V ^,          V,          V ^	,          V,          ,           V ^
,          V,          ,           V ^,          ,           .# r   r   )r   r   r   r   r   s   &&   r   transform_cornerr      s    GA!	!q1Q4!8adQh&1-	!q1Q4!8adQh&1-	!q1Q4!8aeai'!B%/ r   c               $    V ^8  d   QhRRRRRR/# )r   partr.   
occurrencer   ztuple[list[float], list[float]]r   )r   s   "r   r   r     s"      ^  Lk r   c           
     V  a V P                  R / 4      pVP                  R. RO4      pVP                  R. RO4      pV^ ,          V^ ,          3 UUUu. uF9  pV^,          V^,          3 F   pV^,          V^,          3 F  pWVV3NK	  	  K"  	  K;  	  ppppV U	u. uF  p	\        VR,          V	4      NK  	  p
p	\        ^4       Uau. uF  o\        V3R lV
 4       4      NK  	  up\        ^4       Uau. uF  o\	        V3R lV
 4       4      NK  	  up3# u upppi u up	i u upi u upi )boundsrw   r[   r   c              3  4   <"   T F  qS,          x  K  	  R # 5ir=   r   r   r   is   & r   r   %transformed_bounds.<locals>.<genexpr>       *6%1XX6   c              3  4   <"   T F  qS,          x  K  	  R # 5ir=   r   r   s   & r   r   r     r   r   )r   r   r   )r3   r   r   rw   r[   )r   r   r   bminbmaxr   r   r   cornerscornerpointsr   s   &&         `r   transformed_boundsr    s!   XXh#F::e_-D::e_-D q'47##Aq'47#Aq'47#A 
q	 $ 	# 	#   T[[SZz*:;VDSZF[49!H=Hq*6*	*H=49!H=Hq*6*	*H=  \==s   ?DDD!3D&c                    V ^8  d   QhRRRR/# )r   catalogr.   r   r$   r   )r   s   "r   r   r     s     $T $T $T4 $Tr   c                  a  / pS R ,           Uu/ uF  q"^ bK  	  pp\         P                  \         P                  \         P                  .p\         P                  ) \         P                  ) \         P                  ) .pS R,           F  pVP                  VR,          ^ 4      ^,           WR,          &   VP                  VR,          ^ 4      ^,           W6R,          &   S R ,          P                  VR,          4      pV'       g   K~  \        Wv4      w  r\	        ^4       F7  p
\        WJ,          W,          4      WJ&   \        WZ,          W,          4      WZ&   K9  	  K  	  S R ,          P                  4        UUu/ uF!  w  r'VP                  V^ 4      '       g   K  W'bK#  	  pppVP                  4        F  w  r'VP                  V^ 4      VR&   K  	  VS R &   \        V4      S R&   \        S R,          4      S R&   \        \        VP                  4       4      4      S R&   \        V 3R lS R,           4       4      S R	&   \        ;QJ d"    R
 WE,            4       F  '       d   K   RM	  RM! R
 WE,            4       4      '       d:   RTRTR\	        ^4       Uu. uF  qV,          WL,          ,
          NK  	  up/S R&   R# R. ROR. ROR. RO/S R&   R# u upi u uppi u upi )parts	instancesfolderpartIdcount	partCountinstanceCountfolderInstanceCountsc              3     <"   T F5  pSR ,          P                  VR,          / 4      P                  R^ 4      x  K7  	  R# 5i)r
  r  triangleCountN)r3   )r   r   r  s   & r   r   %recompute_metadata.<locals>.<genexpr>/  s?      1.J 	Z126::?ANN.s   =A estimatedInstancedTrianglesc              3  N   "   T F  p\         P                  ! V4      x  K  	  R # 5ir=   )rx   isfinite)r   r#   s   & r   r   r  3  s     
9[E4==[s   #%FTrw   r[   sizer   N)r   r   r   )rx   infr3   r  r   rw   r[   rv   rY   r   sortedr   all)r  folder_countspart_idpart_countsminsmaxsr   r   r  r  axisactive_partsr   s   f            r   recompute_metadatar#    sw   $&M=DW=M"N=M'A:=MK"NHHdhh)DXXIy488),Dk**
.;.?.?
8@TVW.X[\.\*+,7OOJx<PRS,TWX,Xx()w##Jx$89'9
!HDTZ4DJTZ4DJ  + 8?w7G7M7M7Oo7OmgS^SbSbcjlmSnMGM7OLo%++-#3W . $GG|,GK"7;#78GO&*6-2E2E2G+H&IG"#-0 1!+.1 .G)* s
9T[
9sss
9T[
99944a91!Wtw&&9
 #IuiSE #O p  :s   K5KKKc                    V ^8  d   QhRRRR/# )r   r   r9   r   r   )r   s   "r   r   r   =  s      S S r   c                    V P                  4       pR V9   g   RV9   g   RV9   g   RV9   d   R# RV9   g   RV9   d   R# RV9   g   R	V9   d   R# R
V9   g   RV9   d   R# RV9   g   RV9   d   R# R# )	post_back	back_slatz\b_slatz/b_slatrf   z
\01 front\z
/01 front/rc   z	\02 back\z	/02 back/z	\03 left\z	/03 left/ri   z
\04 right\z
/04 right/rl   common)rJ   )r   lowereds   & r   screen_sider*  =  s}    !Gg!7:;PT]ahTh LG$;;'#9;'#9 LG$;r   c               $    V ^8  d   QhRRRRRR/# )r   r   r9   r6   r.   r   rB   r   )r   s   "r   r   r   L  s!      S . T r   c                  a \        V 4      pVR 8X  d   \        SRR4      # VR8X  d   \        SRR4      # VR8X  d   \        SRR4      # VR8X  d   \        SRR4      # \        ;QJ d5    V3R	 lRRRRRRRR/P                  4        4       F  '       g   K   R# 	  R
# ! V3R	 lRRRRRRRR/P                  4        4       4      # )rc   re   Trf   rh   ri   rk   rl   rn   c              3  @   <"   T F  w  r\        SW4      x  K  	  R # 5ir=   )rK   )r   r1   r:   r6   s   &  r   r   &screen_side_enabled.<locals>.<genexpr>V  s(      ND 	''s   F)r*  rK   anyrv   )r   r6   r|   s   &f r   screen_side_enabledr0  L  s    {#Dwv~t44v~v}d33v~v}d33wv~t443  D44D	

 %'33 3 3  D44D	

 %'  r   c                    V ^8  d   QhRRRR/# )r   r,   r-   r   z%tuple[dict[str, Any], dict[str, Any]]r   )r   s   "r   r   r   a  s      v v1 v=b vr   c                	   \        V 4      p\        \        4      p\        P                  ! V4      p\        VR \        R,          4      pV\        R,          \        R,          ,
          ,           p\        VR\        R,          4      pVR,           p\        VR\        R,          4      p\        VR\        R	,          4      p	\        VR
\        R,          4      p
\        WV4      p\        RV\        R,          ,          4      p\        RV\        R,          ,          4      p\        RW,           \        R,          \        R	,          ,           ,          4      pV
\        R,          ,
          p. p. p. p\        WR4      p\        WV4      p\        V4      pVR,           EFe  pVP                  RR4      pVP                  R4      R8H  ;'       d    RV9   ;'       g    RV9   pV'       d(   VP                  \        P                  ! V4      4       Ks  VP                  R4      R8X  d   \        VV4      '       g   K  VR,          pVP                  R4      R8X  d   \        VV4      pM\        VV4      pVP                  R4      R<9   d   \        V4      R8  d   \        VV4      p\!        V4      pVVR&   VP                  V4       VP                  R4      R8X  g   EKA  \#        V4      R8X  g   EKT  VP                  V4       EKh  	  \%        VRR4      '       d   \'        V^R7       F  w  pp\        P                  ! V4      pRVR 2VR&   RVP                  R VR,          4       2VR &   VP                  RR4      P)                  R!R"4      VR&   \+        VR,          V4      VR&   VP                  V4       K  	  \-        VVVWW4      pVP/                  V4       R#VR &   R$VR%&   R R&R'R(R)\0        P2                  ! \4        P6                  4      P9                  4       R*R+R,. R=OR-. R>O/VR.&   R VR/VRVR0VRVRV	R
V
/VR1&   WR2&   VVR&   \;        V4       R3RR)VR.,          R),          R*R+R4\=        \>        PA                  \B        4      4      P)                  R5R64      R1VR1,          R2VR7VR7,          R8VR8,          R9VR9,          R:VR:,          R;\E        V4      R,VR.,          R,,          R-VR.,          R-,          /pVV3# )?PLATFORM_INITIAL_LENGTHr
   r   PLATFORM_WIDTH_TRUSS_LENGHTr   g     @@SCREEN_HEIGHTr   SCREEN_EXTENSION_HEIGHTr   PITCH_ANGLEr   g333333?r   r   r  r   r   r  z	03 Screenz	\13 DOOR\z	/13 DOOR/r   g-C6?ri   rn   Tr   engine_right_r   r   RIGHT_r1   z	\03 LEFT\z
\04 RIGHT\ROOF_MOUNT_PLATFORM_ENGINEzStandalone parametric engine. No Inventor process is used; the catalog is compiled from parameter JSON, an Inventor-derived baseline occurrence graph, and local geometric rules.basisStandalonePlatformEngineversionz0.1.0generatedAtinventorUsedFrulesAppliedlimitationsenginePLATFORM_LENGHTSCREEN_WIDTH_DERIVEDr0   
doorLayoutokr  \/r  r  r   r  generatedDoorOccurrences>   04 Building05 Roof_Mounting)
z/Longitudinal scale from PLATFORM_INITIAL_LENGTHz.Lateral scale from PLATFORM_WIDTH_TRUSS_LENGHTz9Screen side suppression from SCREEN_FRONT/BACK/LEFT/RIGHTzQRight screen mirror generation from left-side templates when SCREEN_RIGHT is truezBScreen vertical scale from SCREEN_HEIGHT + SCREEN_EXTENSION_HEIGHTz*Roof/mounting pitch delta from PITCH_ANGLEzLDoor bay/hand layout parsed from *_DOORS_DATA for docked screen door editingznDoor frame/hardware occurrences generated from the Inventor-derived door template at the selected side and bayz`Door slat infill is retained when no door is configured so removed doors read visually as screenz?Counts and world bounds recomputed from transformed part bounds)z{This first-pass engine transforms the exported baseline meshes; it does not yet regenerate every IPT feature from sketches.zDoor placement uses the recovered baseline door assembly as a reusable template instead of regenerating every hinge/slat feature parametrically.zHidden internal iLogic rule bodies were not fully recoverable from the IAM streams, so formulas are reimplemented incrementally.)#r7   r!   BASELINE_CATALOGcopydeepcopyr@   BASELINEr   r[   r   r   r3   r   r0  r   absr   r*  rK   r   replacer   r   extendr   nowr   utc	isoformatr#  r9   ENGINE_CATALOGrelative_toROOTrY   )r,   r6   baseliner  r
   r   r   r   r   r   r   r   r   r   screen_z_scalepitch_deltascaledleft_screen_templatesdoor_templatesglobal_scaler   
roof_pitchr   r   is_door_templater   new_occurrenceindexr   door_occurrencesreports   &                              r   engine_catalogrf  a  s   7#F)*HmmH%G$V-FQjHkl-:K1LxXqOr1rsO!&*GRhIij'&0L6?H_4MNM$V-FQjHkl0GHK9MNE$(3D*EEFG$x'??@G GHUdLehp  rK  iL  ML   M  NN 77K#%F24+-N&w=L&wHLK(Jk**
 nn\26%>>(3{B  D  DYdHd  IC  IChs  xC  iC!!$--
";<>>(#{2;N{\b;c;c,->>(#{2\62F\62F>>(#'JJsS^O_bhOhZ0Fj)+1'(n%>>(#{2{;7OSY7Y!((8- +0 v~t,,!*+@!JE:}}Z0H,U3K8HTN!'
vx~(N'OPHV%/^^L"%E%M%Mm]k%lH\")8BR9SUd)eH%&MM(# "K .ne\Sbq
MM"#2GFO	d G
 	*7x||HLL1;;= 
 	 
#GH0 	"#:?%';!#:{GL "L!GKw 	dwx(73~11$78@@sKgl+eW[)1'(#(> ?"C(8$9).9wx(7F F?r   c                   V ^8  d   QhRR/# )r   r   rZ   r   )r   s   "r   r   r     s      c r   c                 p   \        \        P                  4      ^8  d!   \        \        P                  ^,          4      M\        p V P                  4       '       d   \        V 4      MRp\        V4      w  r#\        \        V4       \        \        V4       \        \        P                  ! V^R7      4       ^ # )r   Nr&   )rY   sysargvr   SUBMITTED_FILEexistsr!   rf  r*   rV  ENGINE_REPORTprintr   r)   )payload_pathr,   r  re  s       r   mainrp    su    (+CHH(94$~L)5)<)<)>)>i%DG$W-OG~w'}f%	$**VA
&'r   __main__g      ^r=   )5
__future__r   rM  r   rx   ri  r   r   pathlibr   typingr   __file__resolveparentsrX  ASSEMBLY_DIRrL  r2   rk  rV  rm  rO  r!   r*   r7   r@   rK   r_   r   r   r   r   r   r   DOOR_BACK_Y_OFFSETr   r   r   r   r   r   r   r   r   r  r#  r*  r0  rf  rp  __name__
SystemExitr   r   r   <module>r|     se   "    
 '   H~''*''*4"MM  :: ;; JJ>> vvFFVu38CD_"4   .D F	"$TN*vr z
TV
 r   