<?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>28936</bug_id>
          
          <creation_ts>2009-09-03 00:26:51 -0700</creation_ts>
          <short_desc>Allow [Reflect] on SVG elements</short_desc>
          <delta_ts>2009-10-11 02:52:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>jmalonzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144402</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-03 00:26:51 -0700</bug_when>
    <thetext>Update the JS binding generators to reference SVGNames instead of HTMLNames, if [Reflect]ing an attribute on an SVG element.

Also make [Reflect] on an attribute with a setter exception work in ObjC bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144407</commentid>
    <comment_count>1</comment_count>
      <attachid>38970</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-03 00:36:11 -0700</bug_when>
    <thetext>Created attachment 38970
Patch v1

Haven&apos;t added any tests since no IDL attributes on SVG interfaces currently use [Reflect].

I&apos;ve visually inspected output from generating COM and V8 bindings but I haven&apos;t really tested them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144425</commentid>
    <comment_count>2</comment_count>
      <attachid>38970</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 01:25:06 -0700</bug_when>
    <thetext>Comment on attachment 38970
Patch v1

In general this looks fine.

I would like to see a real example use this.  Since I think it makes sense to convert one attribute as a test and make that part of this patch.

Also, some SVG attributes, like &quot;class&quot; come from HTMLNames.  We probably need a fallback behavior on a per-name basis, instead of a idl-level decision.  All SVG and HTML attributes are in the null namespace, so it doesn&apos;t really matter which we&apos;re using so long as it has the name we&apos;re looking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144649</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-03 17:13:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I would like to see a real example use this.  Since I think it makes sense to
&gt; convert one attribute as a test and make that part of this patch.

OK, I&apos;ll pick one.

&gt; Also, some SVG attributes, like &quot;class&quot; come from HTMLNames.  We probably need
&gt; a fallback behavior on a per-name basis, instead of a idl-level decision.

Hmm, why is that &quot;id&quot; and &quot;class&quot; for example aren&apos;t in SVGNames, yet others that do duplicate them, like &quot;title&quot; and &quot;style&quot;, are?  There are 11 duplicates, it seems.  I guess it would be good if this duplication were removed to save a bit of space.

For the moment, would you suggest just hard coding in some checks for &quot;id&quot;, &quot;class&quot; etc. in the code generators to make them reference HTMLNames?

&gt; All SVG and HTML attributes are in the null namespace, so it doesn&apos;t really
&gt; matter which we&apos;re using so long as it has the name we&apos;re looking for.

Yep, OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145259</commentid>
    <comment_count>4</comment_count>
      <attachid>39169</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-07 20:51:51 -0700</bug_when>
    <thetext>Created attachment 39169
Patch v2

I&apos;ve updated the bindings scripts to special case certain attribute names that can be found in HTMLNames.  See the hash and sub added in CodeGenerator.pm.

I also made the format and glyphRef attributes on SVGAltGlyphElement use [Reflect] to test the new functionality.  In doing so, assigning to .format and .glyphRef now does indeed update the attribute on the element, rather than throwing immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145396</commentid>
    <comment_count>5</comment_count>
      <attachid>39169</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 09:48:14 -0700</bug_when>
    <thetext>Comment on attachment 39169
Patch v2

This is slightly confusing because you&apos;re both changing behavior as well as converting a setter to use [reflect].  Can we convert a setter which does not change behavior?  I&apos;d need to look at the spec again to convince myself why it&apos;s OK to set altGlyph.format, and when it is that the setter should throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145688</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-09 01:47:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 39169 [details])
&gt; This is slightly confusing because you&apos;re both changing behavior as well as
&gt; converting a setter to use [reflect].  Can we convert a setter which does not
&gt; change behavior?

It seems that all of the null-namespace attributes on SVG elements (which don&apos;t have constants on HTMLNames) would either have a change of processing (for the better) by using [Reflect] or are on elements that aren&apos;t implemented currently.

If you&apos;d rather no change in behaviour I could do, for example, SVGElement::id, but that&apos;d use HTMLNames.

&gt; I&apos;d need to look at the spec again to convince myself why
&gt; it&apos;s OK to set altGlyph.format, and when it is that the setter should throw.

The setter would throw in the same situation as one of the previous bugs I filed, i.e. it would throw only if the setAttribute() would throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146445</commentid>
    <comment_count>7</comment_count>
      <attachid>39406</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-10 20:30:53 -0700</bug_when>
    <thetext>Created attachment 39406
Patch v3

This one uses [Reflect] on SVGElement::id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146446</commentid>
    <comment_count>8</comment_count>
      <attachid>39406</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-09-10 20:31:50 -0700</bug_when>
    <thetext>Comment on attachment 39406
Patch v3

Er, v3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147007</commentid>
    <comment_count>9</comment_count>
      <attachid>39406</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-13 18:08:23 -0700</bug_when>
    <thetext>Comment on attachment 39406
Patch v3

Yeah for more automatic reflection! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148332</commentid>
    <comment_count>10</comment_count>
      <attachid>39406</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-18 13:07:31 -0700</bug_when>
    <thetext>Comment on attachment 39406
Patch v3

Rejecting patch 39406 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=39406 from bug 28936 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148337</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-18 13:11:01 -0700</bug_when>
    <thetext>We&apos;ll need a new patch if you want the queue to land this.

1 out of 2 hunks FAILED -- saving rejects to file WebCore/bindings/scripts/CodeGenerator.pm.rej

Ideally we would have cq+&apos;d this earlier and then it would not have been a problem. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153914</commentid>
    <comment_count>12</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2009-10-11 02:52:17 -0700</bug_when>
    <thetext>Committed: http://trac.webkit.org/changeset/49424</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38970</attachid>
            <date>2009-09-03 00:36:11 -0700</date>
            <delta_ts>2009-09-07 20:51:51 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>28936.patch</filename>
            <type>text/plain</type>
            <size>16897</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODAwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDktMDMgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5p
ZC5hdT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyBbUmVmbGVjdF0gb24gU1ZHIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzYKKworICAgICAgICBVcGRhdGUgdGhlIEpTIGJp
bmRpbmcgZ2VuZXJhdG9ycyB0byByZWZlcmVuY2UgU1ZHTmFtZXMgaW5zdGVhZCBvZgorICAgICAg
ICBIVE1MTmFtZXMsIGlmIFtSZWZsZWN0XWluZyBhbiBhdHRyaWJ1dGUgb24gYW4gU1ZHIGVsZW1l
bnQuCisKKyAgICAgICAgQWxzbyBtYWtlIFtSZWZsZWN0XSBvbiBhbiBhdHRyaWJ1dGUgd2l0aCBh
IHNldHRlciBleGNlcHRpb24gd29yayBpbiBPYmpDCisgICAgICAgIGJpbmRpbmdzLgorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbTogR2VuZXJhdGUgRXhj
ZXB0aW9uQ29kZSBoYW5kbGluZworICAgICAgICBjb2RlIGZvciBbUmVmbGVjdF0gb24gYW4gYXR0
cmlidXRlIHdpdGggYSBzZXR0ZXIgZXhjZXB0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNPTS5wbTogR2VuZXJhdGUgIlNWR05hbWVzIiBpbnN0ZWFkIG9mCisg
ICAgICAgICJIVE1MTmFtZXMiIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBEaXR0by4KKwogMjAwOS0wOS0wMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNPTS5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNPTS5w
bQkocmV2aXNpb24gNDc5NTIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckNPTS5wbQkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICMgQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlkLmF1PgogIwog
IyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01MjUsNyArNTI2LDcgQEAgc3ViIEdlbmVyYXRlQ1BQQXR0cmlidXRl
U2lnbmF0dXJlCiAKIHN1YiBHZW5lcmF0ZUNQUEF0dHJpYnV0ZQogewotICAgIG15ICgkYXR0cmli
dXRlLCAkY2xhc3NOYW1lLCAkaW1wbGVtZW50YXRpb25DbGFzcykgPSBAXzsKKyAgICBteSAoJGF0
dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVudGF0aW9uQ2xhc3MsICRJRExUeXBlKSA9IEBf
OwogCiAgICAgbXkgJGltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlID0gU3RyaXBO
YW1lc3BhY2UoJGltcGxlbWVudGF0aW9uQ2xhc3MpOwogCkBAIC01MzksNiArNTQwLDcgQEAgc3Vi
IEdlbmVyYXRlQ1BQQXR0cmlidXRlCiAgICAgbXkgJGF0dHJpYnV0ZUltcGxlbWVudGF0aW9uVHlw
ZSA9IElETFR5cGVUb0ltcGxlbWVudGF0aW9uVHlwZSgkYXR0cmlidXRlSURMVHlwZSk7CiAgICAg
bXkgJGF0dHJpYnV0ZUltcGxlbWVudGF0aW9uVHlwZVdpdGhvdXROYW1lc3BhY2UgPSBTdHJpcE5h
bWVzcGFjZSgkYXR0cmlidXRlSW1wbGVtZW50YXRpb25UeXBlKTsKICAgICBteSAkYXR0cmlidXRl
VHlwZUNPTUNsYXNzTmFtZSA9IEdldENsYXNzTmFtZSgkYXR0cmlidXRlSURMVHlwZSk7CisgICAg
bXkgJGxhbmd1YWdlTmFtZXMgPSAkSURMVHlwZSA9fiAvXlNWRy8gPyAiU1ZHTmFtZXMiIDogIkhU
TUxOYW1lcyI7CiAKICAgICAkQ1BQSW1wbGVtZW50YXRpb25XZWJDb3JlSW5jbHVkZXN7IkV4Y2Vw
dGlvbkNvZGUuaCJ9ID0gMSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uIG9yICRoYXNHZXR0ZXJFeGNl
cHRpb247CiAKQEAgLTU5OSw5ICs2MDEsOSBAQCBzdWIgR2VuZXJhdGVDUFBBdHRyaWJ1dGUKICAg
ICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJSZWZsZWN0In07CiAgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICBp
ZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICRDUFBJbXBsZW1lbnRh
dGlvbldlYkNvcmVJbmNsdWRlc3siSFRNTE5hbWVzLmgifSA9IDE7CisgICAgICAgICAgICAkQ1BQ
SW1wbGVtZW50YXRpb25XZWJDb3JlSW5jbHVkZXN7IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsK
ICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3QgfHwgJHJl
ZmxlY3RVUkwpIGVxICIxIikgPyAkYXR0cmlidXRlTmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVj
dFVSTCk7Ci0gICAgICAgICAgICBwdXNoKEBzZXR0ZXJJbXBsZW1lbnRhdGlvbiwgIiAgICBpbXBs
JHtpbXBsZW1lbnRhdGlvbkNsYXNzV2l0aG91dE5hbWVzcGFjZX0oKS0+c2V0QXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAiIC4gam9pbigi
LCAiLCBAc2V0dGVyUGFyYW1zKSAuICIpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBzZXR0ZXJJ
bXBsZW1lbnRhdGlvbiwgIiAgICBpbXBsJHtpbXBsZW1lbnRhdGlvbkNsYXNzV2l0aG91dE5hbWVz
cGFjZX0oKS0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OiR7bGFuZ3VhZ2VOYW1lc306OiR7Y29udGVu
dEF0dHJpYnV0ZU5hbWV9QXR0ciwgIiAuIGpvaW4oIiwgIiwgQHNldHRlclBhcmFtcykgLiAiKTtc
biIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAc2V0dGVySW1wbGVtZW50
YXRpb24sICIgICAgaW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCkt
PiR7c2V0dGVyTmFtZX0oIiAuIGpvaW4oIiwgIiwgQHNldHRlclBhcmFtcykgLiAiKTtcbiIpOwog
ICAgICAgICB9CkBAIC02MjEsMTAgKzYyMywxMCBAQCBzdWIgR2VuZXJhdGVDUFBBdHRyaWJ1dGUK
ICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlJlZmxlY3QifTsKICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKICAgICBpZiAoJHJlZmxl
Y3QgfHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siSFRNTE5hbWVzLmgi
fSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsK
ICAgICAgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVj
dFVSTCkgZXEgIjEiKSA/ICRhdHRyaWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJM
KTsKICAgICAgICAgbXkgJGdldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSA9ICRyZWZsZWN0VVJMID8g
ImdldFVSTEF0dHJpYnV0ZSIgOiAiZ2V0QXR0cmlidXRlIjsKLSAgICAgICAgJGltcGxlbWVudGF0
aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlfSgp
LT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6SFRNTE5hbWVzOjoke2NvbnRl
bnRBdHRyaWJ1dGVOYW1lfUF0dHIpIjsKKyAgICAgICAgJGltcGxlbWVudGF0aW9uR2V0dGVyID0g
ImltcGwke2ltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlfSgpLT4ke2dldEF0dHJp
YnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6JHtsYW5ndWFnZU5hbWVzfTo6JHtjb250ZW50QXR0
cmlidXRlTmFtZX1BdHRyKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJGltcGxlbWVudGF0aW9u
R2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlfSgpLT4i
IC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpIC4gIigiIC4gKCRo
YXNHZXR0ZXJFeGNlcHRpb24gPyAiZWMiIDogIiIpLiAiKSI7CiAgICAgfQpAQCAtMTE1NSw3ICsx
MTU3LDcgQEAgc3ViIEdlbmVyYXRlQ1BQSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAg
IEFkZEluY2x1ZGVzRm9yVHlwZUluQ1BQSW1wbGVtZW50YXRpb24oJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlKTsKIAotICAgICAgICAgICAgICAgIG15ICVhdHRyaWJ1dGVzID0gR2VuZXJhdGVD
UFBBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVudGF0aW9uQ2xhc3Mp
OworICAgICAgICAgICAgICAgIG15ICVhdHRyaWJ1dGVzID0gR2VuZXJhdGVDUFBBdHRyaWJ1dGUo
JGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVudGF0aW9uQ2xhc3MsICRJRExUeXBlKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBDUFBJbXBsZW1lbnRhdGlvbkNvbnRlbnQsIHZhbHVlcygl
YXR0cmlidXRlcykpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTgzLDcgKzExODUs
NyBAQCBzdWIgR2VuZXJhdGVDUFBJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBBZGRJbmNs
dWRlc0ZvclR5cGVJbkNQUEltcGxlbWVudGF0aW9uKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSk7CiAKLSAgICAgICAgICAgIG15ICVhdHRyaWJ1dGVzID0gR2VuZXJhdGVDUFBBdHRyaWJ1dGUo
JGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVudGF0aW9uQ2xhc3MpOworICAgICAgICAg
ICAgbXkgJWF0dHJpYnV0ZXMgPSBHZW5lcmF0ZUNQUEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkY2xh
c3NOYW1lLCAkaW1wbGVtZW50YXRpb25DbGFzcywgJElETFR5cGUpOwogICAgICAgICAgICAgcHVz
aChAQ1BQSW1wbGVtZW50YXRpb25Db250ZW50LCB2YWx1ZXMoJWF0dHJpYnV0ZXMpKTsKICAgICAg
ICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gNDc5NTIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAjIENvcHly
aWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogIyBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2Mu
aWQuYXU+CiAjIAogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTgyLDYgKzExODMsOCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogCiAgICAgIyBBdHRyaWJ1dGVzCiAgICAgaWYgKCRoYXNHZXR0ZXIp
IHsKKyAgICAgICAgbXkgJGxhbmd1YWdlTmFtZXMgPSAkaW50ZXJmYWNlTmFtZSA9fiAvXlNWRy8g
PyAiU1ZHTmFtZXMiIDogIkhUTUxOYW1lcyI7CisKICAgICAgICAgaWYgKCEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwpAQCAtMTI3OSwxMCArMTI4MiwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CiAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkhUTUxOYW1lcy5oIn0gPSAxOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAoKCRyZWZs
ZWN0IHx8ICRyZWZsZWN0VVJMKSBlcSAiMSIpID8gJG5hbWUgOiAoJHJlZmxlY3QgfHwgJHJlZmxl
Y3RVUkwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRnZXRBdHRyaWJ1dGVGdW5j
dGlvbk5hbWUgPSAkcmVmbGVjdFVSTCA/ICJnZXRVUkxBdHRyaWJ1dGUiIDogImdldEF0dHJpYnV0
ZSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gImltcC0+JGdldEF0dHJp
YnV0ZUZ1bmN0aW9uTmFtZShIVE1MTmFtZXM6OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciki
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gImltcC0+JGdldEF0dHJpYnV0
ZUZ1bmN0aW9uTmFtZSgke2xhbmd1YWdlTmFtZXN9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0
dHIpIgogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkdmFsdWUgPSAiaW1wLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0MzksOSArMTQ0Miw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyZWZs
ZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVj
dCJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRyZWZsZWN0
VVJMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJIVE1MTmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxl
Y3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIikgPyAkbmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVj
dFVSTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OiR7Y29udGVudEF0dHJpYnV0
ZU5hbWV9QXR0ciwgJG5hdGl2ZVZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXAtPnNldEF0dHJpYnV0ZSgke2xhbmd1
YWdlTmFtZXN9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICRuYXRpdmVWYWx1ZSIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQkaW1w
bFNldHRlckZ1bmN0aW9uTmFtZSgkbmF0aXZlVmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gNDc5NTIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAj
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4K
ICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+
CiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8
Y2FtQG1jYy5pZC5hdT4KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTEwMSw2ICsxMTAyLDggQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgLSBBdHRyaWJ1dGVzCiAgICAgaWYgKCRu
dW1BdHRyaWJ1dGVzID4gMCkgeworICAgICAgICBteSAkbGFuZ3VhZ2VOYW1lcyA9ICRpbnRlcmZh
Y2VOYW1lID1+IC9eU1ZHLyA/ICJTVkdOYW1lcyIgOiAiSFRNTE5hbWVzIjsKKwogICAgICAgICBm
b3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAg
ICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CiAK
QEAgLTExMzYsMTAgKzExMzksMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICAgICAgbXkgJHJlZmxlY3RVUkwgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07CiAgICAg
ICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyIke2xhbmd1YWdlTmFtZXN9LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGNv
bnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/
ICRhdHRyaWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKICAgICAgICAgICAg
ICAgICBteSAkZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lID0gJHJlZmxlY3RVUkwgPyAiZ2V0VVJM
QXR0cmlidXRlIiA6ICJnZXRBdHRyaWJ1dGUiOwotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250
ZW50SGVhZCA9ICJJTVBMLT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6SFRN
TE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIiOworICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICJJTVBMLT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2Vi
Q29yZTo6JHtsYW5ndWFnZU5hbWVzfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyIjsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0g
IklNUEwtPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAi
KCI7CiAgICAgICAgICAgICB9CkBAIC0xMjcwLDIwICsxMjczLDE5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kY29yZVNldHRlck5hbWUo
JGFyZyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRoYXNTZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kY29yZVNldHRlck5hbWUoJGFyZywgZWMpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRleGNlcHRp
b25SYWlzZU9uRXJyb3JcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICAgICAgICAgICAgICBteSAkcmVmbGVjdFVS
TCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RV
UkwifTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvbkluaXRcbiIpIGlmICRoYXNTZXR0ZXJFeGNlcHRpb247CisgICAgICAgICAgICAgICAgICAg
IG15ICRlYyA9ICRoYXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAiIjsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3Qg
fHwgJHJlZmxlY3RVUkwpIGVxICIxIikgPyAkYXR0cmlidXRlTmFtZSA6ICgkcmVmbGVjdCB8fCAk
cmVmbGVjdFVSTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBJTVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjoke2NvbnRlbnRBdHRy
aWJ1dGVOYW1lfUF0dHIsICRhcmcpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6JHtsYW5ndWFn
ZU5hbWVzfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAkYXJnJGVjKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgSU1QTC0+JGNvcmVTZXR0ZXJOYW1lKCRhcmcpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kY29yZVNl
dHRlck5hbWUoJGFyZyRlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9y
XG4iKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDc5NTIpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkp
CkBAIC01LDYgKzUsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diA8YXBAd2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCiAjIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBHb29nbGUgSW5jLgorIyBDb3B5
cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAjCiAjIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogIwpAQCAtMjQzLDYgKzI0NCwxMyBA
QCBzdWIgR2V0SW1wbGVtZW50YXRpb25GaWxlTmFtZQogICAgIHJldHVybiAiJHtpZmFjZX0uaCI7
CiB9CiAKK3N1YiBHZXRMYW5ndWFnZU5hbWVzRm9ySW50ZXJmYWNlCit7CisgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKKyAgICByZXR1cm4gIlNWR05hbWVzIiBpZiAkaW50ZXJmYWNlTmFt
ZSA9fiAvXlNWRy87CisgICAgcmV0dXJuICJIVE1MTmFtZXMiOworfQorCiAjIElmIHRoZSBub2Rl
IGhhcyBhIFtDb25kaXRpb25hbD1YWFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhY
WCkiIHN0cmluZyBmb3IgdXNlIGluIGFuICNpZi4KIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nCiB7CkBAIC00NjMsNiArNDcxLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcgog
ICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc0luZGV4ID0gc2hpZnQ7CiAg
ICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNo
aWZ0OwogCiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlczsKIApAQCAtNTU5LDEwICs1NjgsMTEgQEAgRU5ECiAgICAgICAgIG15ICRyZWZs
ZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVj
dCJ9OwogICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKICAgICAgICAgaWYgKCRyZWZsZWN0IHx8
ICRyZWZsZWN0VVJMKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9
ID0gMTsKKyAgICAgICAgICAgIG15ICRsYW5ndWFnZU5hbWVzID0gR2V0TGFuZ3VhZ2VOYW1lc0Zv
ckludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
e2xhbmd1YWdlTmFtZXN9LmgifSA9IDE7CiAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0
ZU5hbWUgPSAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIiA/ICRhdHRyTmFtZSA6ICgk
cmVmbGVjdCB8fCAkcmVmbGVjdFVSTCk7CiAgICAgICAgICAgICBteSAkZ2V0QXR0cmlidXRlRnVu
Y3Rpb25OYW1lID0gJHJlZmxlY3RVUkwgPyAiZ2V0VVJMQXR0cmlidXRlIiA6ICJnZXRBdHRyaWJ1
dGUiOwotICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAtPiRnZXRBdHRyaWJ1dGVGdW5j
dGlvbk5hbWUoSFRNTE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIiOworICAgICAg
ICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAtPiRnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoJHts
YW5ndWFnZU5hbWVzfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyIjsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0dGVyRnVuYygiOwog
ICAgICAgICB9CkBAIC02NzAsNiArNjgwLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cgogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc0luZGV4ID0gc2hpZnQ7
CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwogCiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlczsKIApAQCAtNzM4LDkgKzc0OSwxMCBAQCBFTkQKICAgICAgICAgbXkgJHJl
ZmxlY3QgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZs
ZWN0In07CiAgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICBpZiAoJHJlZmxlY3Qg
fHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxOYW1lcy5o
In0gPSAxOworICAgICAgICAgICAgbXkgJGxhbmd1YWdlTmFtZXMgPSBHZXRMYW5ndWFnZU5hbWVz
Rm9ySW50ZXJmYWNlKCRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IiR7bGFuZ3VhZ2VOYW1lc30uaCJ9ID0gMTsKICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmli
dXRlTmFtZSA9ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiID8gJGF0dHJOYW1lIDog
KCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgaW1wLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1
dGVOYW1lfUF0dHIsICRyZXN1bHQiKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgaW1wLT5zZXRBdHRyaWJ1dGUoJHtsYW5ndWFnZU5hbWVzfTo6JHtjb250ZW50QXR0
cmlidXRlTmFtZX1BdHRyLCAkcmVzdWx0Iik7CiAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJWOEN1c3RvbUJpbmRpbmcuaCJ9ID0gMTsKQEAgLTExMjgsNyArMTE0MCw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSkgewogICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siVjhDdXN0b21CaW5kaW5nLmgifSA9IDE7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwg
JGRhdGFOb2RlLCAkY2xhc3NJbmRleCwgJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAgR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGNsYXNzSW5kZXgs
ICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRl
ciJ9IHx8CiAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJWOEN1c3RvbVNldHRlciJ9KSB7CkBAIC0xMTM3LDcgKzExNDksNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9IHx8IGRpZSAiUmVwbGFjZWFibGUgYXR0
cmlidXRlIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW50ZXJmYWNlIHRoYXQgZGVmaW5lcyBFeHRlbmRz
RE9NR2xvYmFsT2JqZWN0IGF0dHJpYnV0ZSEiOwogICAgICAgICAgICAgIyBHZW5lcmF0ZVJlcGxh
Y2VhYmxlQXR0clNldHRlcigkaW1wbENsYXNzTmFtZSk7CiAgICAgICAgIH0gZWxzaWYgKCRhdHRy
aWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlY4UmVhZE9ubHkifSkgewotICAgICAgICAgICAgR2VuZXJhdGVO
b3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGNsYXNzSW5kZXgsICRpbXBs
Q2xhc3NOYW1lKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmli
dXRlLCAkZGF0YU5vZGUsICRjbGFzc0luZGV4LCAkaW1wbENsYXNzTmFtZSwgJGludGVyZmFjZU5h
bWUpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>
<flag name="review"
          id="19977"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39169</attachid>
            <date>2009-09-07 20:51:51 -0700</date>
            <delta_ts>2009-09-10 20:30:53 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>28936-v2.patch</filename>
            <type>text/plain</type>
            <size>26696</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODE0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDktMDcgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5p
ZC5hdT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyBbUmVmbGVjdF0gb24gU1ZHIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzYKKworICAgICAgICBVcGRhdGUgdGhlIEpTIGJp
bmRpbmcgZ2VuZXJhdG9ycyB0byByZWZlcmVuY2UgU1ZHTmFtZXMgaW5zdGVhZCBvZgorICAgICAg
ICBIVE1MTmFtZXMsIGlmIFtSZWZsZWN0XWluZyBhbiBhdHRyaWJ1dGUgb24gYW4gU1ZHIGVsZW1l
bnQuICBNYWtlCisgICAgICAgIGZvcm1hdD0iIiBhbmQgZ2x5cGhSZWY9IiIgYXR0cmlidXRlcyBv
biA8YWx0R2x5cGg+IHVzZSBbUmVmbGVjdF0uCisKKyAgICAgICAgQWxzbyBtYWtlIFtSZWZsZWN0
XSBvbiBhbiBhdHRyaWJ1dGUgd2l0aCBhIHNldHRlciBleGNlcHRpb24gd29yayBpbiBPYmpDCisg
ICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgIFRlc3Q6IHN2Zy9kb20vU1ZHQWx0R2x5cGhFbGVt
ZW50L2FsdEdseXBoLXJlZmxlY3QuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOiBBZGQgYSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlCisgICAgICAg
IGFwcHJvcHJpYXRlIEMrKyBuYW1lc3BhY2UgZm9yIGF0dHJpYnV0ZSBuYW1lIGNvbnN0YW50cy4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOiBHZW5lcmF0
ZSBFeGNlcHRpb25Db2RlIGhhbmRsaW5nCisgICAgICAgIGNvZGUgZm9yIFtSZWZsZWN0XSBvbiBh
biBhdHRyaWJ1dGUgd2l0aCBhIHNldHRlciBleGNlcHRpb24uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtOiBHZW5lcmF0ZSAiU1ZHTmFtZXMiIGluc3RlYWQg
b2YKKyAgICAgICAgIkhUTUxOYW1lcyIgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTogRGl0dG8uCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdB
bHRHbHlwaEVsZW1lbnQuY3BwOiBSZW1vdmUgZ2V0dGVyIGFuZCBzZXR0ZXIgbWV0aG9kcyBmb3IK
KyAgICAgICAgJ2Zvcm1hdCcgYW5kICdnbHlwaFJlZicuCisgICAgICAgICogc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5pZGw6IEFkZCBbUmVmbGVjdF0gdG8gJ2Zvcm1hdCcgYW5kICdnbHlwaFJlZicu
CisKIDIwMDktMDktMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gNDgwMzcpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5h
dT4KICMgCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDYgKzU1LDEyIEBAIG15ICVzdmdBbmltYXRlZFR5
cGVIYXNoID0gKCJTVkdBbmltYXRlZEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVkdB
bmltYXRlZFJlY3QiID0+IDEsICJTVkdBbmltYXRlZFN0cmluZyIgPT4gMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QiID0+IDEpOwogCitteSAl
c3ZnQXR0cmlidXRlc0luSFRNTEhhc2ggPSAoImNsYXNzIiA9PiAxLCAiaWQiID0+IDEsICJvbmFi
b3J0IiA9PiAxLCAib25jbGljayIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAib25lcnJvciIgPT4gMSwgIm9ubG9hZCIgPT4gMSwgIm9ubW91c2Vkb3duIiA9PiAxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbm1vdXNlbW92ZSIgPT4gMSwgIm9ubW91c2Vv
dXQiID0+IDEsICJvbm1vdXNlb3ZlciIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAib25tb3VzZXVwIiA9PiAxLCAib25yZXNpemUiID0+IDEsICJvbnNjcm9sbCIgPT4gMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib251bmxvYWQiID0+IDEpOworCiAjIEhl
bHBlcnMgZm9yICdTY2FuRGlyZWN0b3J5JwogbXkgJGVuZENvbmRpdGlvbiA9IDA7CiBteSAkZm91
bmRGaWxlbmFtZSA9ICIiOwpAQCAtNDIxLDQgKzQyOCwxMiBAQCBzdWIgV0tfbGNmaXJzdAogICAg
IHJldHVybiAkcmV0OwogfQogCisjIFJldHVybiB0aGUgQysrIG5hbWVzcGFjZSB0aGF0IGEgZ2l2
ZW4gYXR0cmlidXRlIG5hbWUgc3RyaW5nIGlzIGRlZmluZWQgaW4uCitzdWIgTmFtZXNwYWNlRm9y
QXR0cmlidXRlTmFtZQoreworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJp
YnV0ZU5hbWUpID0gQF87CisgICAgcmV0dXJuICJTVkdOYW1lcyIgaWYgJGludGVyZmFjZU5hbWUg
PX4gL15TVkcvICYmICEkc3ZnQXR0cmlidXRlc0luSFRNTEhhc2h7JGF0dHJpYnV0ZU5hbWV9Owor
ICAgIHJldHVybiAiSFRNTE5hbWVzIjsKK30KKwogMTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCShyZXZpc2lvbiA0ODAzNykKKysrIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgU2FtdWVsIFdlaW5pZyA8
c2FtQHdlYmtpdC5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IDxhcEB3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBN
Y0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUyNSw3ICs1MjYs
NyBAQCBzdWIgR2VuZXJhdGVDUFBBdHRyaWJ1dGVTaWduYXR1cmUKIAogc3ViIEdlbmVyYXRlQ1BQ
QXR0cmlidXRlCiB7Ci0gICAgbXkgKCRhdHRyaWJ1dGUsICRjbGFzc05hbWUsICRpbXBsZW1lbnRh
dGlvbkNsYXNzKSA9IEBfOworICAgIG15ICgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1wbGVt
ZW50YXRpb25DbGFzcywgJElETFR5cGUpID0gQF87CiAKICAgICBteSAkaW1wbGVtZW50YXRpb25D
bGFzc1dpdGhvdXROYW1lc3BhY2UgPSBTdHJpcE5hbWVzcGFjZSgkaW1wbGVtZW50YXRpb25DbGFz
cyk7CiAKQEAgLTU5OSw5ICs2MDAsMTAgQEAgc3ViIEdlbmVyYXRlQ1BQQXR0cmlidXRlCiAgICAg
ICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKICAgICAgICAgaWYg
KCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSB7Ci0gICAgICAgICAgICAkQ1BQSW1wbGVtZW50YXRp
b25XZWJDb3JlSW5jbHVkZXN7IkhUTUxOYW1lcy5oIn0gPSAxOwogICAgICAgICAgICAgbXkgJGNv
bnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/
ICRhdHRyaWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKLSAgICAgICAgICAg
IHB1c2goQHNldHRlckltcGxlbWVudGF0aW9uLCAiICAgIGltcGwke2ltcGxlbWVudGF0aW9uQ2xh
c3NXaXRob3V0TmFtZXNwYWNlfSgpLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjok
e2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICIgLiBqb2luKCIsICIsIEBzZXR0ZXJQYXJhbXMp
IC4gIik7XG4iKTsKKyAgICAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+
TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkSURMVHlwZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgICAgICRDUFBJbXBsZW1lbnRhdGlvbldlYkNvcmVJbmNsdWRlc3siJHtuYW1l
c3BhY2V9LmgifSA9IDE7CisgICAgICAgICAgICBwdXNoKEBzZXR0ZXJJbXBsZW1lbnRhdGlvbiwg
IiAgICBpbXBsJHtpbXBsZW1lbnRhdGlvbkNsYXNzV2l0aG91dE5hbWVzcGFjZX0oKS0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRy
LCAiIC4gam9pbigiLCAiLCBAc2V0dGVyUGFyYW1zKSAuICIpO1xuIik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwdXNoKEBzZXR0ZXJJbXBsZW1lbnRhdGlvbiwgIiAgICBpbXBsJHtp
bXBsZW1lbnRhdGlvbkNsYXNzV2l0aG91dE5hbWVzcGFjZX0oKS0+JHtzZXR0ZXJOYW1lfSgiIC4g
am9pbigiLCAiLCBAc2V0dGVyUGFyYW1zKSAuICIpO1xuIik7CiAgICAgICAgIH0KQEAgLTYyMSwx
MCArNjIzLDExIEBAIHN1YiBHZW5lcmF0ZUNQUEF0dHJpYnV0ZQogICAgIG15ICRyZWZsZWN0ID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9Owog
ICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgIGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkg
ewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsKICAgICAgICAgbXkg
JGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEi
KSA/ICRhdHRyaWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKKyAgICAgICAg
bXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVOYW1l
KCRJRExUeXBlLCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOworICAgICAgICAkaW1wbEluY2x1ZGVz
eyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKICAgICAgICAgbXkgJGdldEF0dHJpYnV0ZUZ1bmN0aW9u
TmFtZSA9ICRyZWZsZWN0VVJMID8gImdldFVSTEF0dHJpYnV0ZSIgOiAiZ2V0QXR0cmlidXRlIjsK
LSAgICAgICAgJGltcGxlbWVudGF0aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xh
c3NXaXRob3V0TmFtZXNwYWNlfSgpLT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29y
ZTo6SFRNTE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIpIjsKKyAgICAgICAgJGlt
cGxlbWVudGF0aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFt
ZXNwYWNlfSgpLT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6JHtuYW1lc3Bh
Y2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIpIjsKICAgICB9IGVsc2UgewogICAgICAg
ICAkaW1wbGVtZW50YXRpb25HZXR0ZXIgPSAiaW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhv
dXROYW1lc3BhY2V9KCktPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRl
TmFtZSkgLiAiKCIgLiAoJGhhc0dldHRlckV4Y2VwdGlvbiA/ICJlYyIgOiAiIikuICIpIjsKICAg
ICB9CkBAIC0xMTU1LDcgKzExNTgsNyBAQCBzdWIgR2VuZXJhdGVDUFBJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5DUFBJbXBsZW1lbnRhdGlvbigk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwogCi0gICAgICAgICAgICAgICAgbXkgJWF0dHJp
YnV0ZXMgPSBHZW5lcmF0ZUNQUEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1w
bGVtZW50YXRpb25DbGFzcyk7CisgICAgICAgICAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSBHZW5l
cmF0ZUNQUEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1wbGVtZW50YXRpb25D
bGFzcywgJElETFR5cGUpOwogICAgICAgICAgICAgICAgIHB1c2goQENQUEltcGxlbWVudGF0aW9u
Q29udGVudCwgdmFsdWVzKCVhdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTExODMsNyArMTE4Niw3IEBAIHN1YiBHZW5lcmF0ZUNQUEltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluQ1BQSW1wbGVtZW50YXRpb24oJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlKTsKIAotICAgICAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSBHZW5l
cmF0ZUNQUEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1wbGVtZW50YXRpb25D
bGFzcyk7CisgICAgICAgICAgICBteSAlYXR0cmlidXRlcyA9IEdlbmVyYXRlQ1BQQXR0cmlidXRl
KCRhdHRyaWJ1dGUsICRjbGFzc05hbWUsICRpbXBsZW1lbnRhdGlvbkNsYXNzLCAkSURMVHlwZSk7
CiAgICAgICAgICAgICBwdXNoKEBDUFBJbXBsZW1lbnRhdGlvbkNvbnRlbnQsIHZhbHVlcyglYXR0
cmlidXRlcykpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA0ODAzNykKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQsNiAr
NCw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Vi
a2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdl
YmtpdC5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1j
Q29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEyNzksMTAgKzEy
ODAsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJlZmxlY3RVUkwg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJM
In07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMu
aCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0
ZU5hbWUgPSAoKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSBlcSAiMSIpID8gJG5hbWUgOiAoJHJl
ZmxlY3QgfHwgJHJlZmxlY3RVUkwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRu
YW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50
ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lID0gJHJlZmxlY3RV
UkwgPyAiZ2V0VVJMQXR0cmlidXRlIiA6ICJnZXRBdHRyaWJ1dGUiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICR2YWx1ZSA9ICJpbXAtPiRnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoSFRN
TE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIpIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICR2YWx1ZSA9ICJpbXAtPiRnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoJHtuYW1l
c3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIpIgogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiaW1w
LT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTE0MzksOSArMTQ0MSwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXkgJHJlZmxlY3RVUkwgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSFRNTE5hbWVzLmgifSA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5h
bWUgPSAoKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSBlcSAiMSIpID8gJG5hbWUgOiAoJHJlZmxl
Y3QgfHwgJHJlZmxlY3RVUkwpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjoke2Nv
bnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICRuYXRpdmVWYWx1ZSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1l
c3BhY2VGb3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJpYnV0ZU5h
bWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtuYW1lc3BhY2V9LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXAtPnNldEF0dHJpYnV0ZSgke25hbWVzcGFjZX06
OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciwgJG5hdGl2ZVZhbHVlIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVu
Y3Rpb25OYW1lKCRuYXRpdmVWYWx1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCShyZXZpc2lvbiA0ODAzNykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICMgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogIyBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KICMgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNjLmlk
LmF1PgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTM2LDEwICsxMTM3LDExIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICAgICAgICAgIG15
ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJM
KSB7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSFRNTE5hbWVzLmgifSA9IDE7CiAg
ICAgICAgICAgICAgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAk
cmVmbGVjdFVSTCkgZXEgIjEiKSA/ICRhdHRyaWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZs
ZWN0VVJMKTsKKyAgICAgICAgICAgICAgICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5lcmF0b3It
Pk5hbWVzcGFjZUZvckF0dHJpYnV0ZU5hbWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50QXR0cmli
dXRlTmFtZSk7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9Lmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGdldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSA9ICRy
ZWZsZWN0VVJMID8gImdldFVSTEF0dHJpYnV0ZSIgOiAiZ2V0QXR0cmlidXRlIjsKLSAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JHtnZXRBdHRyaWJ1dGVGdW5jdGlv
bk5hbWV9KFdlYkNvcmU6OkhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyIjsK
KyAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+JHtnZXRBdHRyaWJ1
dGVGdW5jdGlvbk5hbWV9KFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRl
TmFtZX1BdHRyIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gIklNUEwtPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0
cmlidXRlTmFtZSkgLiAiKCI7CiAgICAgICAgICAgICB9CkBAIC0xMjcwLDIwICsxMjcyLDIwIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4k
Y29yZVNldHRlck5hbWUoJGFyZyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRoYXNTZXR0ZXJFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOwotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kY29yZVNldHRlck5h
bWUoJGFyZywgZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICAgICAgICAgICAg
ICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlJlZmxlY3RVUkwifTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpIGlmICRoYXNTZXR0ZXJFeGNlcHRpb247CisgICAg
ICAgICAgICAgICAgICAgIG15ICRlYyA9ICRoYXNTZXR0ZXJFeGNlcHRpb24gPyAiLCBlYyIgOiAi
IjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJl
ZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIikgPyAkYXR0cmlidXRlTmFtZSA6ICgkcmVmbGVj
dCB8fCAkcmVmbGVjdFVSTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBJTVBMLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjoke2NvbnRl
bnRBdHRyaWJ1dGVOYW1lfUF0dHIsICRhcmcpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5lcmF0b3ItPk5hbWVzcGFjZUZvckF0dHJpYnV0ZU5h
bWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50QXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIElNUEwtPnNldEF0dHJpYnV0
ZShXZWJDb3JlOjoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciwgJGFy
ZyRlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIElNUEwtPiRjb3JlU2V0dGVyTmFtZSgk
YXJnKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSU1QTC0+JGNvcmVTZXR0ZXJOYW1lKCRhcmckZWMpO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2Vw
dGlvblJhaXNlT25FcnJvclxuIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlz
aW9uIDQ4MDM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgR29v
Z2xlIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNj
LmlkLmF1PgogIwogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKICMKQEAg
LTQ2Myw2ICs0NjQsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAgICAgbXkgJGRh
dGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzSW5kZXggPSBzaGlmdDsKICAgICBteSAkaW1w
bENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAg
ICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
OwogCkBAIC01NTksMTAgKzU2MSwxMSBAQCBFTkQKICAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CiAgICAg
ICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RV
UkwpIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxOYW1lcy5oIn0gPSAxOwogICAg
ICAgICAgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCRyZWZsZWN0IHx8ICRyZWZsZWN0
VVJMKSBlcSAiMSIgPyAkYXR0ck5hbWUgOiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpOworICAg
ICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRy
aWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOworICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7CiAgICAgICAgICAgICBt
eSAkZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lID0gJHJlZmxlY3RVUkwgPyAiZ2V0VVJMQXR0cmli
dXRlIiA6ICJnZXRBdHRyaWJ1dGUiOwotICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAt
PiRnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoSFRNTE5hbWVzOjoke2NvbnRlbnRBdHRyaWJ1dGVO
YW1lfUF0dHIiOworICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAtPiRnZXRBdHRyaWJ1
dGVGdW5jdGlvbk5hbWUoJHtuYW1lc3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIi
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXAtPiRn
ZXR0ZXJGdW5jKCI7CiAgICAgICAgIH0KQEAgLTY3MCw2ICs2NzMsNyBAQCBzdWIgR2VuZXJhdGVO
b3JtYWxBdHRyU2V0dGVyCiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNz
SW5kZXggPSBzaGlmdDsKICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRp
bnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwogCkBAIC03MzgsOSArNzQyLDEwIEBAIEVORAog
ICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICAgICAgbXkgJHJlZmxlY3RVUkwgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07CiAgICAgICAg
IGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgewotICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSFRNTE5hbWVzLmgifSA9IDE7CiAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5h
bWUgPSAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIxIiA/ICRhdHRyTmFtZSA6ICgkcmVm
bGVjdCB8fCAkcmVmbGVjdFVSTCk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGltcC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFt
ZX1BdHRyLCAkcmVzdWx0Iik7CisgICAgICAgICAgICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5l
cmF0b3ItPk5hbWVzcGFjZUZvckF0dHJpYnV0ZU5hbWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50
QXR0cmlidXRlTmFtZSk7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke25hbWVzcGFjZX0u
aCJ9ID0gMTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5z
ZXRBdHRyaWJ1dGUoJHtuYW1lc3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICRy
ZXN1bHQiKTsKICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVx
ICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhBYnN0cmFj
dEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4Q3Vz
dG9tQmluZGluZy5oIn0gPSAxOwpAQCAtMTEyOCw3ICsxMTMzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUdldHRlciJ9KSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJWOEN1c3RvbUJpbmRpbmcuaCJ9ID0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRjbGFzc0lu
ZGV4LCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0
ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkY2xhc3NJbmRleCwgJGltcGxDbGFzc05hbWUsICRp
bnRlcmZhY2VOYW1lKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwKICAgICAgICAgICAg
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tU2V0
dGVyIn0pIHsKQEAgLTExMzcsNyArMTE0Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9N
R2xvYmFsT2JqZWN0In0gfHwgZGllICJSZXBsYWNlYWJsZSBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUg
dXNlZCBpbiBpbnRlcmZhY2UgdGhhdCBkZWZpbmVzIEV4dGVuZHNET01HbG9iYWxPYmplY3QgYXR0
cmlidXRlISI7CiAgICAgICAgICAgICAjIEdlbmVyYXRlUmVwbGFjZWFibGVBdHRyU2V0dGVyKCRp
bXBsQ2xhc3NOYW1lKTsKICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJl
YWRvbmx5LyAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhSZWFkT25seSJ9KSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0
dHJpYnV0ZSwgJGRhdGFOb2RlLCAkY2xhc3NJbmRleCwgJGltcGxDbGFzc05hbWUpOworICAgICAg
ICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGNs
YXNzSW5kZXgsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gNDgwMzcp
CisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBN
Y0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDI2ICs0
Myw2IEBAIFNWR0FsdEdseXBoRWxlbWVudDo6flNWR0FsdEdseXBoRWxlbWVudCgKIHsKIH0KIAot
dm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFNWR0FsdEdseXBoRWxlbWVudDo6Z2x5cGhS
ZWYoKSBjb25zdAotewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdseXBoUmVm
QXR0cik7Ci19Ci0KLXZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpzZXRGb3JtYXQoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSBOT19NT0RJRklDQVRJ
T05fQUxMT1dFRF9FUlI7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgU1ZHQWx0R2x5cGhFbGVt
ZW50Ojpmb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmZvcm1hdEF0dHIpOwotfQotCiBib29sIFNWR0FsdEdseXBoRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKIHsKICAgICBpZiAoY2hpbGQtPmlzVGV4
dE5vZGUoKSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmlkbAkocmV2aXNpb24gNDgw
MzcpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw5ICsyNiw5IEBACiBtb2R1bGUgc3ZnIHsKIAogICAgIGludGVyZmFjZSBbQ29uZGl0
aW9uYWw9U1ZHJlNWR19GT05UU10gU1ZHQWx0R2x5cGhFbGVtZW50IDogU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlIHsKLSAgICAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBnbHlwaFJlZgorICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBnbHlwaFJl
ZgogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGZvcm1hdAorICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBmb3JtYXQKICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODE0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDA5LTA5LTA3ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGNhbUBtY2MuaWQuYXU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxsb3cgW1JlZmxlY3RdIG9uIFNWRyBlbGVtZW50cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTM2CisKKyAgICAg
ICAgVGVzdCB0aGF0IFNWR0FsdEdseXBoRWxlbWVudCByZWZsZWN0cyBmb3JtYXQ9IiIgYW5kIGds
eXBoUmVmPSIiCisgICAgICAgIGNvcnJlY3RseS4KKworICAgICAgICAqIHN2Zy9kb20vU1ZHQWx0
R2x5cGhFbGVtZW50OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVu
dC9hbHRHbHlwaC1yZWZsZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdBbHRHbHlwaEVsZW1lbnQvYWx0R2x5cGgtcmVmbGVjdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVudC9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9kb20vU1ZHQWx0R2x5cGhFbGVtZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sOiBD
b3BpZWQgZnJvbQorICAgICAgICBMYXlvdXRUZXN0cy9zdmcvZG9tL3Jlc291cmNlcy9URU1QTEFU
RS5odG1sIHdpdGggc29tZSBleHRyYSAiLi4vInMuCisgICAgICAgICogc3ZnL2RvbS9TVkdBbHRH
bHlwaEVsZW1lbnQvcmVzb3VyY2VzL2FsdEdseXBoLXJlZmxlY3QuanM6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9kb20vYWx0R2x5cGgtZG9tLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9t
L3Jlc291cmNlcy9hbHRHbHlwaC1kb20uanM6IFJlbW92ZSBzdWJ0ZXN0IHRoYXQgYXNzdW1lcwor
ICAgICAgICBhc3NpZ25pbmcgdG8gPGFsdEdseXBoPi5mb3JtYXQgdGhyb3dzLgorCiAyMDA5LTA5
LTA3ICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAKICAgICAgICAgUnViYmVy
LXN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vYWx0R2x5
cGgtZG9tLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL2Fs
dEdseXBoLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ4MDM3KQorKysgTGF5b3V0VGVzdHMv
c3ZnL2RvbS9hbHRHbHlwaC1kb20tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDcg
KzcsNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNTIGFs
dEdseXBoLnRhZ05hbWUgaXMgImFsdEdseXBoIgogUEFTUyBhbHRHbHlwaC5uYW1lc3BhY2VVUkkg
aXMgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogUEFTUyBhbHRHbHlwaC5mb3JtYXQgaXMg
ImltYWdlL3N2Zyt4bWwiCi1QQVNTIGFsdEdseXBoLmZvcm1hdCA9ICd4JyB0aHJldyBleGNlcHRp
b24gRXJyb3I6IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogRE9NIEV4Y2VwdGlvbiA3Lgog
UEFTUyBhbHRHbHlwaC5nZXRTdGFydFBvc2l0aW9uT2ZDaGFyKDApLnggaXMgMAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0Fs
dEdseXBoRWxlbWVudC9hbHRHbHlwaC1yZWZsZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVudC9hbHRHbHlwaC1yZWZsZWN0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHQWx0
R2x5cGhFbGVtZW50L2FsdEdseXBoLXJlZmxlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGdseXBoUmVmIGFuZCBm
b3JtYXQgcHJvcGVydGllcyBvbiBhbiBTVkdBbHRHbHlwaEVsZW1lbnQgcmVmbGVjdCB0aGUgY29y
cmVzcG9uZGluZyBhdHRyaWJ1dGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBhbHRHbHlwaC5nbHlwaFJlZiBpcyAiIgorUEFTUyBhbHRHbHlwaC5mb3JtYXQgaXMgIiIK
K1BBU1MgYWx0R2x5cGguZ2x5cGhSZWYgaXMgInNvbWVHbHlwaCIKK1BBU1MgYWx0R2x5cGguZm9y
bWF0IGlzICJvcGVudHlwZSIKK1BBU1MgYWx0R2x5cGguZ2x5cGhSZWYgaXMgInNvbWVPdGhlckds
eXBoIgorUEFTUyBhbHRHbHlwaC5mb3JtYXQgaXMgInRydWV0eXBlIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9kb20vU1ZHQWx0R2x5cGhFbGVtZW50L2FsdEdseXBoLXJlZmxlY3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVudC9hbHRHbHlwaC1yZWZs
ZWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBo
RWxlbWVudC9hbHRHbHlwaC1yZWZsZWN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2FsdEdseXBoLXJlZmxlY3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEds
eXBoRWxlbWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAko
cmV2aXNpb24gNDgwMzcpCShmcm9tIExheW91dFRlc3RzL3N2Zy9kb20vcmVzb3VyY2VzL1RFTVBM
QVRFLmh0bWw6NDgwMzcpCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVu
dC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbHRHbHlwaEVsZW1lbnQvcmVzb3VyY2VzL1RF
TVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbHRHbHlw
aEVsZW1lbnQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxMyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQg
c3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdBbHRHbHlwaEVsZW1l
bnQvcmVzb3VyY2VzL2FsdEdseXBoLXJlZmxlY3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdBbHRHbHlwaEVsZW1lbnQvcmVzb3VyY2VzL2FsdEdseXBoLXJlZmxlY3Qu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR0FsdEdseXBoRWxlbWVu
dC9yZXNvdXJjZXMvYWx0R2x5cGgtcmVmbGVjdC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MCBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgZ2x5cGhSZWYgYW5k
IGZvcm1hdCBwcm9wZXJ0aWVzIG9uIGFuIFNWR0FsdEdseXBoRWxlbWVudCByZWZsZWN0IHRoZSBj
b3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMuIik7CisKK3ZhciBhbHRHbHlwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAiYWx0R2x5cGgiKTsK
Kworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJhbHRHbHlwaC5nbHlwaFJlZiIsICIiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiYWx0R2x5cGguZm9ybWF0IiwgIiIpOworCithbHRHbHlwaC5nbHlw
aFJlZiA9ICJzb21lR2x5cGgiOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJhbHRHbHlwaC5nbHlw
aFJlZiIsICJzb21lR2x5cGgiKTsKKworYWx0R2x5cGguZm9ybWF0ID0gIm9wZW50eXBlIjsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiYWx0R2x5cGguZm9ybWF0IiwgIm9wZW50eXBlIik7CisKK2Fs
dEdseXBoLnNldEF0dHJpYnV0ZSgiZ2x5cGhSZWYiLCAic29tZU90aGVyR2x5cGgiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiYWx0R2x5cGguZ2x5cGhSZWYiLCAic29tZU90aGVyR2x5cGgiKTsK
KworYWx0R2x5cGguc2V0QXR0cmlidXRlKCJmb3JtYXQiLCAidHJ1ZXR5cGUiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiYWx0R2x5cGguZm9ybWF0IiwgInRydWV0eXBlIik7CisKK3N1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3Jlc291cmNlcy9h
bHRHbHlwaC1kb20uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXNvdXJj
ZXMvYWx0R2x5cGgtZG9tLmpzCShyZXZpc2lvbiA0ODAzNykKKysrIExheW91dFRlc3RzL3N2Zy9k
b20vcmVzb3VyY2VzL2FsdEdseXBoLWRvbS5qcwkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDYg
QEAgdmFyIGFsdEdseXBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIgogc2hvdWxkQmUoImFs
dEdseXBoLnRhZ05hbWUiLCAnImFsdEdseXBoIicpOwogc2hvdWxkQmUoImFsdEdseXBoLm5hbWVz
cGFjZVVSSSIsICciaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJyk7CiBzaG91bGRCZSgiYWx0
R2x5cGguZm9ybWF0IiwgJyJpbWFnZS9zdmcreG1sIicpOwotc2hvdWxkVGhyb3coImFsdEdseXBo
LmZvcm1hdCA9ICd4JyIpOwogCiBzaG91bGRCZSgiYWx0R2x5cGguZ2V0U3RhcnRQb3NpdGlvbk9m
Q2hhcigwKS54IiwgJzAnKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39406</attachid>
            <date>2009-09-10 20:30:53 -0700</date>
            <delta_ts>2009-09-18 13:07:31 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>28936-v3.patch</filename>
            <type>text/plain</type>
            <size>22019</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODI3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDktMTAgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5p
ZC5hdT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyBbUmVmbGVjdF0gb24gU1ZHIGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzYKKworICAgICAgICBVcGRhdGUgdGhlIEpTIGJp
bmRpbmcgZ2VuZXJhdG9ycyB0byByZWZlcmVuY2UgU1ZHTmFtZXMgaW5zdGVhZCBvZgorICAgICAg
ICBIVE1MTmFtZXMsIGlmIFtSZWZsZWN0XWluZyBhbiBhdHRyaWJ1dGUgb24gYW4gU1ZHIGVsZW1l
bnQuICBNYWtlCisgICAgICAgIFNWR0VsZW1lbnQ6OmlkIHVzZSBbUmVmbGVjdF0uCisKKyAgICAg
ICAgQWxzbyBtYWtlIFtSZWZsZWN0XSBvbiBhbiBhdHRyaWJ1dGUgd2l0aCBhIHNldHRlciBleGNl
cHRpb24gd29yayBpbiBPYmpDCisgICAgICAgIGJpbmRpbmdzLgorCisgICAgICAgIFRlc3Q6IHN2
Zy9kb20vaWQtcmVmbGVjdC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06IEFkZCBhIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUKKyAgICAgICAgYXBw
cm9wcmlhdGUgQysrIG5hbWVzcGFjZSBmb3IgYXR0cmlidXRlIG5hbWUgY29uc3RhbnRzLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06IEdlbmVyYXRlIEV4
Y2VwdGlvbkNvZGUgaGFuZGxpbmcKKyAgICAgICAgY29kZSBmb3IgW1JlZmxlY3RdIG9uIGFuIGF0
dHJpYnV0ZSB3aXRoIGEgc2V0dGVyIGV4Y2VwdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JDT00ucG06IEdlbmVyYXRlICJTVkdOYW1lcyIgaW5zdGVhZCBvZgor
ICAgICAgICAiSFRNTE5hbWVzIiB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuY3BwOiBSZW1vdmUgZ2V0dGVyIGFuZCBzZXR0ZXIgbWV0aG9kcyBmb3IgaWQuCisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaWRs
OiBBZGQgW1JlZmxlY3RdIHRvIGlkLgorCiAyMDA5LTA5LTA4ICBKb2huIEFiZC1FbC1NYWxlayAg
PGphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlz
aW9uIDQ4MjcxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0J
KHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDEyIEBAIG15ICVzdmdBbmltYXRlZFR5cGVIYXNo
ID0gKCJTVkdBbmltYXRlZEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVkdBbmltYXRl
ZFJlY3QiID0+IDEsICJTVkdBbmltYXRlZFN0cmluZyIgPT4gMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QiID0+IDEpOwogCitteSAlc3ZnQXR0
cmlidXRlc0luSFRNTEhhc2ggPSAoImNsYXNzIiA9PiAxLCAiaWQiID0+IDEsICJvbmFib3J0IiA9
PiAxLCAib25jbGljayIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25l
cnJvciIgPT4gMSwgIm9ubG9hZCIgPT4gMSwgIm9ubW91c2Vkb3duIiA9PiAxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJvbm1vdXNlbW92ZSIgPT4gMSwgIm9ubW91c2VvdXQiID0+
IDEsICJvbm1vdXNlb3ZlciIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
b25tb3VzZXVwIiA9PiAxLCAib25yZXNpemUiID0+IDEsICJvbnNjcm9sbCIgPT4gMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAib251bmxvYWQiID0+IDEpOworCiAjIEhlbHBlcnMg
Zm9yICdTY2FuRGlyZWN0b3J5JwogbXkgJGVuZENvbmRpdGlvbiA9IDA7CiBteSAkZm91bmRGaWxl
bmFtZSA9ICIiOwpAQCAtNDI5LDQgKzQzNSwxMiBAQCBzdWIgV0tfbGNmaXJzdAogICAgIHJldHVy
biAkcmV0OwogfQogCisjIFJldHVybiB0aGUgQysrIG5hbWVzcGFjZSB0aGF0IGEgZ2l2ZW4gYXR0
cmlidXRlIG5hbWUgc3RyaW5nIGlzIGRlZmluZWQgaW4uCitzdWIgTmFtZXNwYWNlRm9yQXR0cmli
dXRlTmFtZQoreworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZU5h
bWUpID0gQF87CisgICAgcmV0dXJuICJTVkdOYW1lcyIgaWYgJGludGVyZmFjZU5hbWUgPX4gL15T
VkcvICYmICEkc3ZnQXR0cmlidXRlc0luSFRNTEhhc2h7JGF0dHJpYnV0ZU5hbWV9OworICAgIHJl
dHVybiAiSFRNTE5hbWVzIjsKK30KKwogMTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yQ09NLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCShyZXZpc2lvbiA0ODI3MSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MjUs
NyArNTI1LDcgQEAgc3ViIEdlbmVyYXRlQ1BQQXR0cmlidXRlU2lnbmF0dXJlCiAKIHN1YiBHZW5l
cmF0ZUNQUEF0dHJpYnV0ZQogewotICAgIG15ICgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1w
bGVtZW50YXRpb25DbGFzcykgPSBAXzsKKyAgICBteSAoJGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwg
JGltcGxlbWVudGF0aW9uQ2xhc3MsICRJRExUeXBlKSA9IEBfOwogCiAgICAgbXkgJGltcGxlbWVu
dGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlID0gU3RyaXBOYW1lc3BhY2UoJGltcGxlbWVudGF0
aW9uQ2xhc3MpOwogCkBAIC01OTksOSArNTk5LDEwIEBAIHN1YiBHZW5lcmF0ZUNQUEF0dHJpYnV0
ZQogICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICAgICAgbXkgJHJlZmxlY3RVUkwgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07CiAgICAg
ICAgIGlmICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgewotICAgICAgICAgICAgJENQUEltcGxl
bWVudGF0aW9uV2ViQ29yZUluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsKICAgICAgICAgICAg
IG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVx
ICIxIikgPyAkYXR0cmlidXRlTmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCk7Ci0gICAg
ICAgICAgICBwdXNoKEBzZXR0ZXJJbXBsZW1lbnRhdGlvbiwgIiAgICBpbXBsJHtpbXBsZW1lbnRh
dGlvbkNsYXNzV2l0aG91dE5hbWVzcGFjZX0oKS0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAiIC4gam9pbigiLCAiLCBAc2V0dGVy
UGFyYW1zKSAuICIpO1xuIik7CisgICAgICAgICAgICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5l
cmF0b3ItPk5hbWVzcGFjZUZvckF0dHJpYnV0ZU5hbWUoJElETFR5cGUsICRjb250ZW50QXR0cmli
dXRlTmFtZSk7CisgICAgICAgICAgICAkQ1BQSW1wbGVtZW50YXRpb25XZWJDb3JlSW5jbHVkZXN7
IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgcHVzaChAc2V0dGVySW1wbGVtZW50
YXRpb24sICIgICAgaW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCkt
PnNldEF0dHJpYnV0ZShXZWJDb3JlOjoke25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5h
bWV9QXR0ciwgIiAuIGpvaW4oIiwgIiwgQHNldHRlclBhcmFtcykgLiAiKTtcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAc2V0dGVySW1wbGVtZW50YXRpb24sICIgICAg
aW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCktPiR7c2V0dGVyTmFt
ZX0oIiAuIGpvaW4oIiwgIiwgQHNldHRlclBhcmFtcykgLiAiKTtcbiIpOwogICAgICAgICB9CkBA
IC02MjEsMTAgKzYyMiwxMSBAQCBzdWIgR2VuZXJhdGVDUFBBdHRyaWJ1dGUKICAgICBteSAkcmVm
bGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxl
Y3QifTsKICAgICBteSAkcmVmbGVjdFVSTCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RVUkwifTsKICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxl
Y3RVUkwpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siSFRNTE5hbWVzLmgifSA9IDE7CiAgICAg
ICAgIG15ICRjb250ZW50QXR0cmlidXRlTmFtZSA9ICgoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwp
IGVxICIxIikgPyAkYXR0cmlidXRlTmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCk7Cisg
ICAgICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmli
dXRlTmFtZSgkSURMVHlwZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7CiAgICAgICAgIG15ICRnZXRBdHRyaWJ1dGVG
dW5jdGlvbk5hbWUgPSAkcmVmbGVjdFVSTCA/ICJnZXRVUkxBdHRyaWJ1dGUiIDogImdldEF0dHJp
YnV0ZSI7Ci0gICAgICAgICRpbXBsZW1lbnRhdGlvbkdldHRlciA9ICJpbXBsJHtpbXBsZW1lbnRh
dGlvbkNsYXNzV2l0aG91dE5hbWVzcGFjZX0oKS0+JHtnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWV9
KFdlYkNvcmU6OkhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyKSI7CisgICAg
ICAgICRpbXBsZW1lbnRhdGlvbkdldHRlciA9ICJpbXBsJHtpbXBsZW1lbnRhdGlvbkNsYXNzV2l0
aG91dE5hbWVzcGFjZX0oKS0+JHtnZXRBdHRyaWJ1dGVGdW5jdGlvbk5hbWV9KFdlYkNvcmU6OiR7
bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyKSI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgJGltcGxlbWVudGF0aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xh
c3NXaXRob3V0TmFtZXNwYWNlfSgpLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0
dHJpYnV0ZU5hbWUpIC4gIigiIC4gKCRoYXNHZXR0ZXJFeGNlcHRpb24gPyAiZWMiIDogIiIpLiAi
KSI7CiAgICAgfQpAQCAtMTE1NSw3ICsxMTU3LDcgQEAgc3ViIEdlbmVyYXRlQ1BQSW1wbGVtZW50
YXRpb24KIAogICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluQ1BQSW1wbGVtZW50
YXRpb24oJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKIAotICAgICAgICAgICAgICAgIG15
ICVhdHRyaWJ1dGVzID0gR2VuZXJhdGVDUFBBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGNsYXNzTmFt
ZSwgJGltcGxlbWVudGF0aW9uQ2xhc3MpOworICAgICAgICAgICAgICAgIG15ICVhdHRyaWJ1dGVz
ID0gR2VuZXJhdGVDUFBBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVu
dGF0aW9uQ2xhc3MsICRJRExUeXBlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBDUFBJbXBsZW1l
bnRhdGlvbkNvbnRlbnQsIHZhbHVlcyglYXR0cmlidXRlcykpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xMTgzLDcgKzExODUsNyBAQCBzdWIgR2VuZXJhdGVDUFBJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkNQUEltcGxlbWVudGF0aW9uKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CiAKLSAgICAgICAgICAgIG15ICVhdHRyaWJ1dGVz
ID0gR2VuZXJhdGVDUFBBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGNsYXNzTmFtZSwgJGltcGxlbWVu
dGF0aW9uQ2xhc3MpOworICAgICAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSBHZW5lcmF0ZUNQUEF0
dHJpYnV0ZSgkYXR0cmlidXRlLCAkY2xhc3NOYW1lLCAkaW1wbGVtZW50YXRpb25DbGFzcywgJElE
TFR5cGUpOwogICAgICAgICAgICAgcHVzaChAQ1BQSW1wbGVtZW50YXRpb25Db250ZW50LCB2YWx1
ZXMoJWF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzAxLDEwICsxMzAxLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkcmVmbGVjdCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZWZsZWN0IHx8
ICRyZWZsZWN0VVJMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSFRNTE5hbWVzLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNv
bnRlbnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/
ICRuYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5lcmF0b3ItPk5hbWVzcGFjZUZvckF0dHJp
YnV0ZU5hbWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50QXR0cmlidXRlTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGdldEF0dHJpYnV0ZUZ1bmN0aW9uTmFt
ZSA9ICRyZWZsZWN0VVJMID8gImdldFVSTEF0dHJpYnV0ZSIgOiAiZ2V0QXR0cmlidXRlIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiaW1wLT4kZ2V0QXR0cmlidXRlRnVu
Y3Rpb25OYW1lKEhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyKSIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiaW1wLT4kZ2V0QXR0cmlidXRlRnVuY3Rp
b25OYW1lKCR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyKSIKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHZhbHVlID0gImltcC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xNDYxLDkgKzE0NjIsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJlZmxlY3QgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxOYW1l
cy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnRl
bnRBdHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/ICRu
YW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+c2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAkbmF0aXZlVmFsdWUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdl
bmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNvbnRl
bnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXRBdHRyaWJ1dGUo
JHtuYW1lc3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsICRuYXRpdmVWYWx1ZSIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQk
aW1wbFNldHRlckZ1bmN0aW9uTmFtZSgkbmF0aXZlVmFsdWUiKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdvcmtpbmcgY29weSkKQEAgLTExNDQsMTAgKzEx
NDQsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRyZWZs
ZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVj
dCJ9OwogICAgICAgICAgICAgbXkgJHJlZmxlY3RVUkwgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0VVJMIn07CiAgICAgICAgICAgICBpZiAoJHJl
ZmxlY3QgfHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJI
VE1MTmFtZXMuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkY29udGVudEF0dHJpYnV0ZU5h
bWUgPSAoKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSBlcSAiMSIpID8gJGF0dHJpYnV0ZU5hbWUg
OiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpOworICAgICAgICAgICAgICAgIG15ICRuYW1lc3Bh
Y2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50ZXJmYWNl
TmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkZ2V0QXR0cmli
dXRlRnVuY3Rpb25OYW1lID0gJHJlZmxlY3RVUkwgPyAiZ2V0VVJMQXR0cmlidXRlIiA6ICJnZXRB
dHRyaWJ1dGUiOwotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJJTVBMLT4k
e2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6SFRNTE5hbWVzOjoke2NvbnRlbnRB
dHRyaWJ1dGVOYW1lfUF0dHIiOworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9
ICJJTVBMLT4ke2dldEF0dHJpYnV0ZUZ1bmN0aW9uTmFtZX0oV2ViQ29yZTo6JHtuYW1lc3BhY2V9
Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiSU1QTC0+IiAuICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKSAuICIoIjsKICAgICAgICAgICAgIH0KQEAg
LTEyNzgsMjAgKzEyNzksMjAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIElNUEwtPiRjb3JlU2V0dGVyTmFtZSgkYXJnKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJGhhc1NldHRlckV4Y2VwdGlv
bikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0
aW9uSW5pdFxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IElNUEwtPiRjb3JlU2V0dGVyTmFtZSgkYXJnLCBlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJHJlZmxlY3Qg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07
CiAgICAgICAgICAgICAgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIikgaWYgJGhhc1Nl
dHRlckV4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVjID0gJGhhc1NldHRlckV4
Y2VwdGlvbiA/ICIsIGVjIiA6ICIiOwogICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZmxlY3Qg
fHwgJHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkhUTUxOYW1lcy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnRlbnRB
dHRyaWJ1dGVOYW1lID0gKCgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiKSA/ICRhdHRy
aWJ1dGVOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIElNUEwtPnNldEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciwgJGFyZyk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lc3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFt
ZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7bmFtZXNwYWNl
fS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSU1QTC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OiR7bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0
cmlidXRlTmFtZX1BdHRyLCAkYXJnJGVjKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSU1Q
TC0+JGNvcmVTZXR0ZXJOYW1lKCRhcmcpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBJTVBMLT4kY29yZVNldHRlck5hbWUoJGFyZyRlYyk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKSBpZiAkaGFzU2V0dGVyRXhj
ZXB0aW9uOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDcgQEAg
c3ViIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcgogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0Owog
ICAgIG15ICRjbGFzc0luZGV4ID0gc2hpZnQ7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlm
dDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCiAgICAgbXkgJGF0dHJFeHQgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKIApAQCAtNTU5LDEwICs1
NjAsMTEgQEAgRU5ECiAgICAgICAgIG15ICRyZWZsZWN0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9OwogICAgICAgICBteSAkcmVmbGVjdFVS
TCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlZmxlY3RV
UkwifTsKICAgICAgICAgaWYgKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKSB7Ci0gICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJIVE1MTmFtZXMuaCJ9ID0gMTsKICAgICAgICAgICAgIG15ICRjb250
ZW50QXR0cmlidXRlTmFtZSA9ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCkgZXEgIjEiID8gJGF0
dHJOYW1lIDogKCRyZWZsZWN0IHx8ICRyZWZsZWN0VVJMKTsKKyAgICAgICAgICAgIG15ICRuYW1l
c3BhY2UgPSAkY29kZUdlbmVyYXRvci0+TmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZSgkaW50ZXJm
YWNlTmFtZSwgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IiR7bmFtZXNwYWNlfS5oIn0gPSAxOwogICAgICAgICAgICAgbXkgJGdldEF0dHJpYnV0ZUZ1
bmN0aW9uTmFtZSA9ICRyZWZsZWN0VVJMID8gImdldFVSTEF0dHJpYnV0ZSIgOiAiZ2V0QXR0cmli
dXRlIjsKLSAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0QXR0cmlidXRlRnVu
Y3Rpb25OYW1lKEhUTUxOYW1lczo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyIjsKKyAgICAg
ICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0QXR0cmlidXRlRnVuY3Rpb25OYW1lKCR7
bmFtZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyIjsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wLT4kZ2V0dGVyRnVuYygiOwogICAg
ICAgICB9CkBAIC02NzAsNiArNjcyLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgog
ICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc0luZGV4ID0gc2hpZnQ7CiAg
ICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNo
aWZ0OwogCiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlczsKIApAQCAtNzM4LDkgKzc0MSwxMCBAQCBFTkQKICAgICAgICAgbXkgJHJlZmxl
Y3QgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0
In07CiAgICAgICAgIG15ICRyZWZsZWN0VVJMID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdFVSTCJ9OwogICAgICAgICBpZiAoJHJlZmxlY3QgfHwg
JHJlZmxlY3RVUkwpIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxOYW1lcy5oIn0g
PSAxOwogICAgICAgICAgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gKCRyZWZsZWN0IHx8
ICRyZWZsZWN0VVJMKSBlcSAiMSIgPyAkYXR0ck5hbWUgOiAoJHJlZmxlY3QgfHwgJHJlZmxlY3RV
UkwpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0ciwgJHJlc3VsdCIp
OworICAgICAgICAgICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VG
b3JBdHRyaWJ1dGVOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOwor
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0QXR0cmlidXRlKCR7bmFt
ZXNwYWNlfTo6JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAkcmVzdWx0Iik7CiAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIp
IHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgi
fSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEN1c3RvbUJpbmRpbmcuaCJ9ID0g
MTsKQEAgLTExMzMsNyArMTEzNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21HZXR0ZXIifSkgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhDdXN0b21CaW5kaW5n
LmgifSA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGRhdGFOb2RlLCAkY2xhc3NJbmRleCwgJGltcGxDbGFzc05h
bWUpOworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRk
YXRhTm9kZSwgJGNsYXNzSW5kZXgsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8CiAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVNldHRlciJ9KSB7CkBAIC0xMTQy
LDcgKzExNDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9IHx8
IGRpZSAiUmVwbGFjZWFibGUgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW50ZXJmYWNl
IHRoYXQgZGVmaW5lcyBFeHRlbmRzRE9NR2xvYmFsT2JqZWN0IGF0dHJpYnV0ZSEiOwogICAgICAg
ICAgICAgIyBHZW5lcmF0ZVJlcGxhY2VhYmxlQXR0clNldHRlcigkaW1wbENsYXNzTmFtZSk7CiAg
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8gJiYgISRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4UmVhZE9ubHkifSkgewot
ICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9k
ZSwgJGNsYXNzSW5kZXgsICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9y
bWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRjbGFzc0luZGV4LCAkaW1wbENs
YXNzTmFtZSwgJGludGVyZmFjZU5hbWUpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykg
MjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICAgIENvcHlyaWdodCAoQykgMjAwOSBD
YW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NzcsMTYgKzc4LDYgQEAgYm9vbCBTVkdFbGVtZW50Ojppc1N1cHBvcnRlZChTdHJpbmdJbXBsKgog
ICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9u
KTsKIH0KIAotU3RyaW5nIFNWR0VsZW1lbnQ6OmlkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0
QXR0cmlidXRlKGlkQXR0cik7Ci19Ci0KLXZvaWQgU1ZHRWxlbWVudDo6c2V0SWQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgc2V0QXR0cmlidXRlKGlkQXR0ciwg
dmFsdWUpOwotfQotCiBTdHJpbmcgU1ZHRWxlbWVudDo6eG1sYmFzZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShYTUxOYW1lczo6YmFzZUF0dHIpOwpAQCAtMjQ0LDcgKzIzNSw3
IEBAIHZvaWQgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIFN0eWxlZEVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
KiBleHRlbnNpb25zID0gZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogCi0gICAg
U3RyaW5nIHJlc291cmNlSWQgPSBTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChpZCgpKTsKKyAg
ICBTdHJpbmcgcmVzb3VyY2VJZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGdldEF0dHJp
YnV0ZShpZEF0dHIpKTsKICAgICBpZiAoZXh0ZW5zaW9ucy0+aXNQZW5kaW5nUmVzb3VyY2UocmVz
b3VyY2VJZCkpIHsKICAgICAgICAgc3RkOjphdXRvX3B0cjxIYXNoU2V0PFNWR1N0eWxlZEVsZW1l
bnQqPiA+IGNsaWVudHMoZXh0ZW5zaW9ucy0+cmVtb3ZlUGVuZGluZ1Jlc291cmNlKHJlc291cmNl
SWQpKTsKICAgICAgICAgaWYgKGNsaWVudHMtPmlzRW1wdHkoKSkKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJl
dmlzaW9uIDQ4MjcxKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw4ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7CiAKLSAgICAgICAgU3RyaW5nIGlk
KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICBTdHJpbmcgeG1sYmFzZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFht
bGJhc2UoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmlk
bAkocmV2aXNpb24gNDgyNzEpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogbW9kdWxlIHN2ZyB7CiAKICAgICBpbnRlcmZhY2Ug
W0dlbmVyYXRlTmF0aXZlQ29udmVydGVyLCBDb25kaXRpb25hbD1TVkddIFNWR0VsZW1lbnQgOiBF
bGVtZW50IHsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIGlkCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51
bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyBpZAogICAgICAgICAgICAgICAgICAg
ICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgeG1sYmFzZQogICAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDgyNzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMSBAQAorMjAwOS0wOS0xMCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxjYW1AbWNjLmlkLmF1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
IFtSZWZsZWN0XSBvbiBTVkcgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODkzNgorCisgICAgICAgIFVwZGF0ZSB0aGUgSlMgYmluZGlu
ZyBnZW5lcmF0b3JzIHRvIHJlZmVyZW5jZSBTVkdOYW1lcyBpbnN0ZWFkIG9mCisgICAgICAgIEhU
TUxOYW1lcywgaWYgW1JlZmxlY3RdaW5nIGFuIGF0dHJpYnV0ZSBvbiBhbiBTVkcgZWxlbWVudC4g
IE1ha2UKKyAgICAgICAgU1ZHRWxlbWVudDo6aWQgdXNlIFtSZWZsZWN0XS4KKworICAgICAgICBB
bHNvIG1ha2UgW1JlZmxlY3RdIG9uIGFuIGF0dHJpYnV0ZSB3aXRoIGEgc2V0dGVyIGV4Y2VwdGlv
biB3b3JrIGluIE9iakMKKyAgICAgICAgYmluZGluZ3MuCisKKyAgICAgICAgKiBzdmcvZG9tL3Jl
c291cmNlcy9pZC1yZWZsZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL2lkLXJlZmxl
Y3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL2lkLXJlZmxlY3QuaHRt
bDogQWRkZWQuCisKIDIwMDktMDktMTAgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2RvbS9pZC1yZWZsZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZG9tL2lkLXJlZmxlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2RvbS9pZC1yZWZsZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOCBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBpZCBwcm9wZXJ0eSBvbiBhbiBTVkdF
bGVtZW50IHJlZmxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZy5pZCBpcyAiIgorUEFTUyBnLmlkIGlzICJhYmMi
CitQQVNTIGcuZ2V0QXR0cmlidXRlKCdpZCcpIGlzICJkZWYiCitQQVNTIHRzcGFuLmlkIGlzICIi
CitQQVNTIHRzcGFuLmlkIGlzICJhYmMiCitQQVNTIHRzcGFuLmdldEF0dHJpYnV0ZSgnaWQnKSBp
cyAiZGVmIgorUEFTUyBmb3JlaWduT2JqZWN0LmlkIGlzICIiCitQQVNTIGZvcmVpZ25PYmplY3Qu
aWQgaXMgImFiYyIKK1BBU1MgZm9yZWlnbk9iamVjdC5nZXRBdHRyaWJ1dGUoJ2lkJykgaXMgImRl
ZiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL2lkLXJlZmxlY3QuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvZG9tL2lkLXJlZmxlY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9kb20vaWQtcmVmbGVjdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9pZC1yZWZsZWN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXNvdXJjZXMvaWQtcmVmbGVjdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL3Jlc291cmNlcy9pZC1yZWZsZWN0
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9yZXNvdXJjZXMvaWQtcmVm
bGVjdC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBjaGVja3MgdGhhdCB0aGUgaWQgcHJvcGVydHkgb24gYW4gU1ZHRWxlbWVudCByZWZsZWN0
cyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUuIik7CisKK3ZhciBlbGVtZW50TmFtZXMgPSBb
J2cnLCAndHNwYW4nLCAnZm9yZWlnbk9iamVjdCddOworCitmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnROYW1lcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBlbGVtZW50TmFtZSA9IGVsZW1lbnRO
YW1lc1tpXTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCBlbGVtZW50TmFtZSk7CisgICAgdGhpc1tlbGVtZW50
TmFtZV0gPSBlbGVtZW50OworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGVsZW1lbnROYW1l
ICsgIi5pZCIsICIiKTsKKworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJhYmMiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZWxlbWVudE5hbWUgKyAiLmlkIiwgImFiYyIpOwor
CisgICAgZWxlbWVudC5pZCA9ICJkZWYiOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZyhlbGVt
ZW50TmFtZSArICIuZ2V0QXR0cmlidXRlKCdpZCcpIiwgImRlZiIpOworfQorCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="20502"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="20633"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>