/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠSand storm ĠMedia ĠGmbH Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ* ĠAuthors : Ċ Ġ* Ġ Ġ- ĠEric ĠK loss Ċ Ġ*/ Ċ Ċ package Ġio . ne os . fusion 4 j . lang . parser . afx Ċ Ċ import Ġio . ne os . fusion 4 j . lang . antlr . A fx Parser Ċ import Ġio . ne os . fusion 4 j . lang . model . F usion Path Name Ċ import Ġio . ne os . fusion 4 j . lang . model . Qualified Prototype Name Ċ import Ġio . ne os . fusion 4 j . lang . model . Relative F usion Path Name Ċ import Ġorg . antlr . v 4 . runtime . ParserRuleContext Ċ import Ġkotlin . math . max Ċ Ċ data Ġclass ĠA fx F usion Object ( ĊĠĠĠ Ġval Ġprototype Name : ĠQual ified Prototype Name , ĊĠĠĠ Ġval Ġbody Assignments : ĠList < A fx Assignment >, ĊĠĠĠ Ġval Ġcontent Values : ĠList < A fx Value >, ĊĠĠĠ Ġval Ġcollected Attributes : ĠHtml Tag Attribute Collector ?, ĊĠĠĠ Ġval Ġself Closing : ĠBoolean , ĊĠĠĠ Ġval ĠtagName : ĠString , ĊĠĠĠ Ġprivate Ġval Ġstart Context : ĠParser RuleContext , ĊĠĠĠ Ġprivate Ġval Ġend Context : ĠParser RuleContext ? Ċ ) Ġ: ĠA fx Value Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġparse Result : ĠList < ParserRuleContext > Ġ= ĠlistOf NotNull ( start Context , Ġend Context ) ĊĠĠĠ Ġval Ġexplicit KeyName : ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Optional AttributeValue ( collected Attributes ?. key Attribute ) Ġ{ Ġit Ġ} ĊĠĠĠ Ġval Ġexplicit Children Path Name : ĠRelative F usion Path Name ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Optional AttributeValue ( collected Attributes ?. children Attribute , ĠF usion Path Name :: attribute ) ĊĠĠĠ Ġval Ġexplicit Object Path Name : ĠRelative F usion Path Name ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Optional AttributeValue ( collected Attributes ?. path Attribute , ĠF usion Path Name :: attribute ) ĊĊĠĠĠ Ġval Ġclosed : ĠBoolean Ġ= Ġself Closing Ġ|| Ġend Context Ġ!= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< T > Ġget Optional AttributeValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Ctx : ĠA fx Parser . Html Attribute Context ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapper : Ġ( String ) Ġ-> ĠT ĊĠĠĠĠĠĠĠ Ġ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( attribute Ctx Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Value String Ġ= ĠA fx String . trim AttributeValue Quotes ( attribute Ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( attribute Value String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapper ( attribute Value String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart Parsed Html Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Context : ĠA fx Parser . Tag Start Context ĊĠĠĠĠĠĠĠ Ġ): ĠA fx F usion Object Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtagName Context Ġ= Ġtag Context . html TagName () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtagName Ġ= ĠtagName Context . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġself Closing Ġ= Ġtag Context . TAG _ SL ASH _ CLOSE () Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollected Attributes : ĠHtml Tag Attribute Collector Ġ= Ġtag Context . html Attribute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold Indexed ( Html Tag Attribute Collector (), ĠHtml Tag Attribute Collector :: collect Parsed Attribute ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Api Assignments Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtag Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx Assignment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx Path ( A fx F usion Api . TAG _ NAME _ ATTRIBUTE , ĠtagName Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx String . transp iled Value ( tagName , ĠtagName Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( tagName Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġself - closing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( self Closing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx Assignment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx Path ( A fx F usion Api . TAG _ SELF _ CLO SING _ ATTRIBUTE , ĠtagName Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx Boolean ( true , ĠlistOf ( tagName Context )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( tag Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Assignments Ġ= Ġcollected Attributes . html Tag Assignments () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA fx F usion Object ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA fx F usion Api . TAG _ F US ION _ OBJECT _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Api Assignments Ġ+ Ġattribute Assignments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected Attributes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself Closing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtagName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġstart Parsed Object Tag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Context : ĠA fx Parser . F usion Object Tag Start Context ĊĠĠĠĠĠĠĠ Ġ): ĠA fx F usion Object Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Prototype Name Context Ġ= Ġtag Context . fusion Object TagName () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Prototype Name Ġ= ĠQual ified Prototype Name . fromString ( tag Prototype Name Context . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġself Closing Ġ= Ġtag Context . TAG _ SL ASH _ CLOSE () Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollected Attributes : ĠHtml Tag Attribute Collector Ġ= Ġtag Context . html Attribute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold Indexed ( Html Tag Attribute Collector (), ĠHtml Tag Attribute Collector :: collect Parsed Attribute ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Assignments Ġ= Ġcollected Attributes . fusion Object Tag Assignments () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA fx F usion Object ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Prototype Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Assignments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected Attributes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself Closing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Prototype Name . qualified Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġexpect Open ( code : Ġ() Ġ-> ĠT ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( closed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠA fx Parser Error (" Could Ġnot Ġmodify Ġobject Ġ$ this Ġafter Ġclosing ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġappend Content Value ( values Mapper : Ġ( A fx Value ?, ĠList < A fx Value >) Ġ-> ĠList < A fx Value >): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġexpect Open Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Result Ġ= Ġcontent Values . last OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinished Results Ġ= Ġcontent Values . sub List ( 0 , Ġmax ( 0 , Ġcontent Values . size Ġ- Ġ 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠA fx F usion Object ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprototype Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Assignments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Mapper ( current Result , Ġfinished Results ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected Attributes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself Closing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtagName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Text Content ( fragment : ĠParser RuleContext ): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġappend Content Value Ġ{ Ġcurrent , Ġfinished Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġis ĠA fx F usion Object Ġ&& Ġ! current . closed Ġ-> Ġfinished Ġ+ Ġcurrent . append Text Content ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġis ĠA fx String Ġ-> Ġfinished Ġ+ Ġcurrent . append String ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Element Ġ= ĠA fx String . from Text Element ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Ġ+ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Element . mean ing ful ) Ġtext Element Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend A fx String ( afx String : ĠA fx String ): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġappend Content Value Ġ{ Ġcurrent , Ġfinished Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Ġ+ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa fx String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Expression Content ( fragment : ĠParser RuleContext ): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġappend Content Value Ġ{ Ġcurrent , Ġfinished Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ== Ġnull Ġ-> Ġfinished Ġ+ ĠA fx Expression Value . from Parsed Expression Value ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġis ĠA fx F usion Object Ġ&& Ġ! current . closed Ġ-> Ġfinished Ġ+ Ġcurrent . append Expression Content ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfinished Ġ+ Ġcurrent Ġ+ ĠA fx Expression Value . from Parsed Expression Value ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Inner Tag ( tag Object : ĠA fx F usion Object ): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġappend Content Value Ġ{ Ġcurrent , Ġfinished Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ== Ġnull Ġ-> Ġfinished Ġ+ Ġtag Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġis ĠA fx F usion Object Ġ&& Ġ! current . closed Ġ-> Ġfinished Ġ+ Ġcurrent . append Inner Tag ( tag Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Ġ+ Ġcurrent Ġ+ Ġtag Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Object ( fragment : ĠParser RuleContext ): ĠA fx F usion Object Ġ= ĊĠĠĠĠĠĠĠ Ġexpect Open Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġcontent Values . last OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinished Content Values Ġ= Ġcontent Values . sub List ( 0 , Ġmax ( 0 , Ġcontent Values . size Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA fx F usion Object ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprototype Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Assignments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġis ĠA fx F usion Object Ġ&& Ġ! current . closed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Content Values Ġ+ Ġcurrent . close Object ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Values , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected Attributes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself Closing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtagName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġis ĠA fx F usion Object Ġ&& Ġ! current . closed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ċ }