From c1fb8923334f9218fd0e84d21e3ef23aac779c5e Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Sun, 17 Jul 2022 13:04:43 -0700 Subject: [PATCH] fix to HCFILES to pick up sketch files; bug fix sketch (#840) * fix to HCFILES to pick up sketch files; bug fix sketch * redo HCFILES patch to pick up .SKETCH and .TXT files --- internal/MEDLEY-UTILS | 19 ++++--- internal/MEDLEY-UTILS.LCOM | Bin 10337 -> 10391 bytes library/SKETCHOBJ | 101 ++++++++++++++++++------------------- library/SKETCHOBJ.LCOM | Bin 14323 -> 14327 bytes 4 files changed, 61 insertions(+), 59 deletions(-) diff --git a/internal/MEDLEY-UTILS b/internal/MEDLEY-UTILS index 5efe755e..0e8988d7 100644 --- a/internal/MEDLEY-UTILS +++ b/internal/MEDLEY-UTILS @@ -1,10 +1,10 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) -(FILECREATED "16-Jul-2022 22:08:34" |{DSK}larry>medley>internal>MEDLEY-UTILS.;2| 15771 +(FILECREATED "17-Jul-2022 12:44:56" |{DSK}larry>medley>internal>MEDLEY-UTILS.;9| 15959 - :CHANGES-TO (FNS MAKE-FULLER-DB) + :CHANGES-TO (FNS HCFILES) - :PREVIOUS-DATE "25-Jun-2022 17:17:53" |{DSK}larry>medley>internal>MEDLEY-UTILS.;1|) + :PREVIOUS-DATE "16-Jul-2022 22:08:34" |{DSK}larry>medley>internal>MEDLEY-UTILS.;8|) (PRETTYCOMPRINT MEDLEY-UTILSCOMS) @@ -203,7 +203,8 @@ (DEFINEQ (HCFILES - (LAMBDA (TFILE DEST REDOFLG TOPDIRLEN) (* \; "Edited 21-Jun-2022 22:59 by larry") + (LAMBDA (TFILE DEST REDOFLG TOPDIRLEN) (* \; "Edited 17-Jul-2022 12:44 by larry") + (* \; "Edited 21-Jun-2022 22:59 by larry") (* \; "Edited 31-May-2022 09:31 by larry") (* \; "Edited 20-Feb-2022 12:16 by larry") (* \; "Edited 21-Aug-2021 20:56 by larry") @@ -224,7 +225,9 @@ (* |;;| "first deal with files in this directory") - (|for| X |in| (DIRECTORY (CONCAT TFILE "*.TED*;")) |do| (HCFILES X DEST REDOFLG TOPDIRLEN)) + (FOR EXT IN '("TED*" "SKETCH" "T*XT") + DO (|for| X |in| (DIRECTORY (CONCAT TFILE "*." EXT ";*")) + |do| (HCFILES X DEST REDOFLG TOPDIRLEN))) (* |;;| " then deal with subdirs ") @@ -289,7 +292,7 @@ (DEFCOMMAND "pick" (FIRST . REST) (PICK FIRST REST)) (DECLARE\: DONTCOPY - (FILEMAP (NIL (734 8709 (GATHER-INFO 744 . 6154) (MAKE-FULLER-DB 6156 . 6846) (MEDLEY-FIX-LINKS 6848 - . 7245) (MEDLEY-FIX-DATES 7247 . 7489) (PICK 7491 . 8707)) (9748 11541 (MAKE-EXPORTS-ALL 9758 . 10717 -) (MAKE-WHEREIS-HASH 10719 . 11539)) (11576 15641 (HCFILES 11586 . 15326) (BADFILE 15328 . 15639))))) + (FILEMAP (NIL (727 8702 (GATHER-INFO 737 . 6147) (MAKE-FULLER-DB 6149 . 6839) (MEDLEY-FIX-LINKS 6841 + . 7238) (MEDLEY-FIX-DATES 7240 . 7482) (PICK 7484 . 8700)) (9741 11534 (MAKE-EXPORTS-ALL 9751 . 10710 +) (MAKE-WHEREIS-HASH 10712 . 11532)) (11569 15829 (HCFILES 11579 . 15514) (BADFILE 15516 . 15827))))) STOP diff --git a/internal/MEDLEY-UTILS.LCOM b/internal/MEDLEY-UTILS.LCOM index a9a140aaccdc012b9ec9458ae19d14813900acd2..f1fdba30b9558bd1a72347ec8136dc9d18236011 100644 GIT binary patch delta 1529 zcmZ8h&u`pB6kaE#Z4#)mn*;OlA>Ka{8oldFyU`{BL*eTo_yCLWT5+qEYK>Al%{> zOfEZZ+rQ<;wIqPWmLEf&zXZ!+gmL1CH(G|CbHj8zn1<aEv2lKR%NFx+t)K*hJKrkDW2VMBsViQ ze)`{T*8VY!pBzP&%j0X~rx$jomEWXBx%}Gt_~}Bg@@S?brGD%bDrakBcTWCNKB)`` zq{hSDlc(!rAE$Q~uFqZccQV;`%gUt@x}1K$06S@L<%G#W*#y&jW6sn2FQ!H=ULt8C zxFQJ|oJ&b;Z}px%JPW4ZxSVB{%ae`McY=zv`Dh`iq;FM)Qc1(=yz*wcS8Y`*J!$ex ziVpFrjQ(^MqyMaGgIU>~E-ea!g0mjPZtDXOg5%*vVdR0}Cg9&EAeez<(@W~DAnMvl zy=_NLCkStYAPj=g^H$+(`+$QUhll8JYUB_$h z`L{qvT_^AzI{`ft#t;Mq;*Ca(ln}7t4@r@eGL0H$J}@}1Nbwl*t*4ki+CLnZc903y zRM060HH;D91yH?E1u8U9_xo`8;PYL$*W261Bw}f>sIH(9b!Dr!f3LryF5xCKP;cNM zKGN#V3=n|?1`$oia4aPx)wts(P8&gTV>3~gCIO2?J({|I@czMJCV!|tuBq(e|8MSC Ae*gdg delta 1489 zcmZWp&u<$=6!toy5Cf5&P=Qp3J{A>{N^5q0><=5sWW8QD8{50f?gmnUL`&l~7Qv2^ z6bT8*;)pdg|7UXen_J`ar$rqP`(fUv<3t~teU+zdHDYs!Y>}P~+ zIX^f4^Knk8ly~RG^Sedq$27WBns3jI%l)N$%bRJEZ#J{|GdF+z^f&3`qIH)Odgak>)z9Xom!^!6k9v} zzfR8l#b=)q?ow%?F@D7_rh4v`{bEvC(N~K7RKi(5H46dLZ5P+yelGcRr8Q%u8=J5v zwD*=U#~&-IvXn*@bE`Vn!S48x(|QARChjf_LKh(goIL_MC5iRo^CQhP!4Dko+~sO! zM$!y*O4oFfAzq!KnT^hD1REnQppneWt0r`vZo>(Io7Jf-gd7Wx9;wU?GgHd3i6@D; zp2^`_CWkXNBT^$H5FU0%a8S3$mtPL<lde>lispcore>library>SKETCHOBJ.;2 55463 +(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - changes to%: (RECORDS SKETCHIMAGEOBJ SKETCHDOCUMENTINFO LOCALSKIMAGEOBJ SKIMAGEOBJ ANNO) +(FILECREATED "15-Jul-2022 14:33:25" {DSK}larry>winhome>DROPBOX>TEDIT-VERSIONS>SKETCHOBJ.;1 55347 - previous date%: "12-Jun-90 15:07:54" {DSK}lde>lispcore>library>SKETCHOBJ.;1) + :CHANGES-TO (FNS SKETCH.DISPLAYFN) + + :PREVIOUS-DATE "20-Jan-93 14:48:59" {DSK}larry>medley>library>SKETCHOBJ.;1) (* ; " -Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporation. All rights reserved. +Copyright (c) 1984-1988, 1990, 1993 by Venue & Xerox Corporation. ") (PRETTYCOMPRINT SKETCHOBJCOMS) @@ -105,9 +106,10 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat SKETCHIMAGEFNS]) (SKETCH.DISPLAYFN - [LAMBDA (SKETCHIMAGEOBJ STREAM) (* ; "Edited 27-Feb-87 18:15 by rrb") - - (* * display function for a sketch image object) + [LAMBDA (SKETCHIMAGEOBJ STREAM) (* ; "Edited 15-Jul-2022 14:30 by larry") + (* ; "Edited 27-Feb-87 18:15 by rrb") + + (* * display function for a sketch image object) (PROG ((SKIO (IMAGEOBJPROP SKETCHIMAGEOBJ 'OBJECTDATUM)) REGION TYPE) @@ -119,9 +121,9 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat (BITBLT [COND ((fetch (SKETCHIMAGEOBJ SKIO.LOCALSPECS) of SKIO)) (T - - (* SKIO.LOCALSPECS is used to cache the local bitmap of the sketch as it is - being display now.) + + (* SKIO.LOCALSPECS is used to cache the local bitmap of the sketch as it is being + display now.) (replace (SKETCHIMAGEOBJ SKIO.LOCALSPECS) of SKIO with (SKETCH.BITMAP.IMAGE (fetch (SKETCHIMAGEOBJ SKIO.SKETCH) @@ -133,9 +135,9 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat (T (PROG ((SKSCALE (fetch (SKETCHIMAGEOBJ SKIO.SCALE) of SKIO)) (STRMSCALE (DSPSCALE NIL STREAM)) SKTOSTRMSCALE SKXOFFSET SKYOFFSET) - - (* the TRANSLATE.SKETCH is to move the sketch to the right place on the page. - When all streams support tranlation, this should be taken out.) + + (* the TRANSLATE.SKETCH is to move the sketch to the right place on the page. + When all streams support tranlation, this should be taken out.) (SETQ SKTOSTRMSCALE (QUOTIENT SKSCALE STRMSCALE)) (SETQ SKXOFFSET (DIFFERENCE (TIMES (DSPXPOSITION NIL STREAM) @@ -144,23 +146,22 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat (SETQ SKYOFFSET (DIFFERENCE (TIMES (DSPYPOSITION NIL STREAM) SKTOSTRMSCALE) (fetch (REGION BOTTOM) of REGION))) - - (* save and restore the font as Tedit assumes that it is preserved over the - call.) + + (* save and restore the font as Tedit assumes that it is preserved over the call.) (RETURN (DSPFONT (PROG1 (DSPFONT NIL STREAM) - (DRAW.LOCAL.SKETCH - (MAKE.LOCAL.SKETCH (TRANSLATE.SKETCH - (COPY (fetch (SKETCHIMAGEOBJ - SKIO.SKETCH) - of SKIO)) - (IMINUS SKXOFFSET) - (IMINUS SKYOFFSET)) - (SETQ REGION (TRANSLATE.REGION REGION SKXOFFSET - SKYOFFSET)) - SKTOSTRMSCALE STREAM) - STREAM - (SK.SCALE.REGION REGION SKTOSTRMSCALE))) + (DRAW.LOCAL.SKETCH + (MAKE.LOCAL.SKETCH (TRANSLATE.SKETCH + (COPY (fetch (SKETCHIMAGEOBJ + SKIO.SKETCH) + of SKIO)) + (IMINUS SKXOFFSET) + (IMINUS SKYOFFSET)) + (SETQ REGION (TRANSLATE.REGION REGION SKXOFFSET + SKYOFFSET)) + SKTOSTRMSCALE STREAM T) + STREAM + (SK.SCALE.REGION REGION SKTOSTRMSCALE))) STREAM]) (SKETCH.BITMAP.IMAGE @@ -935,14 +936,12 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat (DECLARE%: EVAL@COMPILE (RECORD LOCALSKIMAGEOBJ ((SKIMOBJLOCALPOS) - LOCALHOTREGION SKIMOBJLOCALSCALE SKIMOBJLOCALREGION - SKIMOBJLOCALOFFSETPOS)) + LOCALHOTREGION SKIMOBJLOCALSCALE SKIMOBJLOCALREGION SKIMOBJLOCALOFFSETPOS)) (TYPERECORD SKIMAGEOBJ (SKIMAGEOBJ SKIMOBJ.GLOBALREGION SKIMOBJ.ORIGSCALE SKIMOBJ.OFFSETPOS)) -(DATATYPE ANNO (ANNO\SUBSTANCE ANNO\ID ANNO\WINDOW ANNO\DATE ANNO\PARENTS ANNO\NEXTSUBID - ANNO\TYPE ANNO\SUMMARIZED\IN ANNO\UPDATE\DATE ANNO\CREATE\BY ANNO\UPDATE\BY - ANNO\FONT)) +(DATATYPE ANNO (ANNO\SUBSTANCE ANNO\ID ANNO\WINDOW ANNO\DATE ANNO\PARENTS ANNO\NEXTSUBID ANNO\TYPE + ANNO\SUMMARIZED\IN ANNO\UPDATE\DATE ANNO\CREATE\BY ANNO\UPDATE\BY ANNO\FONT)) ) (/DECLAREDATATYPE 'ANNO '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER @@ -964,21 +963,21 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990, 1993 by Venue & Xerox Corporat (CREATE.SKIMAGEOBJ.TYPE) (PUTPROPS SKETCHOBJ COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1986 1987 1988 1990 1993)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2157 31523 (MAKE.IMAGE.OBJECT.OF.SKETCH 2167 . 3331) (SK.ELEMENT.FROM.IMAGEOBJ 3333 . -3632) (SKETCHIMAGEOBJ.FROM.VIEWER 3634 . 4046) (SKETCH.IMAGEOBJ 4048 . 4884) (SKETCH.DISPLAYFN 4886 . -8497) (SKETCH.BITMAP.IMAGE 8499 . 10170) (SKIO.IMAGEBOXFN 10172 . 12177) (SKIO.GETFN.2 12179 . 13648) -(SKIO.UPDATE.FROM.OLD.FORM 13650 . 14334) (SKIO.GETFN 14336 . 14854) (SKIO.PUTFN 14856 . 15853) ( -SKIO.COPYFN 15855 . 16557) (SKIO.BUTTONEVENTINFN 16559 . 21616) (TRANSLATE.REGION 21618 . 22147) ( -UPDATE.IMAGE.IN.DOCUMENT 22149 . 24668) (SK.COPY.IMAGEOBJ 24670 . 26341) (COPY.IMAGE.OBJECT 26343 . -26880) (\CREATE.SKETCH.IMAGEFNS 26882 . 28019) (\SKIO.IN.TOO.SMALL.TEDITP 28021 . 28713) ( -SKETCH.VIEWER.GRID 28715 . 30012) (SKETCH.VIEWER.SCALE 30014 . 31521)) (31886 39876 ( -SKETCH.IMAGE.OBJECT.ELEMENT 31896 . 32309) (SKETCH.IMAGEOBJ.OF.ELEMENT 32311 . 32637) ( -SKETCH.SCALE.OF.ELEMENT 32639 . 33067) (SKETCH.POSITION.OF.ELEMENT 33069 . 33716) ( -CREATE.SKIMAGEOBJ.TYPE 33718 . 34643) (IMAGEBOXSIZE 34645 . 34996) (SK.UPDATE.IMAGEOBJECT.AFTER.CHANGE - 34998 . 37125) (SKETCH.CREATE.IMAGE.OBJECT 37127 . 37849) (SKETCH.CREATE.IMAGE.OBJECT1 37851 . 39874) -) (39877 54282 (SK.IMAGEOBJ.DRAWFN 39887 . 41559) (SK.IMAGEOBJ.REGIONFN 41561 . 41986) ( -SK.IMAGEOBJ.GLOBALREGIONFN 41988 . 42389) (SK.IMAGEOBJ.TRANSLATEFN 42391 . 44674) ( -SK.IMAGEOBJ.EXPANDFN 44676 . 46862) (SK.IMAGEOBJ.INSIDEFN 46864 . 47398) (SK.IMAGEOBJ.MOVEFN 47400 . -49631) (SK.IMAGEOBJ.CHANGEFN 49633 . 52708) (SK.IMAGEOBJ.READCHANGEFN 52710 . 52939) ( -SK.IMAGEOBJ.TRANSFORMFN 52941 . 54280))))) + (FILEMAP (NIL (2084 31471 (MAKE.IMAGE.OBJECT.OF.SKETCH 2094 . 3258) (SK.ELEMENT.FROM.IMAGEOBJ 3260 . +3559) (SKETCHIMAGEOBJ.FROM.VIEWER 3561 . 3973) (SKETCH.IMAGEOBJ 3975 . 4811) (SKETCH.DISPLAYFN 4813 . +8445) (SKETCH.BITMAP.IMAGE 8447 . 10118) (SKIO.IMAGEBOXFN 10120 . 12125) (SKIO.GETFN.2 12127 . 13596) +(SKIO.UPDATE.FROM.OLD.FORM 13598 . 14282) (SKIO.GETFN 14284 . 14802) (SKIO.PUTFN 14804 . 15801) ( +SKIO.COPYFN 15803 . 16505) (SKIO.BUTTONEVENTINFN 16507 . 21564) (TRANSLATE.REGION 21566 . 22095) ( +UPDATE.IMAGE.IN.DOCUMENT 22097 . 24616) (SK.COPY.IMAGEOBJ 24618 . 26289) (COPY.IMAGE.OBJECT 26291 . +26828) (\CREATE.SKETCH.IMAGEFNS 26830 . 27967) (\SKIO.IN.TOO.SMALL.TEDITP 27969 . 28661) ( +SKETCH.VIEWER.GRID 28663 . 29960) (SKETCH.VIEWER.SCALE 29962 . 31469)) (31834 39824 ( +SKETCH.IMAGE.OBJECT.ELEMENT 31844 . 32257) (SKETCH.IMAGEOBJ.OF.ELEMENT 32259 . 32585) ( +SKETCH.SCALE.OF.ELEMENT 32587 . 33015) (SKETCH.POSITION.OF.ELEMENT 33017 . 33664) ( +CREATE.SKIMAGEOBJ.TYPE 33666 . 34591) (IMAGEBOXSIZE 34593 . 34944) (SK.UPDATE.IMAGEOBJECT.AFTER.CHANGE + 34946 . 37073) (SKETCH.CREATE.IMAGE.OBJECT 37075 . 37797) (SKETCH.CREATE.IMAGE.OBJECT1 37799 . 39822) +) (39825 54230 (SK.IMAGEOBJ.DRAWFN 39835 . 41507) (SK.IMAGEOBJ.REGIONFN 41509 . 41934) ( +SK.IMAGEOBJ.GLOBALREGIONFN 41936 . 42337) (SK.IMAGEOBJ.TRANSLATEFN 42339 . 44622) ( +SK.IMAGEOBJ.EXPANDFN 44624 . 46810) (SK.IMAGEOBJ.INSIDEFN 46812 . 47346) (SK.IMAGEOBJ.MOVEFN 47348 . +49579) (SK.IMAGEOBJ.CHANGEFN 49581 . 52656) (SK.IMAGEOBJ.READCHANGEFN 52658 . 52887) ( +SK.IMAGEOBJ.TRANSFORMFN 52889 . 54228))))) STOP diff --git a/library/SKETCHOBJ.LCOM b/library/SKETCHOBJ.LCOM index 8ca8b622f90574489ce1cd00b7c73cea81c3ab78..6ffeb73628c138365b9429669f0e64740b2fa689 100644 GIT binary patch delta 2135 zcmZ`(OKcNY6t(l=Gbtp2eC#-hUna3L20WRM$1w(lOgwMQB=(FoGfw!l4W9&v2!uwZ z6jcbMigr;U8Vw87MY`y&sG=xsHx&(lB)k^_JA!gqp{QHB1-V1;Z(^OReE;W2%FZC?pt$ zBhEP+t1i|ME2fjrovxVU(BNAw<}PacXDb0^ES@I1t2jq>=|n>df%@-5M(@YU95p2UF~PWw5v1g zZq|Bj5!xtU?)vwF;QluwMhSWlCWUQSlq$Gr-K?Nq+0_&c#u!dPKp)Pza9!mhv`m@= z?>u&Olb2|NZ@zH1R!bGSD1vhvPD7~&8+L7eGK$9FjYq2&cVpvG@C!G;+(J{A%8;5m zz1{rD!2d$XStXDZb)0Uw*!Da}Z&#$9cHY{0wGPUBxcLs)#kTnl#|{78gFwdxltHwy3fJB}Aw=2ywCgyy_C>DJ$eWQKc>FbT zn`1axMlRmt!aY^*hfF3vY2Ybr^Lg9QC`Vs)KdNIm@1tlKB7f`Y1N*3_GsvuT_Ff>3 zT#fRLAd2Db-n|}@{EK=zWZrsosdl}~s29H7L}9XWOQq@7_-MuADLvQpg1Go~~OTaDkE1Q^#6G+rC_Emj8>qn!JU?5O8x`s^A zw+-~Kt~D4KRp;w=H*ahSknO;U67uI3DfH;`IUUO{U z>Q7OCv=sXR>`dHh0@fgZWt6;I@eV-!Q#?XY-yf`wWmKjz^kgnp%X5Gue4OX{Yp-sw z)%*U2`xCxhPsDrZ^gI?4kN1>RQ}dPoPvTB3`pYdL2>NA9F6t8uGJH&J(VE2mbno2C z5`fd&LeJ!Uneyxyi06&lne@2K%4+uX)2LGfqLLRI7g|j&`q{Pt#D=1 zbjvRKplA4xVO+%w#QW%|+_@pbNPcJ%?D7!VY>$SHfIT8ifxRV^!M2Hq!M-leg8g0G z3w9YrJVzQQCy97B%7?%nlWnko*Sjm{;nbaqfPGga^0!lQuxC@#VX||IAccYj+tt!_ z2fHQ9Nx&+-pLz*=EQM5CQHo%LX_Ea^I^N3*wxOK9jz+-gALO5LX($RAD3NjEm=uoQV+LU2)kbX z;cl9h`!>%ZVPs$pNK#OQaju?a3|#$(A+a{}lvGs0!Sq;Y9&NH+~6L=>Cfa)uhQuWgxx z&YG$MplZ1;e4Yjc2yE`VFMk0-^5IWYljwjaE{1V`D^9jITo38+V)Y8=iggH#( zDXDzl@-sNx+S%>FojVRi?ULTMc@8zxtQbL{(Iko>(oSK*_S+sWB)I4~3Rvk~CENXT zTXC>od2iIytRx{zJ7B?fNX+@xCh-2a^=||!6^klGg7nn>P(-k=`r3AuR64F}6Iz-G ztUzq-kG6Mk$0vOp;3qympigWiJN?CX&Kb}i(c4ovz9eFKq$M@{5CntBwZ-LfQ3Gzu zP1U*Z1>!%f&szw$^%G*89CiM7F!lOX$Asjj3NoS#{tsXS3e%4HSRKl9bm0jAk>V>S zKJRxRe?8@Lxd(2R-*m&*KrH9pUt9BJIjxC~#jT_ywfBW&Eyh5$Hx!le_s+vUZ~A9fe-^E0NAj4{jx zoC5t!@d-N3b~x5gSv;#-?0vwsU>A|Vy&$OBeiU4H{7y;5oImV}`%04rS(e^uE@h5u zB|-zwGgKSRhIt}7ML`q$H3NI734_RJr3W9(Y7d8*uZL7pxR!%kuzR=`r*M+P1ZTOc zaCkxl^j4}!^7QoL#g6oj177NV6|jtd4e)h-0`O~o46sF*27F7%0{$o*1l%Ly?@J=~ ztd^z#b5a`chJ-U9+3TiRxQ=EwsA*j80^3RXFyK8IUN`%p{4!uh!C607Qh*hGI8&~G V-}GU7I6R1RphAEhK1?2=e*ha>7wrH5