+
    –šjÃ  ã                   óB  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ]	! R4      t]R,          t]R,          t]R,          tR tR tR	 tR
 tR tR t]R8X  d    ]! ]! 4       4      hR#   ] d#   t]! R]]P4                  R7       ]! ^4      hRtAii ; i)é    N)ÚPathÚPurePosixPathz$/opt/rpgmultiplayer/updates/chaapaaiÚversionszlatest.jsonÚstagingc                 ó   € \        V 4      h)N)ÚRuntimeError)Úmessages   &Ú</opt/rpgmultiplayer/updates/chaapaai/tools/publish_staged.pyÚfailr      s   € Ü
�wÓ
Ðó    c                 ó&  a€ \         P                  ! 4       pV P                  R 4      ;_uu_ 4       o\        V3R lR4       F  pVP	                  V4       K  	  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)Úrbc                  ó&   <€ S P                  R4      # )i   é   )Úread)Úfs   €r
   Ú<lambda>Úsha256_file.<locals>.<lambda>   s   ø€  !§&¡&¨Ô"5r   r   N)ÚhashlibÚsha256ÚopenÚiterÚupdateÚ	hexdigest)ÚpathÚhÚchunkr   s   &  @r
   Úsha256_filer      sd   ø€ Ü�ŠÓ€AØ	�‰�4�Œ˜AÜÔ5°sÖ;ˆEØ�H‰H�UŽOñ <÷ 
ð �;‰;‹=Ð÷ 
Žð �;‰;‹=Ðús   °)A1Á1B	c                 óN   € \         P                  ! V P                  R R7      4      # )úutf-8)Úencoding)ÚjsonÚloadsÚ	read_text)r   s   &r
   Ú	read_jsonr%      s   € Ü�:Š:�d—n‘n¨g�nÓ6Ó7Ð7r   c                 ó  € \        V 4      P                  R R4      p \        V 4      pV '       d?   V P                  R4      '       g(   VP	                  4       '       g   RVP
                  9   d   \        RV  24       VP                  4       # )Ú\Ú/ú..zUngueltiger Release-Pfad: )ÚstrÚreplacer   Ú
startswithÚis_absoluteÚpartsr   Úas_posix)ÚrawÚps   & r
   Úsafe_rel_pathr2   "   sc   € Ü
ˆc‹(×
Ñ
˜4 Ó
%€CÜ�cÓ€Aß�#—.‘. ×%Ò%¨¯©¯ª¸DÀAÇGÁG¼OÜÐ)¨#¨Ð/Ô0Ø�:‰:‹<Ðr   c           	      ó”  € V P                   P                  R R R7       \        P                  ! V P                  R,           R\        V P                   4      R7      w  r# \        P                  ! VRRRR7      ;_uu_ 4       p\        P                  ! W^R R	7       VP                  R4       VP                  4        \        P                  ! VP                  4       4       R
R
R
4       \        P                  ! W04       R
#   + '       g   i     L(; i  \         d+     \        P                   ! T4       h   \"         d     h i ; ii ; i)T©ÚparentsÚexist_okÚ.z.tmp)ÚprefixÚsuffixÚdirÚwr    Ú
)r!   Únewline)ÚindentÚensure_asciiN)ÚparentÚmkdirÚtempfileÚmkstempÚnamer*   ÚosÚfdopenr"   ÚdumpÚwriteÚflushÚfsyncÚfilenor+   Ú	ExceptionÚunlinkÚOSError)r   ÚdataÚfdÚ	temp_namer   s   &&   r
   Úatomic_write_jsonrR   *   sñ   € Ø‡K�K×Ñ˜d¨TÐÔ2Ü×$Ò$¨D¯I©I¸­OÀFÔPSÐTX×T_ÑT_ÓP`Ôa�M€BðÜ�YŠY�r˜3¨¸$×?Õ?À1Ü�IŠI�d a°dÕ;Ø�G‰G�DŒMØ�G‰GŒIÜ�HŠH�Q—X‘X“ZÔ ÷	 @ô
 	�
Š
�9Ö#÷ @×?ûô ô ð	Ü�IŠI�iÔ ð 	øô ô 	ØØð	úðúsI   Á"D Â AC?ÃD Ã?D	Ä
D ÄEÄD5Ä4EÄ5EÅ EÅEÅEc                  ó  € \        \        P                  4      ^8w  g   \        P                  ^,          R8w  d   \        R\        P                  R7       ^# \        P                  ^,          \        P                  ^,          \        P                  ^,          r!p RV 9   g   RV 9   g   V RG9   d   \        R4       VP                  R	4      '       d;   \        ;QJ d    R
 V 4       F  '       g   K   RM	  RM! R
 V 4       4      '       d   \        R4       \        V,          pVR,          pVR,          p\        V ,          p\        RV ,           R,           VRHR ,           ,          pVP                  4       '       d   \        RV  R24       VP                  4       '       d   VP                  4       '       g   \        R4       \        \        4      p\        VP                  RR4      4      P!                  4       p	W’8w  d   \        RV RV	 R24       \        V4      p
\        V
P                  R4      4      R8w  d   \        R4       \        V
P                  R4      4      V 8w  d   \        R4       \        V
P                  R4      4      V8w  d   \        R4       V
P                  R4      p\#        V\$        4      '       d	   V'       g   \        R 4       \'        V
P                  R!RI4      4      \        V4      8w  d   \        R"4       / pVP)                  4        EF  w  rÞ\+        V4      pWü9   d   \        R#V 24       \#        V\$        4      '       g   \        R$V 24       \        VP                  R%R4      4      P-                  4       p\'        VP                  R&RI4      4      p\        V4      ^@8w  g;   \        ;QJ d    R' V 4       F  '       g   K   RM	  RM! R' V 4       4      '       d   \        R(V 24       V^ 8  d   \        R)V 24       R&VR%V/WÏ&   EK  	  \        V
P                  R*R4      4      P-                  4       p\/        V4      P-                  4       V8w  d   \        R+4       VP                  4       '       d   \0        P2                  ! V4       VR,          pVP5                  RRR,7       Rp \6        P8                  ! VR-4      ;_uu_ 4       p. pVP;                  4        Fó  pVP=                  4       '       d   K  \+        VP>                  4      pVPA                  V4       Wü9  d   \        R.V 24       V\C        \E        V4      PF                  !  ,          pVPH                  P5                  RRR,7       VPK                  VR-4      ;_uu_ 4       pVPK                  R/4      ;_uu_ 4       p\0        PL                  ! VVRJR07       RRR4       RRR4       Kõ  	  RRR4       \O        X4      \O        V4      8w  dM   \Q        \O        V4      \O        V4      ,
          4      p\        R1R2PS                  VR3,          4      ,           4       VP)                  4        F¶  w  ppV\C        \E        V4      PF                  !  ,          pVP                  4       '       g   \        R4V 24       VPU                  4       PV                  VR&,          8w  d   \        R5V 24       \/        V4      P-                  4       VR%,          8w  g   K¨  \        R6V 24       K¸  	  RRRV R!\        V4      RV/p\Y        VR7,          V4       \        \        4      p\        VP                  RR4      4      P!                  4       V8w  d   \        R84       VP                  4       '       d   \        RV  R924       \Z        P\                  ! Wv4       Rp\^        P`                  ! R:4      p\b        R;V 2,          p \0        Pd                  ! \        V 4       \%        V4      p!RV!R&   V V!R&   R<V  R=2V!R>&   R<V  R?2V!R&   \Y        \        V!4       \        \        4      p"\        V"P                  R4      4      V 8w  d   \        R@4       \        RAV  RB24       \        RC\        V4       24       \        RDV  R=24       \        REV Pf                   24        \0        P2                  ! VRRF7       ^ #   + '       g   i     EL; i  + '       g   i     EK  ; i  + '       g   i     EL-; i  \h         d¿     \        \        4      p#\        T#P                  RR4      4      P!                  4       T8H  p$M  \h         d    Rp$ Mi ; iTP                  4       '       d   \0        P2                  ! TRRF7       T'       d7   T$'       d/   TP                  4       '       d   \0        P2                  ! TRRF7       h i ; i  \0        P2                  ! TRRF7       i ; i)Ké   ÚgamezDUsage: publish_staged.py game VERSION STAGE_ID EXPECTED_BASE_VERSION©Úfiler(   r'   Ú r7   zUngueltige Version.zrelease-c              3   ó*   "  € T F	  qR 9  x € K  	  R# 5i)z@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_N© ©Ú.0Úcs   & r
   Ú	<genexpr>Úmain.<locals>.<genexpr>D   s&   é € ð  2Qñ  HPð  CDÐ;}Ö2}ó  HPùó   ‚TFzUngueltige Stage-ID.zpayload.zipzstage_manifest.jsonz
.incoming-Ú-NzDie Version z existiert bereits.z!Staging-Paket ist unvollstaendig.Úversionz0Produktive Version hat sich geaendert: erwartet z
, aktuell ÚprojectÚchaapaaiz#Falsches Projekt im Stage-Manifest.z%Versionsabweichung im Stage-Manifest.Úbase_versionz*Basisversionsabweichung im Stage-Manifest.Úfilesz&Stage-Manifest enthaelt keine Dateien.Ú
file_countz,Dateizaehler im Stage-Manifest stimmt nicht.zDoppelter Dateipfad: zUngueltige Dateiinformation: r   Úsizec              3   ó*   "  € T F	  qR 9  x € K  	  R# 5i)Ú0123456789abcdefNrZ   r[   s   & r
   r^   r_   n   s   é € Ð#PÉÀAÐ-?Ö$?Ëùr`   zUngueltiger SHA-256: zUngueltige Dateigroesse: Úpayload_sha256z%SHA-256 des Staging-ZIP stimmt nicht.r4   ÚrzUnerwartete Datei im ZIP: Úwb)ÚlengthzDateien fehlen im ZIP: z, :Né
   NzDatei fehlt nach Entpacken: zDateigroesse stimmt nicht: zSHA-256 stimmt nicht: zmanifest.jsonz<latest.json wurde waehrend des Releases veraendert. Abbruch.z! wurde parallel bereits angelegt.z%Y%m%d-%H%M%Szlatest.json.bak-z	versions/z/manifest.jsonÚmanifestz/files/z-Nachkontrolle von latest.json fehlgeschlagen.zOK: Spielversion z veroeffentlicht.z	Dateien: zManifest: versions/zBackup: )Úignore_errors>   rX   r7   r)   iôÿÿÿéÿÿÿÿr   )5ÚlenÚsysÚargvÚprintÚstderrr   r,   ÚanyÚSTAGING_DIRÚVERSIONS_DIRÚexistsÚis_filer%   ÚLATEST_FILEr*   ÚgetÚstripÚ
isinstanceÚdictÚintÚitemsr2   Úlowerr   ÚshutilÚrmtreerA   ÚzipfileÚZipFileÚinfolistÚis_dirÚfilenameÚappendr   r   r.   r@   r   ÚcopyfileobjÚsetÚsortedÚjoinÚstatÚst_sizerR   rE   r+   ÚtimeÚstrftimeÚBASE_DIRÚcopy2rD   rL   )%rb   Ústage_idÚexpected_baseÚstageÚpayloadÚstage_manifest_pathÚ	final_dirÚincoming_dirÚlatest_beforeÚactual_baseÚstage_manifestrf   ÚexpectedÚraw_pathÚinfoÚrelÚdigestrh   Úexpected_payload_hashÚ	files_dirÚ	publishedÚzfÚarchive_filesÚtargetÚsrcÚdstÚmissingÚmetar   rp   Ú
latest_nowÚ	timestampÚbackupÚ
latest_newÚcheckÚlatest_checkÚ	still_olds%                                        r
   Úmainr·   <   sÿ  € Ü
Œ3�8‰8ƒ}˜ÔœSŸX™X a�[¨FÔ2ÜÐTÔ[^×[eÑ[eÕfÙä'*§x¡x°¥{´C·H±H¸QµKÄÇÁÈ!Å�}€GØ
ˆg„~˜ œ¨G°Ô,FÜÐ"Ô#Ø×Ñ˜z×*Ò*¯c«cñ  2Qñ  HPó  2Q¯c¯cªcñ  2Qñ  HPó  2Q÷  /Qò  /QÜÐ#Ô$ä˜(Õ"€EØ�mÕ#€GØÐ"7Õ7ÐÜ˜wÕ&€IÜ <°'Õ#9¸CÕ#?À(È3È4À.Õ#PÕQ€Là×Ñ×ÒÜˆ|˜G˜9Ð$7Ð8Ô9Ø�?‰?×ÒÐ$7×$?Ñ$?×$AÒ$AÜÐ0Ô1äœkÓ*€MÜ�m×'Ñ'¨	°2Ó6Ó7×=Ñ=Ó?€KØÔ#ÜÐ?À¸ÈjÐYdÐXeÐefÐgÔhäÐ2Ó3€NÜ
ˆ>×Ñ˜iÓ(Ó)¨ZÔ7ÜÐ2Ô3Ü
ˆ>×Ñ˜iÓ(Ó)¨WÔ4ÜÐ4Ô5Ü
ˆ>×Ñ˜nÓ-Ó.°-Ô?ÜÐ9Ô:à×Ñ˜wÓ'€EÜ�eœT×"Ò"¯%ÜÐ5Ô6Ü
ˆ>×Ñ˜l¨BÓ/Ó0´C¸³JÔ>ÜÐ;Ô<à€HØŸ+™+Ÿ-‰ˆÜ˜HÓ%ˆØŒ?ÜÐ(¨¨Ð.Ô/Ü˜$¤×%Ò%ÜÐ0°°Ð6Ô7Ü�T—X‘X˜h¨Ó+Ó,×2Ñ2Ó4ˆÜ�4—8‘8˜F BÓ'Ó(ˆÜˆv‹;˜"Ô§£Ñ#PÉÓ#P§§¢Ñ#PÉÓ#P× PÒ PÜÐ(¨¨Ð.Ô/Ø�!Œ8ÜÐ,¨S¨EÐ2Ô3Ø  x°Ð8ˆŒñ (ô   × 2Ñ 2Ð3CÀRÓ HÓI×OÑOÓQÐÜ�7Ó×!Ñ!Ó#Ð'<Ô<ÜÐ4Ô5à×Ñ×ÒÜ�Š�lÔ#Ø˜wÕ&€IØ‡O�O˜D¨5€OÔ1à€IðS1Ü�_Š_˜W c×*Ô*¨bØˆMØŸ™ž�Ø—;‘;—=’=ÙÜ# D§M¡MÓ2�Ø×$Ñ$ SÔ)ØÔ&ÜÐ5°c°UÐ;Ô<Ø"¤T¬=¸Ó+=×+CÑ+CÑ%DÕD�Ø—‘×#Ñ#¨D¸4Ð#Ô@Ø—W‘W˜T 3×'Ô'¨3°·±¸D×0AÔ0AÀSÜ×&Ò& s¨C¸ÕD÷ 1B×'Ñ'ñ &÷ +ô ˆ}Ó¤ X£Ô.ÜœS ›]¬S°Ó-?Õ?Ó@ˆGÜÐ*¨T¯Y©Y°w¸sµ|Ó-DÕDÔEà!Ÿ™Ö)‰IˆC�Øœt¤]°3Ó%7×%=Ñ%=Ñ>Õ>ˆDØ—<‘<—>’>ÜÐ3°C°5Ð9Ô:Ø�y‰y‹{×"Ñ" d¨6¥lÔ2ÜÐ2°3°%Ð8Ô9Ü˜4Ó ×&Ñ&Ó(¨D°­NÖ:ÜÐ-¨c¨UÐ3Ö4ñ *ð �zØ�wØœ#˜h›-Ø�Xð	
ˆô 	˜,¨Õ8¸(ÔCô œ{Ó+ˆ
Üˆz�~‰~˜i¨Ó,Ó-×3Ñ3Ó5¸ÔFÜÐOÔPØ×Ñ×ÒÜ�< ˜yÐ(IÐJÔKä
�
Š
�<Ô+Øˆ	ä—M’M /Ó2ˆ	ÜÐ.¨y¨kÐ:Õ:ˆÜ�Š”[ &Ô)ä˜*Ó%ˆ
Ø *ˆ
�9ÑØ 'ˆ
�9ÑØ#,¨W¨I°^Ð!Dˆ
�:ÑØ )¨'¨°'Ð:ˆ
�7ÑÜœ+ zÔ2ô œ+Ó&ˆÜˆu�y‰y˜Ó#Ó$¨Ô/ÜÐ@ÔAäÐ! ' Ð*;Ð<Ô=Ü�	œ#˜h›-˜Ð)Ô*ÜÐ# G 9¨NÐ;Ô<Ü�˜Ÿ™˜Ð&Ô'Øô  	�Š�e¨4×0÷O 1B×0AÐ0Aú×'×'Ñ'ú÷ +×*Ð*ûôH ô ð	Ü$¤[Ó1ˆLÜ˜L×,Ñ,¨Y¸Ó;Ó<×BÑBÓDÈÑU‰IøÜô 	ØŠIð	úà×Ñ× Ò Ü�MŠM˜,°dÕ;ßŸ y×'7Ñ'7×'9Ò'9Ü�MŠM˜)°4Õ8Øðûô 	�Š�e¨4Ö0ús¬   Ód# Ó!CdÖ#c:Ö=c&×c:×d×+D d# ÜBd# Þ&D%d# ã&c7ã1	c:ã:dä
däd 	ä	d# ä#g,ä/;e+å*g,å+e;å8g,å:e;å;g,æg,æ4g,æ<g,çg,ç,g/ ç/h	Ú__main__zFEHLER:rV   )r   r"   rE   r…   rt   rB   r“   r‡   Úpathlibr   r   r•   rz   r}   ry   r   r   r%   r2   rR   r·   Ú__name__Ú
SystemExitrL   Úexcrv   rw   rZ   r   r
   Ú<module>r½      s¶   ðã Û Û 	Û Û 
Û Û Û ß 'áÐ6Ó7€Ø˜*Õ$€Ø˜Õ&€Ø˜Õ"€ò òò8òòò$U1ðp ˆzÔðÙ™›Ó Ð ñ øð ô Ùˆi˜ 3§:¡:Õ.Ù˜‹mÐûðús   Á&A5 Á5BÁ<BÂB