<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>125940</bug_id>
          
          <creation_ts>2013-12-18 12:38:40 -0800</creation_ts>
          <short_desc>Refactor CodeGeneratorJS - Move attribute function creation out of getOwnPropertyName guard</short_desc>
          <delta_ts>2013-12-18 13:05:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961060</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-18 12:38:40 -0800</bug_when>
    <thetext>Refactor CodeGeneratorJS - Move attribute function creation out of getOwnPropertyName guard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961062</commentid>
    <comment_count>1</comment_count>
      <attachid>219560</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-18 12:40:40 -0800</bug_when>
    <thetext>Created attachment 219560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961063</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-18 12:42:58 -0800</bug_when>
    <thetext>diff ignoring whitespace changes:
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 5845836..c1efc95 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,5 +1,18 @@
 2013-12-18  Oliver Hunt  &lt;oliver@apple.com&gt;
 
+        Refactor CodeGeneratorJS - Move attribute function creation out of getOwnPropertyName guard
+        https://bugs.webkit.org/show_bug.cgi?id=125940
+
+        Reviewed by NOBODY (OOPS!).
+
+        This is just a huge block move of code out from behind the
+        ImplementationOverridesGetOwnProperty guard.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+
+2013-12-18  Oliver Hunt  &lt;oliver@apple.com&gt;
+
         Simplify bindings codegen for adding getOwnPropertySlot overrides
         https://bugs.webkit.org/show_bug.cgi?id=125934
 
diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
index dfbb5bd..43bde48 100644
--- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -1874,6 +1874,7 @@ sub GenerateImplementation
             push(@implContent, &quot;}\n\n&quot;);
         }
 
+    }
     if ($numAttributes &gt; 0) {
         foreach my $attribute (@{$interface-&gt;attributes}) {
             my $name = $attribute-&gt;signature-&gt;name;
@@ -2066,7 +2067,7 @@ sub GenerateImplementation
             push(@implContent, &quot;    return JSValue::encode(${className}::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));\n&quot;);
             push(@implContent, &quot;}\n\n&quot;);
         }
-        }
+
 
         # Check if we have any writable attributes
         my $hasReadWriteProperties = 0;
@@ -2287,6 +2288,7 @@ sub GenerateImplementation
                     }
                 }
             }
+        }
 
         if ($interface-&gt;extendedAttributes-&gt;{&quot;ReplaceableConstructor&quot;}) {
             my $constructorFunctionName = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
@@ -2312,7 +2314,6 @@ sub GenerateImplementation
             push(@implContent, &quot;}\n\n&quot;);
         }
     }
-    }
 
     if ($indexedGetterFunction &amp;&amp; !$interface-&gt;extendedAttributes-&gt;{&quot;CustomEnumerateProperty&quot;}) {
         push(@implContent, &quot;void ${className}::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)\n&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961074</commentid>
    <comment_count>3</comment_count>
      <attachid>219560</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-18 13:04:13 -0800</bug_when>
    <thetext>Comment on attachment 219560
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961075</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-12-18 13:05:22 -0800</bug_when>
    <thetext>Committed r160793: &lt;http://trac.webkit.org/changeset/160793&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219560</attachid>
            <date>2013-12-18 12:40:40 -0800</date>
            <delta_ts>2013-12-18 13:04:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125940-20131218124040.patch</filename>
            <type>text/plain</type>
            <size>54531</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg0NTgzNjQxMTVmMjEx
MzU4MzQ1Yjk4NzRiNjg4NWJmYWFmMjI1NS4uYzFlZmM5NTQ1YzkyMTJkM2UyMDVkN2U1YzNkNzQz
MmU2Y2ZkZTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEzLTEyLTE4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgQ29kZUdlbmVy
YXRvckpTIC0gTW92ZSBhdHRyaWJ1dGUgZnVuY3Rpb24gY3JlYXRpb24gb3V0IG9mIGdldE93blBy
b3BlcnR5TmFtZSBndWFyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI1OTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBqdXN0IGEgaHVnZSBibG9jayBtb3ZlIG9mIGNvZGUgb3V0IGZyb20g
YmVoaW5kIHRoZQorICAgICAgICBJbXBsZW1lbnRhdGlvbk92ZXJyaWRlc0dldE93blByb3BlcnR5
IGd1YXJkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKworMjAxMy0xMi0xOCAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFNpbXBsaWZ5IGJpbmRpbmdzIGNv
ZGVnZW4gZm9yIGFkZGluZyBnZXRPd25Qcm9wZXJ0eVNsb3Qgb3ZlcnJpZGVzCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5MzQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBk
ZmJiNWJkOTFhMTdiMjE0N2FhY2NjZTE2YTAzNTRkY2I5YTU1Y2Y5Li40M2JkZTQ4MTY4Y2I5Mzk0
Y2FkMDhlZTRhMWVmZTVhZmY0YjQ5MWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTg3NCwyMDAgKzE4NzQsMjAxIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAw
KSB7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZTsKLSAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZTsKLSAgICAgICAgICAgICAgICBteSAkaXNOdWxsYWJsZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+aXNOdWxsYWJsZTsKLSAgICAgICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+
QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgICAgICBteSAkZ2V0RnVu
Y3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5hbWUpOwotCi0gICAg
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0ZUNvbmRpdGlv
bmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwotCi0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2dldEZ1bmN0aW9u
TmFtZX0oRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CisgICAgfQorICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Cisg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAg
ICAgICAgIG15ICR0eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOworICAgICAgICAg
ICAgbXkgJGlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7Cisg
ICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsK
KyAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15
ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9
IHx8ICRuYW1lKTsKIAotICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMg
fHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8JGNsYXNzTmFtZSo+KEpTVmFsdWU6OmRlY29kZShzbG90
QmFzZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0
dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3Ry
aW5nOwogCi0gICAgICAgICAgICAgICAgIyBHbG9iYWwgY29uc3RydWN0b3JzIGNhbiBiZSBkaXNh
YmxlZCBhdCBydW50aW1lLgotICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRp
bWUifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVuYWJs
ZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghJHtlbmFibGVfZnVuY3Rpb259KCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRCeVNldHRpbmcifSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2ROYW1l
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRCeVNl
dHRpbmcifSkgLiAiRW5hYmxlZCI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPmltcGwoKS5mcmFtZSgpKVxuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhp
cy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2V0dGluZ3MuJGVuYWJsZV9mdW5jdGlv
bigpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2dldEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAotICAgICAg
ICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWNoZWRBdHRyaWJ1dGUifSkgewotICAgICAgICAgICAgICAgICAgICAkbmVlZHNNYXJrQ2hp
bGRyZW4gPSAxOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghJGF0dHJpYnV0
ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3Rv
ciQvKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDwkY2xhc3NOYW1lKj4oSlNWYWx1ZTo6ZGVj
b2RlKHNsb3RCYXNlKSk7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYKLSAgICAgICAgICAgICAgICAgICAgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1
cml0eSJ9ICYmCi0gICAgICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwo
KSkpXG4iKTsKKyAgICAgICAgICAgICMgR2xvYmFsIGNvbnN0cnVjdG9ycyBjYW4gYmUgZGlzYWJs
ZWQgYXQgcnVudGltZS4KKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1
bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlv
bn0oKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkVuYWJsZWRCeVNldHRpbmcifSkgeworICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiRnJhbWUuaCIpOworICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiU2V0dGluZ3MuaCIpOworICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9u
ID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkVuYWJsZWRCeVNldHRpbmcifSkgLiAiRW5hYmxlZCI7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkp
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVk
VGhpcy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlX2Z1bmN0aW9u
KCkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0
dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpKTtcbiIpOwotICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoZXhlYywg
aW1wbC4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSA/ICIgLiBOYXRpdmVU
b0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwu
JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNOdWxsKCkp
O1xuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIi
KSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TGlzdGVuZXIuaCJ9
ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IGltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSkge1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoY29uc3Qg
SlNFdmVudExpc3RlbmVyKiBqc0xpc3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpjYXN0KGxpc3Rl
bmVyKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RG9jdW1lbnQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICAgICBpZiAoSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBqc0xp
c3RlbmVyLT5qc0Z1bmN0aW9uKCZpbXBsKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICAgICBpZiAoSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBqc0xpc3RlbmVyLT5qc0Z1bmN0aW9uKGlt
cGwuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNGdW5jdGlvbik7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOwotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7
XG4iKTsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVj
dG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKLSAgICAgICAgICAgICAgICAg
ICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAgICAgICAg
ICAgICAjIFdoZW4gQ29uc3RydWN0b3IgYXR0cmlidXRlIGlzIHVzZWQgYnkgRE9NV2luZG93Lmlk
bCwgaXQncyBjb3JyZWN0IHRvIHBhc3MgY2FzdGVkVGhpcyBhcyB0aGUgZ2xvYmFsIG9iamVjdAot
ICAgICAgICAgICAgICAgICAgICAjIFdoZW4gSlNET01XcmFwcGVycyBoYXZlIGEgYmFjay1wb2lu
dGVyIHRvIHRoZSBnbG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkbmFtZWQgPSAoJGNvbnN0cnVjdG9y
VHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQiIDogIiI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTIiAuICRj
b25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25hbWVkfUNvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNh
c3RlZFRoaXMpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAu
ICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRp
dGlvbmFsIn0pOwotICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRD
b25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0
aW9uIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpO1xuIikgaWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkaXNOdWxsYWJsZTsKLQot
ICAgICAgICAgICAgICAgICAgICBteSAkY2FjaGVJbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNo
ZWRBdHRyaWJ1dGUifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlSW5kZXggPSAk
Y3VycmVudENhY2hlZEF0dHJpYnV0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50
Q2FjaGVkQXR0cmlidXRlKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fIiAuICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhY2hlZFZhbHVlKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgbXkgQGNhbGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29u
dGVudCwgIkpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSIpOworICAgICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJp
YnV0ZSJ9KSB7CisgICAgICAgICAgICAgICAgJG5lZWRzTWFya0NoaWxkcmVuID0gMTsKKyAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAw
LCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS4kaW1wbEdldHRlckZ1bmN0aW9u
TmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlzIikg
LiAiO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEgImZsb2F0IikgeyAjIFNw
ZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFs
dWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwiLCAiY2Fz
dGVkVGhpcyIpIC4gIjtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVl
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIs
ICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5
In0gJiYKKyAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSAmJgorICAgICAgICAgICAgISRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eU9uR2V0
dGVyIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRU
aGlzLT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBh
cmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVk
ZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGFyZ3VtZW50cywgImlzTnVsbCIpIGlmICRpc051bGxhYmxlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRp
bXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiJmltcGwi
KSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25OYW1lfSI7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgeworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+JGlt
cGxHZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYykpO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5
Rm9yTm9kZSJ9KSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5n
LmgifSA9IDE7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGludGVy
ZmFjZU5hbWUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKGV4ZWMsIGltcGwuIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZSAuICIoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVk
VGhpcyIpIC4gIiA6IGpzTnVsbCgpKTtcbiIpOworICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUg
ZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXZl
bnRMaXN0ZW5lci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyID0gaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpKSB7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKGNvbnN0IEpT
RXZlbnRMaXN0ZW5lcioganNMaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y2FzdChsaXN0ZW5l
cikpIHtcbiIpOworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1l
bnQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29y
a2VyR2xvYmFsU2NvcGUiKSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgIGlmIChKU09iamVjdCoganNGdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpz
RnVuY3Rpb24oJmltcGwpKVxuIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBpZiAoSlNPYmplY3Qq
IGpzRnVuY3Rpb24gPSBqc0xpc3RlbmVyLT5qc0Z1bmN0aW9uKGltcGwuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSlcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RnVuY3Rpb24pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIH1cbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgICAgICAgICBt
eSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOworICAgICAg
ICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKyAgICAgICAg
ICAgICAgICAjIFdoZW4gQ29uc3RydWN0b3IgYXR0cmlidXRlIGlzIHVzZWQgYnkgRE9NV2luZG93
LmlkbCwgaXQncyBjb3JyZWN0IHRvIHBhc3MgY2FzdGVkVGhpcyBhcyB0aGUgZ2xvYmFsIG9iamVj
dAorICAgICAgICAgICAgICAgICMgV2hlbiBKU0RPTVdyYXBwZXJzIGhhdmUgYSBiYWNrLXBvaW50
ZXIgdG8gdGhlIGdsb2JhbE9iamVjdCB3ZSBjYW4gcGFzcyBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKQorICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikg
eworICAgICAgICAgICAgICAgICAgICBteSAkbmFtZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAv
TmFtZWQkLykgPyAiTmFtZWQiIDogIiI7CisgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3Rv
clR5cGUgPX4gcy9OYW1lZCQvLzsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ijo6Z2V0JHtuYW1lZH1Db25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzKSk7XG4iKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
IiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpO1xuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNpZiAoISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkdldHRlclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikgaWYgISRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpIGlmICRp
c051bGxhYmxlOwogCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMs
IEBjYWxsV2l0aEFyZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5h
dGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAi
JHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVk
VGhpcyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JGludGVyZmFjZU5hbWUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKSBpZiAhJGF0dHJp
YnV0ZS0+aXNTdGF0aWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IG9iai5nZXQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBy
ZXN1bHQgPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkg
eworICAgICAgICAgICAgICAgICAgICAkY2FjaGVJbmRleCA9ICRjdXJyZW50Q2FjaGVkQXR0cmli
dXRlOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudENhY2hlZEF0dHJpYnV0ZSsrOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoSlNWYWx1ZSBjYWNo
ZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICIuZ2V0KCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpO1xuIik7CisgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
aXNOdWxsKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAi
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIik7CiAKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcywgcmVzdWx0KTtcbiIp
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRB
dHRyaWJ1dGUifSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTtcbiIpOworICAgICAgICAgICAgICAgIGlm
ICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT5pbXBsKCku
JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4g
IikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRz
dmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCkucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9hdCIp
IHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1
bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVy
ZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBA
Y2FsbFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKIAorICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgbXkgQGFyZ3VtZW50cyA9ICgiZWMiKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKLQotICAgICAgICAgICAg
ICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImlzTnVsbCIpOworICAgICAgICAgICAg
ICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+
R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1
dGUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJpc051bGwiKSBpZiAk
aXNOdWxsYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CisgICAgICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9LmgifSA9IDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rp
b25OYW1lfSI7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICIm
aW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRo
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0s
IFxAaW1wbENvbnRlbnQsICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKSk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3Bl
cnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1
ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAg
ICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOworICAgICAgICAg
ICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgICAgICAgICAgICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR0eXBlPiBv
YmogPSAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW50ZXJm
YWNlTmFtZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFt
ZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50
cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5cGU7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxs
YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGlzTnVsbClcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5tXyIgLiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUgLiAiLnNldChleGVjLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xuIikg
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0
dHJpYnV0ZSJ9KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKIAotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTtcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CisKKyAgICAgICAgICAgICAg
ICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgICAgICB1
bnNoaWZ0KEBhcmd1bWVudHMsICJpc051bGwiKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKSk7CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwor
ICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JM
aXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNl
TmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGludGVy
ZmFjZU5hbWUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwg
ImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChpc051bGwpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpO1xuIik7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7XG4iKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifSkgewotICAgICAgICAgICAgICAgIG15ICRjb25z
dHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3Rv
ciI7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JG
dW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwkY2xhc3NOYW1lKj4o
SlNWYWx1ZTo6ZGVjb2RlKHNsb3RCYXNlKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNr
U2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCBkb21PYmplY3QtPmltcGwoKSkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
XG4iKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuIik7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgIGlmICghJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKKyAgICAgICAg
ICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAu
ICJDb25zdHJ1Y3RvciI7CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2Rl
ZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDwkY2xhc3NOYW1lKj4oSlNWYWx1ZTo6ZGVjb2RlKHNsb3RCYXNlKSk7XG4iKTsKKworICAgICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5
In0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBkb21PYmplY3Qt
PmltcGwoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgICAgIH0KIAorCiAgICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSBh
bnkgd3JpdGFibGUgYXR0cmlidXRlcwogICAgICAgICBteSAkaGFzUmVhZFdyaXRlUHJvcGVydGll
cyA9IDA7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRy
aWJ1dGVzfSkgewpAQCAtMjA3NSw4ICsyMDc2LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogCiAgICAgICAgIG15ICRoYXNTZXR0ZXIgPSAkaGFzUmVhZFdyaXRlUHJv
cGVydGllcwotICAgICAgICAgICAgICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbU5hbWVkU2V0dGVyIn0KLSAgICAgICAgICAgICAgICAgICAgIHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn07Cisg
ICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNl
dHRlciJ9CisgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21JbmRleGVkU2V0dGVyIn07CiAKICAgICAgICAgaWYgKCRoYXNTZXR0ZXIpIHsKICAgICAgICAg
ICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0
aW9uIn0pIHsKQEAgLTIxMDIsNyArMjEwMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdylcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwpAQCAtMjExNSwxNCArMjExNiwxNCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRo
cm93KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAKKwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXRCeUluZGV4
KGNlbGwsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMTQ1LDE0MSArMjE0NiwxNDEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBKU1ZhbHVlIHZhbHVl
KVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tTZWN1cml0eSJ9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKSkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4
ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS5mcmFtZSgpKSlcbiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBqc0Nhc3Q8JGNsYXNz
TmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywganNDYXN0
PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLmZyYW1lKCkpKVxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChIYXNDdXN0b21TZXR0ZXIo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMsIHZh
bHVlKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVx
ICJFdmVudExpc3RlbmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPih0aGlz
T2JqZWN0KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkd2luZG93
RXZlbnRMaXN0ZW5lciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTV2luZG93RXZlbnRMaXN0ZW5lciJ9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJHdpbmRvd0V2ZW50TGlzdGVuZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKTtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKCRp
bnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtl
ckdsb2JhbFNjb3BlIikpIGFuZCAkbmFtZSBlcSAib25lcnJvciIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXJyb3JIYW5kbGVyLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpbXBsLnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGNyZWF0ZUpTRXJyb3JIYW5k
bGVyKGV4ZWMsIHZhbHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJDYWxsKCRj
bGFzc05hbWUsICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lLCAkd2luZG93RXZlbnRMaXN0ZW5lcikp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1
Y3RvciQvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
clR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAkY29uc3RydWN0b3JUeXBlIH49IC9Db25zdHJ1
Y3RvciQvIGluZGljYXRlcyB0aGF0IGl0IGlzIE5hbWVkQ29uc3RydWN0b3IuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFkZXIgZmls
ZSBmb3IgTmFtZWRDb25zdHJ1Y3RvciBvZiBjbGFzcyBYWFhYLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9yIGRl
Y2xhcmF0aW9uIGludG8gdGhlIGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBlIG5lICJhbnkiIGFuZCAk
Y29uc3RydWN0b3JUeXBlICF+IC9OYW1lZCQvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIu
aCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlv
bmFsIn0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciICYmICRjbGFzc05hbWUgZXEgIkpT
YmxhaCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRo
aXMgYnJhbmNoIG5ldmVyIGV4ZWN1dGVzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2Fz
dDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
ZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwg
dmFsdWUpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IG9iamVjdFxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChl
eGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3Qp
LT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVyIikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5o
In0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX0qPih0aGlzT2JqZWN0KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG15ICR3aW5kb3dFdmVudExpc3RlbmVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNXaW5kb3dFdmVudExpc3RlbmVyIn07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCR3aW5kb3dFdmVudExpc3RlbmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckds
b2JhbFNjb3BlIikpIGFuZCAkbmFtZSBlcSAib25lcnJvciIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1w
bC5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShjcmVhdGVKU0Vycm9ySGFuZGxlcihleGVjLCB2
YWx1ZSwgdGhpc09iamVjdCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5p
c1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwkY2xhc3NOYW1l
Kj4odGhpc09iamVjdCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRl
ZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhdHRyaWJ1dGUncyB0eXBlIGlzIGFuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYg
dGhlIGluY29taW5nIHZhbHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBU
eXBlRXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB0aHJvd24gcmF0
aGVyIHRoYW4gc2lsZW50bHkgcGFzc2luZyBOVUxMIHRvIHRoZSBDKysgY29kZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBQZXIgdGhlIFdlYiBJREwgYW5kIEVDTUFTY3JpcHQg
c3BlY2lmaWNhdGlvbnMsIGluY29taW5nIHZhbHVlcyBjYW4gYWx3YXlzIGJlIGNvbnZlcnRlZCB0
bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvdGggc3RyaW5ncyBhbmQgbnVt
YmVycywgc28gZG8gbm90IHRocm93IFR5cGVFcnJvciBpZiB0aGUgYXR0cmlidXRlIGlzIG9mIHRo
ZXNlIHR5cGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijxy
dW50aW1lL0Vycm9yLmg+In0gPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBteSAkYXJnVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVy
VHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
JiYgIXZhbHVlLmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSkge1xuIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgfTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NOYW1lLCAkaW1wbFNldHRlckZ1bmN0
aW9uTmFtZSwgJHdpbmRvd0V2ZW50TGlzdGVuZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1
Y3RvciQvLzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICRjb25zdHJ1Y3RvclR5cGUg
fj0gL0NvbnN0cnVjdG9yJC8gaW5kaWNhdGVzIHRoYXQgaXQgaXMgTmFtZWRDb25zdHJ1Y3Rvci4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCBnZW5lcmF0ZSB0aGUgaGVh
ZGVyIGZpbGUgZm9yIE5hbWVkQ29uc3RydWN0b3Igb2YgY2xhc3MgWFhYWCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9y
IGRlY2xhcmF0aW9uIGludG8gdGhlIGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRj
b25zdHJ1Y3RvclR5cGUgIX4gL05hbWVkJC8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3JcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IiAmJiAkY2xhc3NOYW1lIGVxICJKU2JsYWgiKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgYnJhbmNoIG5ldmVyIGV4ZWN1
dGVzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0
KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganND
YXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50
aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0
RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVk
VGhpcyA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmci
IGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGF0dHJpYnV0ZSdzIHR5cGUg
aXMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVyZmFjZSB0eXBlLCB0aGVu
IGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRlcmZhY2Us
IGEgVHlwZUVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB0aHJvd24gcmF0
aGVyIHRoYW4gc2lsZW50bHkgcGFzc2luZyBOVUxMIHRvIHRoZSBDKysgY29kZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIFBlciB0aGUgV2ViIElETCBhbmQgRUNNQVNjcmlwdCBzcGVj
aWZpY2F0aW9ucywgaW5jb21pbmcgdmFsdWVzIGNhbiBhbHdheXMgYmUgY29udmVydGVkIHRvCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBib3RoIHN0cmluZ3MgYW5kIG51bWJlcnMsIHNv
IGRvIG5vdCB0aHJvdyBUeXBlRXJyb3IgaWYgdGhlIGF0dHJpYnV0ZSBpcyBvZiB0aGVzZSB0eXBl
cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4i
fSA9IDE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
ICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaW5oZXJpdHMoSlMke2FyZ1R5
cGV9OjppbmZvKCkpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2
ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkgLiAiIG5hdGl2ZVZhbHVl
KCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIp
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdl
dE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkgLiAiIG5hdGl2
ZVZhbHVlKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUi
KSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNFbnVt
VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15IEBl
bnVtVmFsdWVzID0gJGNvZGVHZW5lcmF0b3ItPlZhbGlkRW51bVZhbHVlcygkdHlwZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSBAZW51bUNoZWNrcyA9ICgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZW51bVZhbHVlIChA
ZW51bVZhbHVlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGVudW1DaGVja3MsICJuYXRpdmVWYWx1ZSAhPSBcIiRlbnVtVmFsdWVcIiIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgIGlmICgiIC4gam9pbigiICYmICIs
IEBlbnVtQ2hlY2tzKSAuICIpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2ggKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2Rl
R2VuZXJhdG9yLT5WYWxpZEVudW1WYWx1ZXMoJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBteSBAZW51bUNoZWNrcyA9ICgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JlYWNoIG15ICRlbnVtVmFsdWUgKEBlbnVtVmFsdWVzKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAibmF0aXZlVmFsdWUg
IT0gXCIkZW51bVZhbHVlXCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChpbXBsLmlzUmVhZE9ubHkoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybjtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSYgcG9kSW1wbCA9IGltcGwucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJl
cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHBvZEltcGwgPSBuYXRpdmVWYWx1ZTtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwb2RJbXBsLnNldCRpbXBsU2V0dGVy
RnVuY3Rpb25OYW1lKG5hdGl2ZVZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVjIikgaWYgJHNldHRlclJhaXNlc0V4
Y2VwdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xu
IikgaWYgJHNldHRlclJhaXNlc0V4Y2VwdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3Zn
UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCRzZXR0ZXJSYWlzZXNFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFlYylcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgaW1wbC5jb21taXRDaGFuZ2UoKTtcbiIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwuY29tbWl0
Q2hhbmdlKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KGltcGwuaXNSZWFkT25seSgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlJiBwb2RJbXBsID0gaW1wbC5wcm9w
ZXJ0eVJlZmVyZW5jZSgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEgImZsb2F0IikgeyAjIFNwZWNpYWwg
Y2FzZSBmb3IgSlNTVkdOdW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHBvZEltcGwgPSBuYXRpdmVWYWx1ZTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVH
ZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1l
LCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUpIGFuZCBub3QgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJBcnJheUJ1ZmZlciIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVu
dHMsICJuYXRpdmVWYWx1ZS5nZXQoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICImaW1wbCIpIGlmICEk
YXR0cmlidXRlLT5pc1N0YXRpYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHBv
ZEltcGwuc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUobmF0aXZlVmFsdWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBlYyIpIGlm
ICRzZXR0ZXJSYWlzZXNFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7XG4iKSBpZiAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3Zn
UHJvcGVydHlUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JHNldHRlclJhaXNlc0V4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghZWMpXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgaW1wbC5jb21taXRDaGFuZ2UoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLmNv
bW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1
bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0dGVyRXhwcmVzc2lv
bihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5
cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSBhbmQgbm90ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSBlcSAiQXJyYXlCdWZmZXIiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS5nZXQoKSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAibmF0aXZlVmFsdWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1w
bGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgIiZpbXBsIikgaWYgISRhdHRy
aWJ1dGUtPmlzU3RhdGljOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0iOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIk
e2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICIiKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsV2l0aCJ9LCBcQGltcGxDb250ZW50LCAiIikpOwogCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRzZXR0ZXJSYWlzZXNF
eGNlcHRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmICRzZXR0ZXJS
YWlzZXNFeGNlcHRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkc2V0
dGVyUmFpc2VzRXhjZXB0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgJHNldHRl
clJhaXNlc0V4Y2VwdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CkBAIC0yMjg3
LDMwICsyMjg4LDMwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNl
YWJsZUNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JGdW5j
dGlvbk5hbWUgPSAic2V0SlMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwotCi0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y29uc3RydWN0b3JGdW5j
dGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwot
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hl
Y2tTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKSlcbiIpOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywg
anNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLmZyYW1lKCkpKVxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yXG4iKTsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJSZXBsYWNlYWJsZUNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1
Y3RvckZ1bmN0aW9uTmFtZSA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3Rv
ciI7CiAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NvbnN0cnVjdG9y
RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwor
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1Nl
Y3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganND
YXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09i
amVjdCktPmltcGwoKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBkaWUgIk5vIHdheSB0byBoYW5kbGUgaW50ZXJmYWNlIHdpdGggUmVwbGFjZWFi
bGVDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGU6ICRpbnRlcmZhY2VOYW1lIjsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0Fj
Y2Vzc1RvRnJhbWUoZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgp
LmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgIH0gICAgICAgIAorICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOworCisgICAgICAgICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+
dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllICJObyB3YXkgdG8gaGFuZGxl
IGludGVyZmFjZSB3aXRoIFJlcGxhY2VhYmxlQ29uc3RydWN0b3IgZXh0ZW5kZWQgYXR0cmlidXRl
OiAkaW50ZXJmYWNlTmFtZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CiAK
</data>
<flag name="review"
          id="243211"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>