Ë
    íDºj2,  ã                  óh  — d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	Z
 eej                  j                  d ee«      j                  «       j                  d   «      «      j                  «       Z G d„ d	e«      Zdd
„Zdd„Zdd„Zddd„Zdd„Zdd„Zdd„Zdd„Zddd„Zd d„Zd d„Zdd„Zdd„Zy)!zQStrict adapters for prepared POC schemas; no guessed arrays or invented topology.é    )Úannotations)ÚPathN)ÚAnyÚMOLTEX_EXPERIMENT_ROOTé   c                  ó   — e Zd Zy)ÚInputContractErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úmodels/data.pyr	   r	   
   s   … r   r	   c                ó„  — g }g }| D ]Ž  }t        j                  dt        |«      «      }|j                  |r|j	                  d«      j                  «       n
t        |«      «       |j                  |r|j	                  d«      j                  «       nd«       Œ� t        j                  |«      t        j                  |«      fS )uN   Split prepared labels such as ``ìƒ�ë¶€ì˜¨ë�„01 [Â°C]`` without guessing units.z(.*?)\s*\[([^]]+)\]r   é   Ú )ÚreÚ	fullmatchÚstrÚappendÚgroupÚstripÚnpÚasarray)ÚnamesÚbaseÚunitsÚvalueÚmatchs        r   Úsplit_embedded_unitsr       s�   € à	€D�2ˆUÛˆÜ�l‰lÐ1´#°e³*Ó=ˆØ�‰©e�E—K‘K “N×(Ñ(Ô*¼¸U»ÔDØ�‰©u�U—[‘[ “^×)Ñ)Ô+¸"Õ=ð ô �:‰:�dÓœBŸJ™J uÓ-Ð-Ð-r   c                ó"  — | j                  «       s!t        d| j                  t        «      › �«      ‚t	        j
                  | d¬«      }|t        |j                  «      z
  }|r,t        | j                  t        «      › dt        |«      › �«      ‚|S )Nzmissing prepared input: F)Úallow_picklez missing required schema keys )	Úexistsr	   Úrelative_toÚROOTr   ÚloadÚsetÚfilesÚsorted)ÚpathÚrequiredÚdÚmissings       r   Ú_loadr.      s   € Ø�;‰;Œ=Ô 2Ð5MÈd×N^ÑN^Ô_cÓNdÐMeÐ3fÓ gÐgÜ‡g�gˆd Ô&€A°¼¸Q¿W¹W»Ñ0E¨ÙÔ(¨D×,<Ñ,<¼TÓ,BÐ+CÐCaÔbhÐipÓbqÐarÐ)sÓtÐtØ€Hr   c                ó¨  — t        j                  | t         j                  «      } t        j                  |t        «      }| j                  |j                  k7  rt        |› d�«      ‚t        j                  t        j                  | |   «       «      rt        |› d�«      ‚t        j                  || d«      j                  t         j                  «      S )Nz4: x and feature_valid must have exactly equal shapesz: a known feature is non-finiteg        )
r   r   Úfloat32ÚboolÚshaper	   ÚanyÚisfiniteÚwhereÚastype)ÚxÚvalidÚlabels      r   Ú_masked_valuesr:      s™   € Ü‡j�j�”2—:‘:Ó€A¤b§j¡j°´tÓ&< Ø‡w�w�%—+‘+ÒÔ%7¸5¸'ÐAuÐ8vÓ%wÐwÜ	‡v�vŒr�{‰{˜1˜U™8Ó$Ð$Ô%Ô-?À5À'ÐIhÐ@iÓ-jÐ'jÜ�8‰8�E˜!˜BÓ×&Ñ&¤r§z¡zÓ2Ð2r   c                ó€  — | j                  «       }|D �cg c]  }t        |«      j                  «       ‘Œ }}|�|ndgt        |«      z  D �cg c]  }t        |«      j                  «       ‘Œ }}t	        |«      D ��cg c]  \  }}|dv sŒ|‘Œ }}}|r@t        dt        t        j
                  t        j                  |d|f   «      «      «      «      nd}t	        t        ||«      «      D �]¤  \  }\  }	}
|	dv sd|	v sd|	v sd|	v sd	|	v sd
|	v sd|	v sd|	v rŒ+||v r|d|fxx   |z  cc<   Œ?d|	v sd|	v s|
j                  d«      rNt        j                  |d|f   «      t        j                  t        j                  |d|f   «      «      z  |d|f<   Œ¦d|	v s|
dk(  r|d|fxx   dz  cc<   Œ¿d|	v s|
dk(  r|d|fxx   dz  cc<   ŒØ|
dv r|d|fxx   dz  cc<   Œì|
dv r|d|fxx   dz  cc<   �Œ|
dv r|d|fxx   dz  cc<   �Œd|	v s|
dk(  r|d|fxx   dz  cc<   �Œ0d|	v s|
dk(  r|d|fxx   t        j                  z  cc<   �ŒXt        j                  |d|f   «      t        j                  t        j                  |d|f   «      «      z  |d|f<   �Œ§ |j                  t        j                  «      S c c}w c c}w c c}}w )u3  Unit-aware, non-fitted normalization used only for unlabeled smoke inputs.

    Coordinates/depth/edge lengths in mm share a 1000-mm reference, areas use
    1e6 mmÂ², and curvature remains in its inverse-length physical scale under a
    signed-log transform. ``*_native`` scan coordinates use one common observed
    coordinate magnitude across x/y/z, preserving scanner-frame shape rather
    than independently distorting axes. Embedded process units use fixed
    references: 500 Â°C, 100 seconds and 1000 m/s. This is explicitly not a
    train scaler.
    r   >   Úx_nativeÚy_nativeÚz_nativeg      ð?.>   Ú
pos_norm_xÚ
pos_norm_yÚ
pos_norm_zÚnormalÚ	directionr8   Ú
silhouetteÚ
visibilityÚboundaryÚfeature_z1/mmÚper_mmÚmm2g    €„.AÚ_mmÚmmg     @�@>   õ   Â°cÚdegcg     @@>   ÚsÚsecg      Y@>   úm/súm/secÚdegg     €f@Úrad)Úcopyr   ÚlowerÚlenÚ	enumerateÚmaxÚfloatr   ÚabsÚzipÚ
startswithÚsignÚlog1pÚpir6   r0   )r7   r   r   ÚyÚnÚuÚjÚ
native_xyzÚnative_scaleÚnameÚunits              r   Úfixed_physical_normalizerh   !   s&  € ð ‡f�fƒh€A©uÓ5©u¨!”s˜1“v—|‘|•~¨u�Ð5Ð`eÐ`qÑW\ÐxzÐw{Ô|ð  AFó  }Gñ  xGð  XGó  >Iñ  XGÐQR¼cÀ!»f¿l¹l½nð  XG°uð  >IÜ& uÔ-ÔYÑ-‘c�a˜°Ð6XÒ1X’Ð-€JÑYÙEO”�RœœbŸf™f¤R§V¡V¨A¨c°*¨nÑ,=Ó%>Ó?Ó@ÔAÐUW€LÜ"¤3 u¨UÓ#3×4‰ˆ‰+ˆ4�ØÐ;Ñ;¸xÈ4Ñ?OÐS^ÐbfÑSfÐjqÐuyÑjyð  ~Jð  NRñ  ~Rð  Vbð  fjñ  Vjð  nxð  |@ñ  n@ð  DNð  RVñ  DVð  X\Ø�*‰_˜a  A ›h¨Ñ4œhØ�t‰^˜x¨4Ñ/°4·?±?À6Ô3JÔUW×U\ÑU\Ð]^Ð_bÐcdÐ_dÑ]eÓUfÔgi×goÑgoÔpr×pvÑpvÐwxÐy|Ð}~Ðy~Ñwó  qAó  hBñ  VBÈAÈcÐRSÈeÊHØ�d‰]˜d ešm¨Q¨s°1¨u«X°s©]¬XØ�d‰]˜d dšl¨A¨c°!¨e«H°e©O¬HØ�^Ñ# Q s¨1 u£X¨t¡^¤XØ�[Ñ  ! C¨ E£(¨D¡.¥(Ø�_Ñ$ a¨¨A¨£h°¡o¥hØ�d‰]˜d ešm¨Q¨s°1¨u«X°t©^­XØ�d‰]˜d ešm¨Q¨s°1¨u«X´r·u±u©_­XÜ—w‘w˜q  Q ™xÓ(¬¯©´"·&±&¸¸3¸q¸5¹Ó2BÓ)CÑCˆa��A�‹hð 5ð �8‰8”B—J‘JÓÐùò 6ùò  >IùÛYs   • J0Á J5Á<J:Â	J:c                 óü  — t         dz  } t        | h d£«      }t        |d   |d   d«      |d   j                  t        «      }}|j
                  dk7  st        |«      st        d«      ‚t        |d   j                  t        «      «      \  }}|j                  «       |d	   j                  t        «      j                  «       z   }|j                  «       d
gt        |d	   «      z  z   }t        |«      |j                  d   k7  rt        d«      ‚t        |t        j                  |«      t        j                  |«      «      ||d   D �cg c]  }t        |«      ‘Œ c}t        | j                  t         «      «      fS c c}w )Nz/data_processed/tabular/process_and_geometry.npz>   r7   Úrun_idÚ	process_xÚfeature_validÚtraining_validÚprocess_feature_validr7   rl   ztabular process contractr   z!tabular x must be [runs,features]Úprocess_feature_namesÚgeometry_feature_namesr   r   z2tabular process and geometry names must align to xrj   )r%   r.   r:   r6   r1   ÚndimrV   r	   r    r   Útolistr2   rh   r   r   r$   )	Úpr,   r7   ÚmÚprocess_namesÚprocess_unitsr   r   Úrs	            r   Úprocess_conditionsrx   =   sn  € Ü
Ð<Ñ<€AÄÀaò  I\ó  A]¸aÜ�q˜‘v˜a Ñ0Ð1KÓLÈQÈÑM_×MfÑMfÔgkÓMl€a€AØ‡v�vˆq‚yœ˜AœÔ&8Ð9\Ó&]Ð ]Ü 4°QÐ7NÑ5O×5VÑ5VÔWZÓ5[Ó \Ñ€M�-Ø
×
Ñ
Ó
  Ð#;Ñ!<×!CÑ!CÄCÓ!H×!OÑ!OÓ!QÑ
Q€EØ
×
Ñ
Ó
  " ¤c¨!Ð,DÑ*EÓ&FÑ!FÑ
F€EÜ
ˆ5ƒz�1—7‘7˜1‘:ÒÔ%7Ð8lÓ%mÐmÜ# A¤b§j¡j°Ó&7¼¿
¹
À5Ó8IÓJÈ1Ð^_Ð`hÒ^iÓMjÑ^iÐYZÌcÐRSÍfÐ^iÑMjÔknÐop×o|Ño|ô  ~Bó  pCó  lDð  Dð  DùÒMjs   ÅE9c                 óà  — t         dz  } t        | h d£«      }t        |d   |d   d«      |d   j                  t        «      }}|j
                  dk7  s|j                  d   dk7  rt        d	«      ‚|d
   }|j                  |j                  d   fk7  rt        d«      ‚t        |j                  dddd«      ||d   «      j                  dddd«      |t        | j                  t         «      «      dœS )Nz+data_processed/images/cad_multiview_128.npz>   r7   Úfeature_namesrl   rm   r7   rl   zimage contracté   r   é   z.image x must be [6,C,H,W] (six prepared views)rz   r   z*image feature_names must align to channelsr   é   Úfeature_units©r7   ÚmaskÚsource©r%   r.   r:   r6   r1   rq   r2   r	   rh   Ú	transposer   r$   )rs   r,   r7   rt   r   s        r   Úimage_inputr„   G   s  € Ü
Ð8Ñ8€A¼EÀ!ÒDzÓ<{¸!Ü�q˜‘v˜a Ñ0Ð1AÓBÀ1À_ÑCU×C\ÑC\Ô]aÓCb€a€AØ‡v�vˆq‚y�A—G‘G˜A‘J ’MÔ);Ð<lÓ)mÐ#mØ
ˆOÑ
€EØ‡{�{�q—w‘w˜q‘z�mÒ#Ô+=Ð>jÓ+kÐ%kÜ(¨¯©°Q°q¸¸1Ó)=¸eÀAÀoÑDVÓW×aÑaÐbcÐdeÐfgÐhiÓjÐrsô  ~Að  BC÷  BOñ  BOô  PTó  BUó  ~Vñ  Wð  Wr   c                 ó   — t         dz  } t        | h d£«      }t        |d   |d   d«      |d   j                  t        «      }}|j
                  dk7  s |d   j                  |j                  d   fk7  rt        d	«      ‚t        |j                  d
ddd«      |d   «      j                  ddd
d«      |t        | j                  t         «      «      dœS )Nz.data_processed/voxels/cad_surface_dense_32.npz>   r7   rz   rl   r7   rl   zdense voxel contractr{   rz   r   z.dense voxel x [C,X,Y,Z] and names [C] requiredr   r   r}   r   r‚   )rs   r,   r7   rt   s       r   Úvoxel_inputr†   O   sï   € Ü
Ð;Ñ;€A¼uÀQÒGlÓ?m¸QÜ�q˜‘v˜a Ñ0Ð1GÓHÈÈ?ÑI[×IbÑIbÔcgÓIh€a€AØ‡v�vˆq‚y�A�oÑ&×,Ñ,¨q¯w©w°q©z¨mÒ;ÔCUð  WGó  DHð  >HÜ(¨¯©°Q°q¸¸1Ó)=¸aÀÑ>PÓQ×[Ñ[Ð\]Ð^_Ð`aÐbcÓdÐlmÔwzÐ{|÷  |Iñ  |Iô  JNó  |Oó  xPñ  Qð  Qr   c                 ój  — t         dz  } t        | h d£«      }t        j                  |d   t        j                  «      }t        |d   |d   d«      |d   j                  t        «      }}|j                  dk7  sX|j                  d   d	k7  sFt        |«      t        |«      k7  s/|j                  dk7  s |d
   j                  |j                  d   fk7  rt        d«      ‚t        j                  |dk  «      s,t        t        j                  |d¬«      «      t        |«      k7  rt        d«      ‚t        ||d
   «      }|t        j                  ||j                  t        j                   «      gd«      t#        | j%                  t         «      «      t        j                  |d   t        j                  «      dœS )zMLoad the explicit sparse-surface schema, never deriving it from dense voxels.z/data_processed/voxels/cad_surface_sparse_32.npz>   r7   Úvoxel_coordsrz   rl   rm   rˆ   r7   rl   zsparse voxel contractr   r   r}   rz   z[sparse voxel contract requires voxel_coords [N,3], x/feature_valid [N,C], feature_names [C]r   ©Úaxisz8sparse voxel coordinates must be non-negative and uniqueÚ	grid_dims)ÚcoordsÚfeaturesr�   r‹   )r%   r.   r   r   Úint32r:   r6   r1   rq   r2   rV   r	   r3   Úuniquerh   Úconcatenater0   r   r$   )rs   r,   Úcoordr7   rt   Úvaluess         r   Úsparse_voxel_inputr“   U   s¹  € ä
Ð<Ñ<€AÜˆAÒSÓT€AÜ
�*‰*�Q�~Ñ&¤r§x¡xÓ
0€E´nÀQÀsÁVÈAÈoÑL^Ð_vÓ6wÐxyð  {Jñ  yK÷  yRñ  yRô  SWó  yX°A°!Ø‡z�z�1‚}˜Ÿ™ A™¨Ò)¬S°«Z¼¸Q»Ò-?À1Ç6Á6È1Â9ÐPQÐRaÑPb×PhÑPhÐkl×krÑkrÐstÑkuÐjwÒPwÜ Ð!~ÓÐÜ	‡v�vˆe�A‰g„œ#œbŸi™i¨°1Ô5Ó6¼¸E»
ÒBÔJ\ð  ^Xó  KYð  EYÜ# A a¨Ñ&8Ó9€FØ¤b§n¡n°f¸Q¿X¹XÄbÇjÁjÓ=QÐ5RÐSTÓ&UÔ_bÐcd×cpÑcpÔquÓcvÓ_wô  EG÷  EOñ  EOð  PQð  R]ñ  P^ô  _a÷  _gñ  _gó  Ehñ  ið  ir   c                óL  — t        j                  | «      } t        j                  |t         j                  «      }| j                  dk7  s8| j                  d   dk7  s&|j                  dk7  st        | «      t        |«      k7  rt        d«      ‚t        j                  | j                  t         j                  «      rDt        j                  | dk  «      s,t        t        j                  | d¬«      «      t        | «      k7  rt        d«      ‚t        j                  |«      j                  «       r|dk  rt        d«      ‚t        j                  t        | «      df|t         j                  ¬	«      }t        j                   || j#                  t         j                  d
¬«      gd«      |fS )zIReturn MinkowskiEngine convention coordinates [batch,x,y,z] and features.r   r   r}   z9sparse collation requires coords [N,3] and features [N,C]r   r‰   z7sparse coordinates must be unique non-negative integersz;sparse features must be finite and batch index non-negative)ÚdtypeF)rT   )r   r   r0   rq   r2   rV   r	   Ú
issubdtyper•   Úintegerr3   r�   r4   ÚallÚfullrŽ   r�   r6   )rŒ   r�   Úbatch_indexÚbatchs       r   Úsparse_batch_collaterœ   `   sO  € ä�:‰:�fÓ€F¬¯
©
°8¼B¿J¹JÓ(G˜xØ‡{�{�A‚~˜Ÿ™ a™¨!Ò+¨x¯}©}¸aÒ/?Ä3ÀvÃ;ÔPSÐT\ÓP]ÒC]Ôewð  ytó  fuð  `uÜ�=‰=˜Ÿ™¤b§j¡jÔ1´R·V±V¸FÀ1¹HÔ5EÌÌRÏYÉYÐW]ÐcdÔMeÓIfÔhkÐlrÓhsÒIsô  |Nð  OHó  |Ið  vIÜ�;‰;�xÓ ×$Ñ$Ô&¨+°aª-Ô?Qð  SPó  @Qð  :QÜ
�'‰'”3�v“;˜q�/ +´B·H±HÔ
=€EÜ�>‰>˜5 §¡¬r¯x©x¸U Ó!CÐDÀQÓGÈÐPÐPr   c            
     óX  — g } t         dz  g}|j                  t        t         dz  j                  d«      «      «       |D ]è  }t	        |h d£«      }t        |d   |d   d|j                  › �«      |d   j                  t        «      }}|j                  dk7  s |d	   j                  |j                  d
   fk7  rt        |j                  › d�«      ‚d|v rt        |d   «      rdnd}| j                  t        ||d	   |d   «      |t        |j                  t         «      «      |dœ«       Œê | S )Nz,data_processed/points/cad_surface_points.npzzdata_processed/pointszscan_*_diagnostic.npz>   r7   rz   rl   rm   r7   rl   zpoint r   rz   r   z%: x [N,C], feature_names [C] requiredÚdiagnostic_post_processÚpost_scan_diagnosticÚcad_pre_processr~   )r7   r€   r�   Útiming)r%   Úextendr)   Úglobr.   r:   rf   r6   r1   rq   r2   r	   r   rh   r   r$   )ÚoutÚpoint_pathsrs   r,   r7   rt   r¡   s          r   Úpoint_inputsr¦   i   sš  € Ø
€CÜÐFÑFÐG€KØ×Ñ”vœtÐ$;Ñ;×AÑAÐBYÓZÓ[Ô\ÛˆÜ
�ÒHÓ
IˆÌ~Ð^_Ð`cÑ^dÐefÐgvÑewð  {Að  BC÷  BHñ  BHð  AIð  yJó  PKð  LMð  N]ñ  L^÷  Leñ  Leô  fjó  LkÈQÈ1Ø�6‰6�1Š9˜˜/Ñ*×0Ñ0°1·7±7¸1±:°-Ò?ÔGYÐ]^×]cÑ]cÐ\dð  eJð  [Kó  HLð  BLØ)BÀaÑ)GÌDÐQRÐSlÑQmÔLnÑ%ð  uFˆØ�
‰
Ô0°°1°_Ñ3EÀaÈÑFXÓYÐabÔloÐpq×p}Ñp}ô  Có  qDó  mEð  OUñ  Võ  	Wð	 ð
 €Jr   c                 ó€  — t        t        dz  j                  d«      «      } | st        d«      ‚g }d }| D �]  }t	        |h d£«      }t        |d   |d   d|j                  › �«      |d   j                  t        «      }}t        j                  |d   t        j                  «      }t        j                  |d	   t        j                  «      }|j                  d
k7  sŠ|j                  d
k7  s{|j                  d   d
k7  si|j                  d
k7  sZ|j                  d   |j                  d   k7  s;|j                  rG|j!                  «       dk  s|j#                  «       t%        |«      k\  rt        |j                  › d�«      ‚t'        |d   j                  t(        «      «      t'        |d   j                  t(        «      «      |j                  d   |j                  d   f}	|€|	}n||	k7  rt        d«      ‚|j+                  t-        ||d   «      |||t)        |j/                  t        «      «      t%        |«      dœ«       �Œ |S )Nzdata_processed/graphszgraph_*.npzz:no graph_<budget>.npz; graph preparation has not completed>   r7   Ú	edge_attrÚ
edge_indexrz   rl   rm   Úedge_feature_namesr7   rl   zgraph r©   r¨   r   r   r   z: full topology schema invalidrz   rª   z4graph resolutions must share feature and edge schema)r7   r€   r©   r¨   r�   Únodes)r)   r%   r£   r	   r.   r:   rf   r6   r1   r   r   Úint64r0   rq   r2   ÚsizeÚminrX   rV   Útupler   r   rh   r$   )
Úpathsr¤   Úschemars   r,   r7   rt   ÚeÚaÚsigs
             r   Úgraph_inputsrµ   t   s¯  € Ü
”$Ð.Ñ.×4Ñ4°]ÓCÓ
D€EÙÔ*Ð+gÓhÐhØ
€C�4ˆFÜˆÜ
�ÒvÓ
wˆÜ˜1˜S™6 ! OÑ"4°v¸a¿f¹f¸XÐ5FÓGÈÈ/ÑHZ×HaÑHaÔbfÓHgˆ!ˆÔkm×kuÑkuÐvwð  yEñ  wFô  GI÷  GOñ  GOó  lPÐijô  TV÷  T^ñ  T^ð  _`ð  alñ  _mô  np÷  nxñ  nxó  Tyð  RSØ�6‰6�1Š9˜Ÿ™ š	 Q§W¡W¨Q¡Z°¢]°a·f±f¸a²iÀ1Ç7Á7È1Á:ÈqÏwÉwÐWXÉzÒCYÐ^_×^dÒ^dÐjk×joÑjoÓjqÐrsÒjsÐwx×w|Ñw|Ów~ô  ADð  EFó  AGò  xGô  Qcð  gh÷  gmñ  gmð  fnð  nLð  dMó  QNð  KNÜ�1�_Ñ%×,Ñ,¬SÓ1Ó2´5¸Ð;OÑ9P×9WÑ9WÔX[Ó9\Ó3]Ð^_×^eÑ^eÐfgÑ^hÐij×ipÑipÐqrÑisÐtˆØˆ> #™6Ø�SŠ[Ô 2Ð3iÓ jÐjØ�
‰
Ô0°°1°_Ñ3EÓFÈaÐ]^ÐklÔvyÐz{÷  {Hñ  {Hô  IMó  {Nó  wOô  X[ð  \]ó  X^ñ  _ö  	`ð ð €Jr   c            	     óp  — t         dz  } t        | h d£«      }t        j                  |d   t        j                  «      t        j                  |d   t        j                  «      t        j                  |d   t        j                  «      }}}t        j                  |d   t
        «      t        j                  |d   t
        «      t        j                  |d   t
        «      }}}|j                  d	k7  sD|j                  d
   dk7  s2|j                  |j                  k7  s|j                  |j                  k7  rt        d«      ‚t        j                  ||||d   |d   |d   gd
«      }t        j                  t        j                  |d   dd
«      t        j                  |d   dd
«      t        j                  |d   dd
«      t        j                  g |j                  ¢d‘­t
        «      gd
«      }	t        j                  g d¢«      }
t        t        ||	d«      |
«      j                  dddd«      }t        j                  |d   t        j                  «      }t        j                  |d   t        j                  «      }|j                  d   dk7  sZ|j                  d   |j                  d   k7  s;|j                   r:|j#                  «       dk  s|j%                  «       t'        |«      k\  rt        d«      ‚||t)        | j+                  t         «      «      t'        |«      t-        |j                  d   «      dœS )Nz data_processed/brep/faces_uv.npz>   rB   Úpos_mmÚ	curvaturer¨   r©   Ú
trim_validÚnormal_validÚcurvature_validr·   rB   r¸   r¹   rº   r»   r{   éÿÿÿÿr}   zB-Rep UV grid shapes invalid).N)Úx_mmÚy_mmÚz_mmÚnormal_xÚnormal_yÚnormal_zÚkmax_1_per_mmÚkmin_1_per_mmÚgaussian_1_per_mm2r¹   rº   r»   zB-Rep gridsr   r   r   r©   r¨   zB-Rep adjacency invalid)ÚgridsÚ	adjacencyr�   ÚfacesÚadjacency_edges)r%   r.   r   r   r0   r1   rq   r2   r	   r�   ÚrepeatÚonesrh   r:   rƒ   r¬   r­   r®   rX   rV   r   r$   Úint)rs   r,   ÚposÚnorÚcurvÚtrimÚnvÚcvÚrawr8   r   rÆ   r²   r³   s                 r   Ú
brep_inputrÔ   ‚   s‚  € Ü
Ð-Ñ-€A´°qò  :`ó  2a¨qÜ—‘˜A˜h™K¬¯
©
Ó3´B·J±J¸qÀ¹{Ì2Ï:É:Ó4VÔWY×WaÑWaÐbcÐdoÑbpÔqs×q{Ñq{ÓW|ˆDˆ€Cô  JL÷  JTñ  JTð  UVð  Wcñ  Udô  eió  Jjô  km÷  kuñ  kuð  vwð  xFñ  vGô  HLó  kMô  NP÷  NXñ  NXð  YZð  [lñ  Ymô  nró  Nsð  GIð  DFð  CØ
‡x�x�‚{�c—i‘i ‘m QÒ&¨#¯)©)°S·Y±YÒ*>À$Ç*Á*ÈcÏiÉiÒBWÔ_qð  sQó  `Rð  ZRÜ
�‰˜˜C  T¨(¡^°B°x±LÀÀHÁÐNÈrÓR€CÔZ\×ZhÑZhÔjl×jsÑjsÐtxð  zBñ  uCð  DEð  FHó  kIô  JL÷  JSñ  JSð  TVð  W_ñ  T`ð  abð  ceó  Jfô  gi÷  gpñ  gpð  qsð  t|ñ  q}ð  ~ð  @Bó  gCô  DF÷  DKñ  DKð  L[ð  NR÷  NXñ  NXð  L[ð  YZñ  L[ô  \`ó  Dað  jbð  ceó  [fÐTYÜ
�*‰*ò  pó  q€Eô  yQô  R`ð  adð  ejð  kxó  Ryð  zó  y@÷  yJñ  yJð  KLð  MNð  OPð  QRó  ySð  sxô  WY÷  Wañ  Wað  bcð  dpñ  bqô  rt÷  rzñ  rzó  W{ð  UVô  A÷  Iñ  Ið  JKð  LWñ  JXô  Y[÷  Ycñ  Ycó  dð  }~Ø‡w�wˆq�z�1‚}˜Ÿ™ ™
 A§G¡G¨A¡JÒ.°1·6²6¸q¿u¹u»wÀqºyÈAÏEÉEËGÔUXÐY^ÓU_ÒL_Ôi{ð  }Vó  jWð  dWØ a´°Q·]±]Ä4Ó5HÓ1IÔRUÐV[ÓR\ÔorÐst×szÑszÐ{|Ñs}Óo~ÑÐr   c                 ó.   — t        «       \  } }}}| |||dœS )N)r7   r€   Úrunsr�   )rx   )r7   rt   rÖ   r�   s       r   Útabular_inputr×   ‹   s!   € Ü&Ó(�O€A€aˆˆV°a¸qÈÐV\Ñ1]Ð*]r   )r   znp.ndarray | list[str]Úreturnútuple[np.ndarray, np.ndarray])r*   r   r+   zset[str]rØ   r   )r7   ú
np.ndarrayr8   rÚ   r9   r   rØ   rÚ   )N)r7   rÚ   r   rÚ   r   znp.ndarray | NonerØ   rÚ   )rØ   z-tuple[np.ndarray, np.ndarray, list[str], str])rØ   zdict[str, Any])r   )rŒ   rÚ   r�   rÚ   rš   rÌ   rØ   rÙ   )rØ   zlist[dict[str, Any]]) Ú__doc__Ú
__future__r   Úpathlibr   Úosr   Útypingr   Únumpyr   ÚenvironÚgetÚ__file__ÚresolveÚparentsr%   Ú
ValueErrorr	   r    r.   r:   rh   rx   r„   r†   r“   rœ   r¦   rµ   rÔ   r×   r   r   r   Ú<module>rç      s¦   ðÙ WÝ "Ý Û 	Û 	Ý Û áˆB�J‰J�N‰NÐ3±T¸(³^×5KÑ5KÓ5M×5UÑ5UÐVWÑ5XÓYÓZ×bÑbÓd€Ü *˜Ô *ó.óó3ô ó8DóWóQó	iôQó	óó@ô^r   