/*! ĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠ ĠC + edition Ġfor ĠDesktop , ĠCommunity ĠEdition . ĊĠĠĠ ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠC pl use dition ĠLimited . Ġ ĠAll Ġrights Ġreserved . ĊĠĠĠĠĊĠĠĠ ĠThe Ġauthor Ġlicenses Ġthis Ġfile Ġto ĠYou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 ĊĠĠĠ Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith ĊĠĠĠ Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĠĠĠĠĊĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ package Ġsf . and ri ans . an core util . util . text Ċ Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġorg . w 3 c . dom . Node Ċ import Ġsf . and ri ans . an core util . XML Writer Ċ import Ġsf . and ri ans . an core util . util . io . String PrintWriter Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠXml Util Ġ: ĠI Xml Util Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠENT ITIES : ĠMutable Map < String , ĠString > Ġ= ĠTreeMap () ĊĠĠĠĠĠĠĠ Ġfun Ġesc Xml ( var arg Ġcontent : ĠCharSequence ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġcontent . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠArray ( len ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġesc Xml 1 ( content [ it ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠE scape ĠXML Ġreserved Ġcharacters Ġin Ġtext Ġwithout Ġchecking Ġfor Ġxml Entity Ref . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġesc Xml 1 ( value : ĠCharSequence ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġesc Xml 1 ( ret , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġesc Xml 1 ( ret : ĠStringBuilder , Ġvalue : ĠCharSequence ?): ĠStringBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġvalue . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġvalue [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'& ' Ġ-> Ġret . append ("& amp ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġret . append ("& lt ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' >' Ġ-> Ġret . append ("& gt ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'"' Ġ-> Ġret . append ("& quot ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\'' Ġ-> Ġret . append (" &# 3 9 ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġret . append ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġesc Xml 1 ( ret : ĠString PrintWriter , Ġvalue : ĠCharSequence ?): ĠString PrintWriter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġvalue . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġvalue [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'& ' Ġ-> Ġret . append ("& amp ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'< ' Ġ-> Ġret . append ("& lt ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' >' Ġ-> Ġret . append ("& gt ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'"' Ġ-> Ġret . append ("& quot ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\'' Ġ-> Ġret . append (" &# 3 9 ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġret . append ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠE scape ĠXML Ġreserved Ġcharacters Ġin Ġtext Ġwithout Ġchecking Ġfor Ġxml Entity Ref . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġun esc Xml ( value : ĠCharSequence ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġun esc Xml ( StringBuilder (), Ġvalue ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġun esc Xml 1 ( value : ĠCharSequence ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun esc Xml ( StringBuilder (), Ġvalue ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġun esc Xml ( ret : ĠStringBuilder , Ġvalue : ĠCharSequence ): ĠStringBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġint ArrayOf ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġvalue . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( start [ 0 ] Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( un esc entity ( ret , Ġvalue , Ġstart , Ġend )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" ASSERT : ĠShould Ġnot Ġhappen ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( value [ start [ 0 ] ++ ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġun esc Xml ( ret : ĠString PrintWriter , Ġvalue : ĠCharSequence ): ĠString PrintWriter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġint ArrayOf ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġvalue . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( start [ 0 ] Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( un esc entity ( ret , Ġvalue , Ġstart , Ġend )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" ASSERT : ĠShould Ġnot Ġhappen ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( value [ start [ 0 ] ++ ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġs print ( node : ĠNode , Ġindent : ĠString , Ġtab : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠXML Writer ( String PrintWriter (), Ġindent , Ġtab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs print ( w , Ġnode , Ġindent , Ġtab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġw . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġs print ( w : ĠXML Writer , Ġnode : ĠNode , Ġindent : ĠString , Ġtab : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( node . nodeType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode . ELEMENT _ NODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelm Ġ= Ġnode Ġas ĠElement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= Ġelm . attributes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < String , ĠString ?> Ġ= ĠTreeMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġattrs . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġattrs . item ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġn . nodeName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ name ] Ġ= Ġelm . getAttribute ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . has Child Nodes ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . start ( node . getNode Name (), Ġmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . lb 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġnode . getChild Nodes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġchildren . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs print ( w , Ġchildren . item ( i ), Ġindent Ġ+ Ġtab , Ġtab ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . lb 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . end () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . lb 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . empty ( node . getNode Name (), Ġmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode . TEXT _ NODE Ġ-> Ġw . esc ( node . node Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode . CDATA _ SECTION _ NODE Ġ-> Ġw . cdata ( esc Xml 1 ( node . node Value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode . COMMENT _ NODE Ġ-> Ġw . comment ( esc Xml 1 ( node . node Value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġw . comment (" Unknown Ġnode Ġtype : Ġ" Ġ+ Ġnode . nodeType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġun esc entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret : ĠAppend able , Ġvalue : ĠCharSequence , Ġstart : ĠInt Array , Ġend : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġstart [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ+ Ġ 1 Ġ< Ġend Ġ&& Ġvalue [ s ] Ġ== Ġ'& ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value [ s Ġ+ Ġ 1 ] Ġ== Ġ'# ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ+ Ġ 2 Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġvalue [ s Ġ+ Ġ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ' x ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun es che x ( ret , Ġvalue , Ġstart , Ġend ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ>= Ġ' 0 ' Ġ&& Ġc Ġ<= Ġ' 9 ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun esc dec ( ret , Ġvalue , Ġstart , Ġend ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue 1 ) Ġin ĠENT ITIES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( look ahead ( value , Ġs Ġ+ Ġ 1 , Ġend , Ġkey )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( value 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart [ 0 ] Ġ+= Ġkey . length Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġun esc dec ( ret : ĠAppend able , Ġvalue : ĠCharSequence , Ġstart : ĠInt Array , Ġend : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġstart [ 0 ] Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn Ġ= Ġvalue [ s ] Ġ- Ġ' 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(++ s Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġvalue [ s ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ'; ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ>= Ġ' 0 ' Ġ&& Ġc Ġ<= Ġ' 9 ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Ġ= Ġn Ġ* Ġ 1 0 Ġ+ Ġ( c Ġ- Ġ' 0 ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n Ġ< Ġ 0 Ġ|| Ġn Ġ> ĠCharacter . MAX _ CODE _ POINT Ġ|| Ġ! Character . isValid Code Point ( n )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart [ 0 ] Ġ= Ġs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( n . to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġun es che x ( ret : ĠAppend able , Ġvalue : ĠCharSequence , Ġstart : ĠInt Array , Ġend : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġstart [ 0 ] Ġ+ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ>= Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( s Ġ< Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġvalue [ s ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ>= Ġ' 0 ' Ġ&& Ġc Ġ<= Ġ' 9 ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Ġ= Ġ( n Ġshl Ġ 4 ) Ġ+ Ġ( c Ġ- Ġ' 0 ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( c Ġ>= Ġ' a ' Ġ&& Ġc Ġ<= Ġ' f ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Ġ= Ġ( n Ġshl Ġ 4 ) Ġ+ Ġ( 1 0 Ġ+ Ġc . toInt () Ġ- Ġ' a '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( c Ġ>= Ġ' A ' Ġ&& Ġc Ġ<= Ġ' F ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Ġ= Ġ( n Ġshl Ġ 4 ) Ġ+ Ġ( 1 0 Ġ+ Ġc . toInt () Ġ- Ġ' A '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( c Ġ== Ġ'; ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n Ġ< Ġ 0 Ġ|| Ġn Ġ> ĠCharacter . MAX _ CODE _ POINT Ġ|| Ġ! Character . isValid Code Point ( n )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart [ 0 ] Ġ= Ġs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . append ( n . to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlook ahead ( value : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt , Ġkey : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġkey . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Ġ+ Ġi Ġ>= Ġend Ġ|| Ġvalue [ start Ġ+ Ġi ] Ġ!= Ġkey [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENT ITIES [" amp ; "] Ġ= Ġ"& " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENT ITIES [" quot ; "] Ġ= Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENT ITIES [" apos ; "] Ġ= Ġ"'" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENT ITIES [" lt ; "] Ġ= Ġ"< " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENT ITIES [" gt ; "] Ġ= Ġ" >" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAttribute ( private Ġval Ġname : ĠString , Ġprivate Ġval Ġvalue : ĠString ?) Ġ: ĠI Attribute Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġname (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġesc Attr ( source : ĠCharSequence ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġesc Xml 1 ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquote Attr ( value : ĠCharSequence ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠString PrintWriter (( value ?. length Ġ?: Ġ 1 ) Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġbuf . append ('" ') ĊĠĠĠĠĠĠĠ Ġesc Xml 1 ( buf , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġbuf . append ('" ') ĊĠĠĠĠĠĠĠ Ġreturn Ġbuf . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġesc Text ( source : ĠCharSequence ?, Ġpre serves pace : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġesc Xml 1 ( source ) ĊĠĠĠ Ġ} Ċ } Ċ