<?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>87856</bug_id>
          
          <creation_ts>2012-05-30 08:00:34 -0700</creation_ts>
          <short_desc>Web Inspector: Add requestMetadata command and metadataReceived event to FileSystem</short_desc>
          <delta_ts>2012-06-26 03:26:56 -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>Web Inspector (Deprecated)</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89420</dependson>
    
    <dependson>89555</dependson>
    
    <dependson>89739</dependson>
          <blocked>68203</blocked>
    
    <blocked>89961</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>637227</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-30 08:00:34 -0700</bug_when>
    <thetext>FileSystem support of Inspector need a way to getting file metadata, including modification time, file size and view type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637233</commentid>
    <comment_count>1</comment_count>
      <attachid>144820</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-30 08:03:00 -0700</bug_when>
    <thetext>Created attachment 144820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637252</commentid>
    <comment_count>2</comment_count>
      <attachid>144820</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-30 08:20:47 -0700</bug_when>
    <thetext>Comment on attachment 144820
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=144820&amp;action=review

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:2
&gt; + * Copyright (C) 2011,2012 Google Inc. All rights reserved.

nit: please put space after comma

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:144
&gt; +    virtual bool handleEvent(FileError* entry) OVERRIDE

nit: entry -&gt; error?

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:208
&gt; +                                    scriptExecutionContext(), type, m_path));

(These many line breaks may not look very common in WebKit... though if other files in this directory look like this it&apos;d be probably ok)

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:2
&gt; + * Copyright (C) 2011,2012 Google Inc. All rights reserved.

please put space after comma

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:49
&gt; +typedef String ErrorString;

No need of typedef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637269</commentid>
    <comment_count>3</comment_count>
      <attachid>144830</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-30 08:41:30 -0700</bug_when>
    <thetext>Created attachment 144830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637274</commentid>
    <comment_count>4</comment_count>
      <attachid>144820</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-30 08:44:13 -0700</bug_when>
    <thetext>Comment on attachment 144820
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=144820&amp;action=review

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:2
&gt;&gt; + * Copyright (C) 2011,2012 Google Inc. All rights reserved.
&gt; 
&gt; nit: please put space after comma

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:144
&gt;&gt; +    virtual bool handleEvent(FileError* entry) OVERRIDE
&gt; 
&gt; nit: entry -&gt; error?

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:208
&gt;&gt; +                                    scriptExecutionContext(), type, m_path));
&gt; 
&gt; (These many line breaks may not look very common in WebKit... though if other files in this directory look like this it&apos;d be probably ok)

I&apos;ll look this tomorrow. Thanks.

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:2
&gt;&gt; + * Copyright (C) 2011,2012 Google Inc. All rights reserved.
&gt; 
&gt; please put space after comma

Done

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.h:49
&gt;&gt; +typedef String ErrorString;
&gt; 
&gt; No need of typedef

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652212</commentid>
    <comment_count>5</comment_count>
      <attachid>148285</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-19 01:35:57 -0700</bug_when>
    <thetext>Created attachment 148285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652393</commentid>
    <comment_count>6</comment_count>
      <attachid>148285</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-19 06:55:11 -0700</bug_when>
    <thetext>Comment on attachment 148285
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148285&amp;action=review

&gt; Source/WebCore/inspector/Inspector.json:1456
&gt; +                &quot;name&quot;: &quot;getMetadata&quot;,

requestMetadata (since the result is reported asynchronously)

&gt; Source/WebCore/inspector/Inspector.json:1458
&gt; +                    { &quot;name&quot;: &quot;requestId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Request Identifier of the command. The backend should pass back this value on corresponding gotMetadata event.&quot; },

Please typedef the type. You should also make backend generate it and return here to guarantee it is unique.

&gt; Source/WebCore/inspector/Inspector.json:1484
&gt; +                &quot;name&quot;: &quot;gotMetadata&quot;,

metadataReceived (since we always put subject first in the notification naming)

&gt; LayoutTests/http/tests/inspector/filesystem/filesystem-test.js:107
&gt; +    function gotFileSystem(fileSystem)

We use didGet notation in the rest of the inspector code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653306</commentid>
    <comment_count>7</comment_count>
      <attachid>148285</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-20 02:42:02 -0700</bug_when>
    <thetext>Comment on attachment 148285
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148285&amp;action=review

&gt;&gt; Source/WebCore/inspector/Inspector.json:1458
&gt;&gt; +                    { &quot;name&quot;: &quot;requestId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Request Identifier of the command. The backend should pass back this value on corresponding gotMetadata event.&quot; },
&gt; 
&gt; Please typedef the type. You should also make backend generate it and return here to guarantee it is unique.

It seems to affect other command and event. Let me fix it in another bug. I filed http://webkit.org/b/89555 and attached a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654227</commentid>
    <comment_count>8</comment_count>
      <attachid>148726</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-20 21:36:56 -0700</bug_when>
    <thetext>Created attachment 148726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654228</commentid>
    <comment_count>9</comment_count>
      <attachid>148285</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-20 21:38:00 -0700</bug_when>
    <thetext>Comment on attachment 148285
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148285&amp;action=review

Updated. Thanks for reviewing.

&gt;&gt; Source/WebCore/inspector/Inspector.json:1456
&gt;&gt; +                &quot;name&quot;: &quot;getMetadata&quot;,
&gt; 
&gt; requestMetadata (since the result is reported asynchronously)

Done

&gt;&gt; Source/WebCore/inspector/Inspector.json:1484
&gt;&gt; +                &quot;name&quot;: &quot;gotMetadata&quot;,
&gt; 
&gt; metadataReceived (since we always put subject first in the notification naming)

Done

&gt;&gt; LayoutTests/http/tests/inspector/filesystem/filesystem-test.js:107
&gt;&gt; +    function gotFileSystem(fileSystem)
&gt; 
&gt; We use didGet notation in the rest of the inspector code.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654322</commentid>
    <comment_count>10</comment_count>
      <attachid>148726</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-21 01:34:49 -0700</bug_when>
    <thetext>Comment on attachment 148726
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148726&amp;action=review

&gt; Source/WebCore/inspector/Inspector.json:1497
&gt; +                    { &quot;name&quot;: &quot;requestId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Request Identifier that was passed to corresponding getMetadata request.&quot; },

Request Identifier that was returned in response to the corresponding getMetadata request.

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:461
&gt; +    if (!m_enabled || !m_frontendProvider)

Report an error in the ErrorString?

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:460
&gt; +                store[requestId] = callback;

not: you can pass requestAccepted.bind(this) as FileSystemAgent.requestMetadata parameter above and call this._pendingMetadataRequests[requestId] = callback; here. This is how we usually deal with bound callbacks in the front-end code.

&gt; LayoutTests/http/tests/inspector/filesystem/filesystem-test.js:120
&gt; +            if (writer.readyState == writer.DONE)

== -&gt; ===</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655269</commentid>
    <comment_count>11</comment_count>
      <attachid>148968</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 23:44:56 -0700</bug_when>
    <thetext>Created attachment 148968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655270</commentid>
    <comment_count>12</comment_count>
      <attachid>148726</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 23:47:02 -0700</bug_when>
    <thetext>Comment on attachment 148726
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148726&amp;action=review

&gt;&gt; Source/WebCore/inspector/Inspector.json:1497
&gt;&gt; +                    { &quot;name&quot;: &quot;requestId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Request Identifier that was passed to corresponding getMetadata request.&quot; },
&gt; 
&gt; Request Identifier that was returned in response to the corresponding getMetadata request.

Done.

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:461
&gt;&gt; +    if (!m_enabled || !m_frontendProvider)
&gt; 
&gt; Report an error in the ErrorString?

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:460
&gt;&gt; +                store[requestId] = callback;
&gt; 
&gt; not: you can pass requestAccepted.bind(this) as FileSystemAgent.requestMetadata parameter above and call this._pendingMetadataRequests[requestId] = callback; here. This is how we usually deal with bound callbacks in the front-end code.

Since this is an asynchronous callback, I&apos;m worried if _pendingMetadataRequests is reset between requestMetadata and requestAccepted call.
If I use _pendingMetadataRequests directly, the callback will be possibly invoked after reset.

Ah, I didn&apos;t reset it anywhere now. I&apos;ll add it afterward.

&gt;&gt; LayoutTests/http/tests/inspector/filesystem/filesystem-test.js:120
&gt;&gt; +            if (writer.readyState == writer.DONE)
&gt; 
&gt; == -&gt; ===

.DONE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655375</commentid>
    <comment_count>13</comment_count>
      <attachid>148968</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 05:25:14 -0700</bug_when>
    <thetext>Comment on attachment 148968
Patch

Rejecting attachment 148968 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
d/FileSystemModel.js.rej
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/http/tests/inspector/filesystem/filesystem-test.js
patching file LayoutTests/http/tests/inspector/filesystem/get-metadata-expected.txt
patching file LayoutTests/http/tests/inspector/filesystem/get-metadata.html

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Yury Semik...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13075012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655402</commentid>
    <comment_count>14</comment_count>
      <attachid>149012</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-22 06:10:47 -0700</bug_when>
    <thetext>Created attachment 149012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657457</commentid>
    <comment_count>15</comment_count>
      <attachid>149012</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-26 03:06:38 -0700</bug_when>
    <thetext>Comment on attachment 149012
Patch

Rejecting attachment 149012 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 11844 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
47&gt;At revision 11844.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13088455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657478</commentid>
    <comment_count>16</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-26 03:26:56 -0700</bug_when>
    <thetext>Committed r121251: &lt;http://trac.webkit.org/changeset/121251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144820</attachid>
            <date>2012-05-30 08:03:00 -0700</date>
            <delta_ts>2012-05-30 08:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120531000259.patch</filename>
            <type>text/plain</type>
            <size>13317</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4NmFjMzdkZWZjNTI0
NzFiZTRiNDc0OTBlYzFkY2FjZmRmYjQyNC4uNGRjNzhiMzA2NjI4YjM3ZTg4NGZiODVkODE1MjQ1
ODllYWM4YzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTMwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZ2V0TWV0YWRhdGEg
Y29tbWFuZCBhbmQgZ290TWV0YWRhdGEgZXZlbnQgdG8gRmlsZVN5c3RlbSBzdXBwb3J0IG9mIElu
c3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3ODU2CisKKyAgICAgICAgRmlsZVN5c3RlbSBzdXBwb3J0IG9mIEluc3BlY3RvciBuZWVkIGEg
d2F5IHRvIGdldHRpbmcgZmlsZSBtZXRhZGF0YSwgaW5jbHVkaW5nCisgICAgICAgIG1vZGlmaWNh
dGlvbiB0aW1lLCBmaWxlIHNpemUgYW5kIHZpZXcgdHlwZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
Z2V0TWV0YWRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KToKKwogMjAxMi0wNS0zMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbU2hhZG93IERPTV0gSFRNTENvbnRlbnRFbGVtZW50IGFuZCBIVE1MU2hhZG93
RWxlbWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIHZpc2libGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYzk5MTE2MDhjNGU4Y2RiYWFiNjk3ZTA1NzNkZTNl
NzRkZTQwYmI1MS4uZjMxMzY2ODM4ZmUxZTFlMGExOTg1OTA5NGNmZmRjNDc3MDgyZmQ4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTM5Myw2ICsxMzkzLDE3
IEBACiAgICAgewogICAgICAgICAiZG9tYWluIjogIkZpbGVTeXN0ZW0iLAogICAgICAgICAiaGlk
ZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJpZCI6ICJNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0
IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJtb2RpZmljYXRpb25UaW1lIiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmlld1R5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZW51bSI6IFsgInRleHQiLCAiaW1hZ2UiLCAibWVkaWEiLCAiYmluYXJ5IiBdIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6
IFsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLApAQCAt
MTQwMCwxMCArMTQxMSwzNiBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRGlzYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4uIgorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBldmVudHMgZnJvbSBiYWNrZW5kLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0TWV0YWRhdGEi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ290TWV0YWRhdGEiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SWQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZXJy
b3JDb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIm1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIk
cmVmIjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IDNh
ZmIyNmJmMTk0MTkxODJjZjhhYzlmZTNiZDE5MTc2YzFkZDI5M2MuLjExNGIxOTZjMDE3OGJmYTZi
YmY4MWIwMzAxMzdmY2ZkYWI3ZTg0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDggKzM1LDIwIEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAKICNpbmNsdWRlICJET01G
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbnRyeS5oIgor
I2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CisjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzU3LDggQEAgc3RhdGljIGNvbnN0
IGNoYXIgZmlsZVN5c3RlbUFnZW50RW5hYmxlZFtdID0gImZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQi
OwogfQogCiBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxGcm9udGVuZFByb3ZpZGVyPiB7Ci0gIHB1YmxpYzoKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGcm9udGVuZFByb3ZpZGVyKTsKK3B1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50KiBhZ2VudCwgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIGZyb250ZW5kKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZFByb3ZpZGVyKGFnZW50
LCBmcm9udGVuZCkpOwpAQCAtNjQsNyArNzcsNyBAQCBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGcm9udGVuZFBybwog
ICAgICAgICBtX2Zyb250ZW5kID0gMDsKICAgICB9CiAKLSAgcHJpdmF0ZToKK3ByaXZhdGU6CiAg
ICAgRnJvbnRlbmRQcm92aWRlcihJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50LCBJbnNw
ZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRlbmQpCiAgICAgICAgIDogbV9hZ2VudChh
Z2VudCkKICAgICAgICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKSB7IH0KQEAgLTczLDYgKzg2LDE2
MCBAQCBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxGcm9udGVuZFBybwogICAgIEluc3BlY3RvckZyb250ZW5kOjpGaWxl
U3lzdGVtKiBtX2Zyb250ZW5kOwogfTsKIAorbmFtZXNwYWNlIHsKKwordHlwZWRlZiBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIgRnJvbnRlbmRQcm92aWRlcjsKKwor
Y2xhc3MgR2V0TWV0YWRhdGFUYXNrIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LCBwdWJsaWMgUmVmQ291bnRlZDxHZXRNZXRhZGF0YVRhc2s+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHZXRNZXRhZGF0YVRhc2spOworcHVibGljOgorICAgIGNsYXNzIEVycm9yQ2FsbGJh
Y2s7CisgICAgY2xhc3MgR2V0RW50cnlDYWxsYmFjazsKKyAgICBjbGFzcyBHZXRNZXRhZGF0YUNh
bGxiYWNrOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnQgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0TWV0
YWRhdGFUYXNrKGZyb250ZW5kUHJvdmlkZXIsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHJlcXVl
c3RJZCwgdXJsKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQo
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNv
bnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRf
RVJSLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBnb3RFbnRyeShF
bnRyeSopOworICAgIHZvaWQgZ290TWV0YWRhdGEoTWV0YWRhdGEqKTsKKworICAgIHZvaWQgcmVw
b3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0YWRhdGE+IG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9u
dGVuZCgpLT5nb3RNZXRhZGF0YShtX3JlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNv
ZGUpLCBtZXRhZGF0YSk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgfQor
Citwcml2YXRlOgorICAgIEdldE1ldGFkYXRhVGFzayhQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlk
ZXI+IGZyb250ZW5kUHJvdmlkZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAg
ICAgICwgbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpCisgICAgICAgICwgbV9y
ZXF1ZXN0SWQocmVxdWVzdElkKQorICAgICAgICAsIG1fdXJsKFBhcnNlZFVSTFN0cmluZywgdXJs
KSB7IH0KKworICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7
CisgICAgaW50IG1fcmVxdWVzdElkOworICAgIEtVUkwgbV91cmw7CisgICAgU3RyaW5nIG1fcGF0
aDsKK307CisKK2NsYXNzIEdldE1ldGFkYXRhVGFzazo6RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBX
ZWJDb3JlOjpFcnJvckNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFcnJvckNh
bGxiYWNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s6
OkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0TWV0
YWRhdGFUYXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRhZGF0
YVRhc2s6OkVycm9yQ2FsbGJhY2soZ2V0TWV0YWRhdGFUYXNrKSk7CisgICAgfQorCisgICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZW50cnkpIE9WRVJSSURFCisgICAgewor
ICAgICAgICBtX2dldE1ldGFkYXRhVGFzay0+cmVwb3J0UmVzdWx0KGVudHJ5LT5jb2RlKCksIDAp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRXJyb3JDYWxs
YmFjayhQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0TWV0YWRhdGFUYXNrKQorICAgICAg
ICA6IG1fZ2V0TWV0YWRhdGFUYXNrKGdldE1ldGFkYXRhVGFzaykgeyB9CisKKyAgICBSZWZQdHI8
R2V0TWV0YWRhdGFUYXNrPiBtX2dldE1ldGFkYXRhVGFzazsKK307CisKK2NsYXNzIEdldE1ldGFk
YXRhVGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBFbnRyeUNhbGxiYWNrIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNrKTsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s6OkdldEVudHJ5Q2FsbGJhY2s+IGNyZWF0ZShQ
YXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0TWV0YWRhdGFUYXNrKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRhZGF0YVRhc2s6OkdldEVudHJ5Q2FsbGJhY2so
Z2V0TWV0YWRhdGFUYXNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KEVudHJ5KiBlbnRyeSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fZ2V0TWV0YWRhdGFUYXNr
LT5nb3RFbnRyeShlbnRyeSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBHZXRFbnRyeUNhbGxiYWNrKFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBnZXRN
ZXRhZGF0YVRhc2spCisgICAgICAgIDogbV9nZXRNZXRhZGF0YVRhc2soZ2V0TWV0YWRhdGFUYXNr
KSB7IH0KKworICAgIFJlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IG1fZ2V0TWV0YWRhdGFUYXNrOwor
fTsKKworY2xhc3MgR2V0TWV0YWRhdGFUYXNrOjpHZXRNZXRhZGF0YUNhbGxiYWNrIDogcHVibGlj
IE1ldGFkYXRhQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdldE1ldGFkYXRh
Q2FsbGJhY2spOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFz
azo6R2V0TWV0YWRhdGFDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNr
PiBnZXRNZXRhZGF0YVRhc2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdl
dE1ldGFkYXRhVGFzazo6R2V0TWV0YWRhdGFDYWxsYmFjayhnZXRNZXRhZGF0YVRhc2spKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTWV0YWRhdGEqIG1ldGFkYXRhKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgbV9nZXRNZXRhZGF0YVRhc2stPmdvdE1ldGFkYXRhKG1l
dGFkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIEdl
dE1ldGFkYXRhQ2FsbGJhY2soUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGdldE1ldGFkYXRh
VGFzaykKKyAgICAgICAgOiBtX2dldE1ldGFkYXRhVGFzayhnZXRNZXRhZGF0YVRhc2spIHsgfQor
CisgICAgUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gbV9nZXRNZXRhZGF0YVRhc2s7Cit9OworCit2
b2lkIEdldE1ldGFkYXRhVGFzazo6c3RhcnQoKQoreworICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7
CisgICAgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlwZSwg
bV9wYXRoKTsKKworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZp
bGVTeXN0ZW0oCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHlwZSwKKyAgICAg
ICAgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKEdldE1ldGFkYXRhVGFzazo6R2V0RW50cnlD
YWxsYmFjazo6Y3JlYXRlKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0TWV0YWRhdGFUYXNrOjpFcnJvckNhbGxiYWNrOjpjcmVhdGUodGhpcyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHR5
cGUsIG1fcGF0aCkpOworfQorCit2b2lkIEdldE1ldGFkYXRhVGFzazo6Z290RW50cnkoRW50cnkq
IGVudHJ5KQoreworICAgIGVudHJ5LT5nZXRNZXRhZGF0YShHZXRNZXRhZGF0YVRhc2s6OkdldE1l
dGFkYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgR2V0
TWV0YWRhdGFUYXNrOjpFcnJvckNhbGxiYWNrOjpjcmVhdGUodGhpcykpOworfQorCit2b2lkIEdl
dE1ldGFkYXRhVGFzazo6Z290TWV0YWRhdGEoTWV0YWRhdGEqIG1ldGFkYXRhKQoreworICAgIHR5
cGVkZWYgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhOjpWaWV3VHlwZSBWaWV3VHlw
ZTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
clBhdGgobV9wYXRoKTsKKyAgICBWaWV3VHlwZTo6RW51bSB2aWV3VHlwZTsKKyAgICBpZiAoTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAg
ICAgdmlld1R5cGUgPSBWaWV3VHlwZTo6SW1hZ2U7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICB2
aWV3VHlwZSA9IFZpZXdUeXBlOjpUZXh0OworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgIHZpZXdUeXBl
ID0gVmlld1R5cGU6OlRleHQ7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRNZWRpYU1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgdmlld1R5cGUgPSBWaWV3VHlw
ZTo6TWVkaWE7CisgICAgZWxzZQorICAgICAgICB2aWV3VHlwZSA9IFZpZXdUeXBlOjpCaW5hcnk7
CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhPiByZXN1bHQg
PQorICAgICAgICAgICAgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhOjpjcmVhdGUo
KQorICAgICAgICAgICAgICAgIC5zZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmlj
YXRpb25UaW1lKCkpCisgICAgICAgICAgICAgICAgLnNldFNpemUobWV0YWRhdGEtPnNpemUoKSkK
KyAgICAgICAgICAgICAgICAuc2V0Vmlld1R5cGUodmlld1R5cGUpOworICAgIHJlcG9ydFJlc3Vs
dChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oMCksIHJlc3VsdCk7Cit9CisKK30K
KwogLy8gc3RhdGljCiBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQogewpAQCAtMTAyLDYgKzI2OSwxNyBA
QCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAg
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFn
ZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OmdldE1ldGFkYXRhKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCAh
bV9mcm9udGVuZFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJvbnRl
bmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpLT5mcmFtZUZvcklkKGZyYW1lSWQpOwor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBHZXRNZXRhZGF0YVRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJv
dmlkZXIsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHJlcXVlc3RJZCwgdXJsKS0+c3RhcnQoKTsK
K30KKwogdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBBU1NFUlQoZnJvbnRlbmQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4
IGE2MzdmYTBlOTcyYjFhZTc4ZmRkOWE0MDkyZGZlMWExZjFiZGIxNmUuLjc4ZGU1ZjBiZWUyMzNm
MmU3ZDliM2I2YTJmNTA4YmM0ODY0MmVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAsMTEgKzQwLDE0IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBj
bGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKK3R5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOworCiBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyIHsKIHB1Ymxp
YzoKICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwpAQCAtNTIsMTIgKzU1LDE0IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOworICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lk
IGdldE1ldGFkYXRhKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJG
cm9udGVuZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CisgICAgdmlydHVhbCB2b2lk
IHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyRnJvbnRlbmQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgp
IE9WRVJSSURFOwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144830</attachid>
            <date>2012-05-30 08:41:30 -0700</date>
            <delta_ts>2012-06-19 01:35:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120531004129.patch</filename>
            <type>text/plain</type>
            <size>13069</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4NmFjMzdkZWZjNTI0
NzFiZTRiNDc0OTBlYzFkY2FjZmRmYjQyNC4uNGRjNzhiMzA2NjI4YjM3ZTg4NGZiODVkODE1MjQ1
ODllYWM4YzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTMwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZ2V0TWV0YWRhdGEg
Y29tbWFuZCBhbmQgZ290TWV0YWRhdGEgZXZlbnQgdG8gRmlsZVN5c3RlbSBzdXBwb3J0IG9mIElu
c3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3ODU2CisKKyAgICAgICAgRmlsZVN5c3RlbSBzdXBwb3J0IG9mIEluc3BlY3RvciBuZWVkIGEg
d2F5IHRvIGdldHRpbmcgZmlsZSBtZXRhZGF0YSwgaW5jbHVkaW5nCisgICAgICAgIG1vZGlmaWNh
dGlvbiB0aW1lLCBmaWxlIHNpemUgYW5kIHZpZXcgdHlwZS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
Z2V0TWV0YWRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KToKKwogMjAxMi0wNS0zMCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbU2hhZG93IERPTV0gSFRNTENvbnRlbnRFbGVtZW50IGFuZCBIVE1MU2hhZG93
RWxlbWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIHZpc2libGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYzk5MTE2MDhjNGU4Y2RiYWFiNjk3ZTA1NzNkZTNl
NzRkZTQwYmI1MS4uZjMxMzY2ODM4ZmUxZTFlMGExOTg1OTA5NGNmZmRjNDc3MDgyZmQ4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTM5Myw2ICsxMzkzLDE3
IEBACiAgICAgewogICAgICAgICAiZG9tYWluIjogIkZpbGVTeXN0ZW0iLAogICAgICAgICAiaGlk
ZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJpZCI6ICJNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0
IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJtb2RpZmljYXRpb25UaW1lIiwgInR5cGUiOiAibnVtYmVyIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAidHlwZSI6ICJudW1iZXIiIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmlld1R5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZW51bSI6IFsgInRleHQiLCAiaW1hZ2UiLCAibWVkaWEiLCAiYmluYXJ5IiBdIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6
IFsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLApAQCAt
MTQwMCwxMCArMTQxMSwzNiBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRGlzYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4uIgorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBldmVudHMgZnJvbSBiYWNrZW5kLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0TWV0YWRhdGEi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ290TWV0YWRhdGEiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SWQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZXJy
b3JDb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIm1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIk
cmVmIjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IDNh
ZmIyNmJmMTk0MTkxODJjZjhhYzlmZTNiZDE5MTc2YzFkZDI5M2MuLmI5N2Y0ODZkNmZiNjU0MGE4
YWJkMDhhNjkyMzk4MjI4MDYzNmVjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSw4ICszNSwyMCBA
QAogI2luY2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIgogCiAjaW5jbHVkZSAiRE9N
RmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRW50cnkuaCIK
KyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2su
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs1Nyw4IEBAIHN0YXRpYyBjb25z
dCBjaGFyIGZpbGVTeXN0ZW1BZ2VudEVuYWJsZWRbXSA9ICJmaWxlU3lzdGVtQWdlbnRFbmFibGVk
IjsKIH0KIAogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpGcm9udGVuZFByb3ZpZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8RnJvbnRlbmRQcm92aWRlcj4gewotICBwdWJsaWM6CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRnJvbnRlbmRQcm92aWRlcik7CitwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudCogYWdlbnQsIEluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtKiBmcm9udGVuZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJvbnRlbmRQcm92aWRlcihhZ2Vu
dCwgZnJvbnRlbmQpKTsKQEAgLTY0LDcgKzc3LDcgQEAgY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjpGcm9udGVuZFByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RnJvbnRlbmRQcm8K
ICAgICAgICAgbV9mcm9udGVuZCA9IDA7CiAgICAgfQogCi0gIHByaXZhdGU6Citwcml2YXRlOgog
ICAgIEZyb250ZW5kUHJvdmlkZXIoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCwgSW5z
cGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIGZyb250ZW5kKQogICAgICAgICA6IG1fYWdlbnQo
YWdlbnQpCiAgICAgICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkgeyB9CkBAIC03Myw2ICs4Niwx
NjAgQEAgY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpGcm9udGVuZFByb3ZpZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8RnJvbnRlbmRQcm8KICAgICBJbnNwZWN0b3JGcm9udGVuZDo6Rmls
ZVN5c3RlbSogbV9mcm9udGVuZDsKIH07CiAKK25hbWVzcGFjZSB7CisKK3R5cGVkZWYgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpGcm9udGVuZFByb3ZpZGVyIEZyb250ZW5kUHJvdmlkZXI7CisK
K2NsYXNzIEdldE1ldGFkYXRhVGFzayA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciwgcHVibGljIFJlZkNvdW50ZWQ8R2V0TWV0YWRhdGFUYXNrPiB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR2V0TWV0YWRhdGFUYXNrKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBFcnJvckNhbGxi
YWNrOworICAgIGNsYXNzIEdldEVudHJ5Q2FsbGJhY2s7CisgICAgY2xhc3MgR2V0TWV0YWRhdGFD
YWxsYmFjazsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW50IHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldE1l
dGFkYXRhVGFzayhmcm9udGVuZFByb3ZpZGVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1
ZXN0SWQsIHVybCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVk
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpj
b250ZXh0RGVzdHJveWVkKCk7CisgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JU
X0VSUiwgMCk7CisgICAgfQorCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgZ290RW50cnko
RW50cnkqKTsKKyAgICB2b2lkIGdvdE1ldGFkYXRhKE1ldGFkYXRhKik7CisKKyAgICB2b2lkIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhPiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAg
IGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5k
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJv
bnRlbmQoKS0+Z290TWV0YWRhdGEobV9yZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oZXJyb3JD
b2RlKSwgbWV0YWRhdGEpOworICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSAwOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBHZXRNZXRhZGF0YVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3Zp
ZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAg
OiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAg
ICAgICAsIG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkKKyAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVy
bCkgeyB9CisKKyAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVy
OworICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBLVVJMIG1fdXJsOworICAgIFN0cmluZyBtX3Bh
dGg7Cit9OworCitjbGFzcyBHZXRNZXRhZGF0YVRhc2s6OkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMg
V2ViQ29yZTo6RXJyb3JDYWxsYmFjayB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXJyb3JD
YWxsYmFjayk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNr
OjpFcnJvckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGdldE1l
dGFkYXRhVGFzaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0TWV0YWRh
dGFUYXNrOjpFcnJvckNhbGxiYWNrKGdldE1ldGFkYXRhVGFzaykpOworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqIGVycm9yKSBPVkVSUklERQorICAgIHsK
KyAgICAgICAgbV9nZXRNZXRhZGF0YVRhc2stPnJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAw
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIEVycm9yQ2Fs
bGJhY2soUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGdldE1ldGFkYXRhVGFzaykKKyAgICAg
ICAgOiBtX2dldE1ldGFkYXRhVGFzayhnZXRNZXRhZGF0YVRhc2spIHsgfQorCisgICAgUmVmUHRy
PEdldE1ldGFkYXRhVGFzaz4gbV9nZXRNZXRhZGF0YVRhc2s7Cit9OworCitjbGFzcyBHZXRNZXRh
ZGF0YVRhc2s6OkdldEVudHJ5Q2FsbGJhY2sgOiBwdWJsaWMgRW50cnlDYWxsYmFjayB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RW50cnlDYWxsYmFjayk7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrOjpHZXRFbnRyeUNhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGdldE1ldGFkYXRhVGFzaykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0TWV0YWRhdGFUYXNrOjpHZXRFbnRyeUNhbGxiYWNr
KGdldE1ldGFkYXRhVGFzaykpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChFbnRyeSogZW50cnkpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2dldE1ldGFkYXRhVGFz
ay0+Z290RW50cnkoZW50cnkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgR2V0RW50cnlDYWxsYmFjayhQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gZ2V0
TWV0YWRhdGFUYXNrKQorICAgICAgICA6IG1fZ2V0TWV0YWRhdGFUYXNrKGdldE1ldGFkYXRhVGFz
aykgeyB9CisKKyAgICBSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBtX2dldE1ldGFkYXRhVGFzazsK
K307CisKK2NsYXNzIEdldE1ldGFkYXRhVGFzazo6R2V0TWV0YWRhdGFDYWxsYmFjayA6IHB1Ymxp
YyBNZXRhZGF0YUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRNZXRhZGF0
YUNhbGxiYWNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRNZXRhZGF0YVRh
c2s6OkdldE1ldGFkYXRhQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFz
az4gZ2V0TWV0YWRhdGFUYXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
ZXRNZXRhZGF0YVRhc2s6OkdldE1ldGFkYXRhQ2FsbGJhY2soZ2V0TWV0YWRhdGFUYXNrKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE1ldGFkYXRhKiBtZXRhZGF0YSkg
T1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fZ2V0TWV0YWRhdGFUYXNrLT5nb3RNZXRhZGF0YSht
ZXRhZGF0YSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBH
ZXRNZXRhZGF0YUNhbGxiYWNrKFBhc3NSZWZQdHI8R2V0TWV0YWRhdGFUYXNrPiBnZXRNZXRhZGF0
YVRhc2spCisgICAgICAgIDogbV9nZXRNZXRhZGF0YVRhc2soZ2V0TWV0YWRhdGFUYXNrKSB7IH0K
KworICAgIFJlZlB0cjxHZXRNZXRhZGF0YVRhc2s+IG1fZ2V0TWV0YWRhdGFUYXNrOworfTsKKwor
dm9pZCBHZXRNZXRhZGF0YVRhc2s6OnN0YXJ0KCkKK3sKKyAgICBGaWxlU3lzdGVtVHlwZSB0eXBl
OworICAgIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmwsIHR5cGUs
IG1fcGF0aCk7CisKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRG
aWxlU3lzdGVtKAorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHR5cGUsCisgICAg
ICAgIFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShHZXRNZXRhZGF0YVRhc2s6OkdldEVudHJ5
Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdldE1ldGFkYXRhVGFzazo6RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRoaXMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0
eXBlLCBtX3BhdGgpKTsKK30KKwordm9pZCBHZXRNZXRhZGF0YVRhc2s6OmdvdEVudHJ5KEVudHJ5
KiBlbnRyeSkKK3sKKyAgICBlbnRyeS0+Z2V0TWV0YWRhdGEoR2V0TWV0YWRhdGFUYXNrOjpHZXRN
ZXRhZGF0YUNhbGxiYWNrOjpjcmVhdGUodGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgIEdl
dE1ldGFkYXRhVGFzazo6RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKTsKK30KKwordm9pZCBH
ZXRNZXRhZGF0YVRhc2s6OmdvdE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRhZGF0YSkKK3sKKyAgICB0
eXBlZGVmIFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YTo6Vmlld1R5cGUgVmlld1R5
cGU7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JQYXRoKG1fcGF0aCk7CisgICAgVmlld1R5cGU6OkVudW0gdmlld1R5cGU7CisgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkpCisgICAg
ICAgIHZpZXdUeXBlID0gVmlld1R5cGU6OkltYWdlOworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAg
dmlld1R5cGUgPSBWaWV3VHlwZTo6VGV4dDsKKyAgICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICB2aWV3VHlw
ZSA9IFZpZXdUeXBlOjpUZXh0OworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkTWVkaWFNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgIHZpZXdUeXBlID0gVmlld1R5
cGU6Ok1lZGlhOworICAgIGVsc2UKKyAgICAgICAgdmlld1R5cGUgPSBWaWV3VHlwZTo6QmluYXJ5
OworCisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YT4gcmVzdWx0
ID0KKyAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YTo6Y3JlYXRl
KCkKKyAgICAgICAgICAgICAgICAuc2V0TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS0+bW9kaWZp
Y2F0aW9uVGltZSgpKQorICAgICAgICAgICAgICAgIC5zZXRTaXplKG1ldGFkYXRhLT5zaXplKCkp
CisgICAgICAgICAgICAgICAgLnNldFZpZXdUeXBlKHZpZXdUeXBlKTsKKyAgICByZXBvcnRSZXN1
bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQpOworfQorCit9
CisKIC8vIHN0YXRpYwogUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKIHsKQEAgLTEwMiw2ICsyNjksMTcg
QEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQog
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1B
Z2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50OjpnZXRNZXRhZGF0YShFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFtX2VuYWJsZWQgfHwg
IW1fZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKS0+ZnJhbWVGb3JJZChmcmFtZUlkKTsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZnJh
bWUtPmRvY3VtZW50KCk7CisgICAgR2V0TWV0YWRhdGFUYXNrOjpjcmVhdGUobV9mcm9udGVuZFBy
b3ZpZGVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCByZXF1ZXN0SWQsIHVybCktPnN0YXJ0KCk7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRl
eCBhNjM3ZmEwZTk3MmIxYWU3OGZkZDlhNDA5MmRmZTFhMWYxYmRiMTZlLi40MGQxZWNkNDExNDFm
MzRhMTU1YjJmZmJlMTU4ZWJlY2IwYzkwYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBj
bGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JTdGF0ZTsKQEAgLTUyLDEyICs1MywxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50
cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0YShFcnJvclN0
cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVzdG9yZSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKSBPVkVSUklERTsKIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNw
ZWN0b3JTdGF0ZSopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148285</attachid>
            <date>2012-06-19 01:35:57 -0700</date>
            <delta_ts>2012-06-20 21:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120619173557.patch</filename>
            <type>text/plain</type>
            <size>19135</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFhNDY3MmYyYWM0NDgw
YTRlMDUwZmUzNWFmNzVmOWJlMjkzODZmNC4uZTNiNjBiMzRkMWE5NjM1ZGZiNWQ3NjlhYWFiYzcy
MDg4YzhhOWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA2LTE5ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgZ2V0TWV0YWRhdGEgY29tbWFuZCBhbmQgZ290TWV0YWRhdGEgZXZlbnQgdG8gRmlsZVN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0TWV0YWRhdGEpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZS5fZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZS5nZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgaXNEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0TWV0YWRhdGEp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGlk
UmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RN
YW5hZ2VyLnByb3RvdHlwZS5nZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZ290TWV0YWRhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZS5kaWRSZWFkRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5
cGUuZ290TWV0YWRhdGEpOgorCiAyMDEyLTA2LTE4ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhl
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5nIHRpdGxlIGR5bmFt
aWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggMjliZjdi
ZDRlOGMxNTk1OTNiNmI3OWZhMDAwM2QwNDM3NTgwZjM4Ni4uNGY0MGI4NTY4ZjZhYWM2ZGEwM2Yw
NzkwYjAyZjdjMTlmOGYxZmNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgpAQCAtMTQxNSw2ICsxNDE1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicmVzb3VyY2VUeXBlIiwgIiRyZWYiOiAiUGFnZS5SZXNvdXJjZVR5cGUiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2VUeXBlIG9mIHRoZSBlbnRyeSwgYXZhaWxh
YmxlIGZvciBhIGZpbGUgb25seS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJSZXByZXNlbnRzIGEgYnJvd3NlciBzaWRlIGZpbGUgb3IgZGly
ZWN0b3J5LiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ImlkIjogIk1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm1vZGlmaWNhdGlvblRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAi
TW9kaWZpY2F0aW9uIHRpbWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNp
emUiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
RmlsZSBzaXplLiBUaGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBhIGZpbGUuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwcmVz
ZW50cyBtZXRhZGF0YSBvZiBhIGZpbGUgb3IgZW50cnkuIgogICAgICAgICAgICAgfQogICAgICAg
ICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCkBAIC0xNDQyLDYgKzE0NTEsMTQgQEAKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiVVJMIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGUgZnJvbnRlbmQgaXMgcmVxdWVz
dGluZyB0byByZWFkIGZyb20uIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdG8gcmVhZCB0aGUgZGlyZWN0b3J5IGNvbnRlbnQu
IFJlc3VsdCBzaG91bGQgcmV0dXJuIG9uIGRpZFJlYWREaXJlY3RvcnkgZXZlbnQgd2l0aCByZXF1
ZXN0IGlkLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZ2V0TWV0YWRhdGEiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVyIG9mIHRoZSBjb21tYW5kLiBU
aGUgYmFja2VuZCBzaG91bGQgcGFzcyBiYWNrIHRoaXMgdmFsdWUgb24gY29ycmVzcG9uZGluZyBn
b3RNZXRhZGF0YSBldmVudC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJs
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgZW50cnkgdGhh
dCB0aGUgZnJvbnRlbmQgaXMgcmVxdWVzdGluZyB0byBnZXQgbWV0YWRhdGEgZnJvbS4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0
cyB0byBnZXQgbWV0YWRhdGEgb2YgdGhlIGVudHJ5LiBSZXN1bHQgc2hvdWxkIHJldHVybiBvbiBn
b3RNZXRhZGF0YSBldmVudCB3aXRoIHJlcXVlc3QgaWQuIgogICAgICAgICAgICAgfQogICAgICAg
ICBdLAogICAgICAgICAiZXZlbnRzIjogWwpAQCAtMTQ2MSw3ICsxNDc4LDE2IEBACiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0
IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJlbnRyaWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjog
IkZpbGVTeXN0ZW0uRW50cnkiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJD
b250YWlucyBhbGwgZW50cmllcyBvbiBkaXJlY3RvcnkgaWYgdGhlIGNvbW1hbmQgY29tcGxldGVk
IHN1Y2Nlc3NmdWxseS4iIH0KICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9uIGV2ZW50IG9mIHJlYWREaXJlY3RvcnkgZXZlbnQuIgor
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9uIGV2ZW50IG9mIHJlYWRE
aXJlY3RvcnkgY29tbWFuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogImdvdE1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdh
cyBwYXNzZWQgdG8gY29ycmVzcG9uZGluZyBnZXRNZXRhZGF0YSByZXF1ZXN0LiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIjAsIGlmIG5vIGVycm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBz
ZXQgdG8gRmlsZUVycm9yOjpFcnJvckNvZGUgdmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm1ldGFkYXRhIiwgIiRyZWYiOiAiRmlsZVN5c3RlbS5NZXRhZGF0YSIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDb250YWlucyBtZXRhZGF0YSBvZiB0aGUg
ZW50cnkgaWYgdGhlIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9uIGV2
ZW50IG9mIGdldE1ldGFkYXRhIGNvbW1hbmQuIgogICAgICAgICAgICAgfQogICAgICAgICBdCiAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5jcHAKaW5kZXggOWIyZjlmMjdhMjcxZmJlZTNhZjJmZDU4MDI2YWQ2OWQ3YjU0
NmQ1Ny4uMGMyZjhmOTcyYmQ0NTNhOTdkYWUyNDYxYzgxZTE2NjAxZDBkMjk0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKQEAgLTUyLDYgKzUyLDggQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1l
dGFkYXRhLmgiCisjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTEz
OSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBkaWRIaXRFcnJvcihGaWxlRXJyb3IqIGVycm9y
KTsKKyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciopOwogICAgIGJvb2wgZ290RW50cnko
RW50cnkqKTsKIAogICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVy
cm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+IGVudHJ5
KQpAQCAtMzE2LDYgKzMxOCw4NiBAQCBib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGly
ZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQogICAgIHJldHVybiB0cnVlOwogfQog
CitjbGFzcyBHZXRNZXRhZGF0YVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRNZXRhZGF0YVRh
c2s+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRNZXRhZGF0YVRhc2spOworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldE1ldGFkYXRhVGFzaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldE1l
dGFkYXRhVGFzayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHVybCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgfkdldE1ldGFkYXRhVGFzaygpCisgICAgeworICAgICAgICByZXBvcnRSZXN1
bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIsIDApOworICAgIH0KKworICAgIGJvb2wgZGlkSGl0RXJy
b3IoRmlsZUVycm9yKiBlcnJvcikKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+
Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgYm9vbCBnb3RFbnRyeShFbnRyeSopOwor
ICAgIGJvb2wgZ290TWV0YWRhdGEoTWV0YWRhdGEqKTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0
KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RmlsZVN5c3RlbTo6TWV0YWRhdGE+IG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Zy
b250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5n
b3RNZXRhZGF0YShtX3JlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtZXRh
ZGF0YSk7CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgfQorCitwcml2YXRl
OgorICAgIEdldE1ldGFkYXRhVGFzayhQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6
IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1fcmVxdWVz
dElkKHJlcXVlc3RJZCkKKyAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9
CisKKyAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAg
IGludCBtX3JlcXVlc3RJZDsKKyAgICBLVVJMIG1fdXJsOworICAgIFN0cmluZyBtX3BhdGg7Cisg
ICAgYm9vbCBtX2lzRGlyZWN0b3J5OworfTsKKwordm9pZCBHZXRNZXRhZGF0YVRhc2s6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAg
RmlsZVN5c3RlbVR5cGUgdHlwZTsKKyAgICBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lz
dGVtVVJMKG1fdXJsLCB0eXBlLCBtX3BhdGgpOworCisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RW50
cnlDYWxsYmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6Z290RW50cnkpOworICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRj
aGVyKFR5cGVQYXJhbTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpk
aWRIaXRFcnJvcik7CisKKyAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3Rl
bUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIG1fcGF0aCk7Cisg
ICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7
Cit9CisKK2Jvb2wgR2V0TWV0YWRhdGFUYXNrOjpnb3RFbnRyeShFbnRyeSogZW50cnkpCit7Cisg
ICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsK
KyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08TWV0YWRhdGFD
YWxsYmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6Z290TWV0YWRhdGEpOworICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRj
aGVyKFR5cGVQYXJhbTxFcnJvckNhbGxiYWNrPigpLCB0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpk
aWRIaXRFcnJvcik7CisgICAgZW50cnktPmdldE1ldGFkYXRhKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CisgICAgbV9pc0RpcmVjdG9yeSA9IGVudHJ5LT5pc0RpcmVjdG9yeSgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdldE1ldGFkYXRhVGFzazo6Z290TWV0YWRhdGEo
TWV0YWRhdGEqIG1ldGFkYXRhKQoreworICAgIHVzaW5nIFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpNZXRhZGF0YTsKKyAgICBSZWZQdHI8TWV0YWRhdGE+IHJlc3VsdCA9IE1ldGFkYXRhOjpjcmVh
dGUoKS5zZXRNb2RpZmljYXRpb25UaW1lKG1ldGFkYXRhLT5tb2RpZmljYXRpb25UaW1lKCkpOwor
ICAgIGlmICghbV9pc0RpcmVjdG9yeSkKKyAgICAgICAgcmVzdWx0LT5zZXRTaXplKG1ldGFkYXRh
LT5zaXplKCkpOworICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9y
Q29kZT4oMCksIHJlc3VsdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAogLy8gc3RhdGlj
CkBAIC0zNzEsNiArNDUzLDE4IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZWFk
RGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QKICAgICAgICAgbV9m
cm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kaWRSZWFkRGlyZWN0b3J5KHJlcXVlc3RJZCwg
c3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDApOwogfQogCit2b2lkIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBpbnQgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9m
cm9udGVuZFByb3ZpZGVyKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSk7CisKKyAgICBpZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4o
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSkpCisgICAgICAgIEdl
dE1ldGFkYXRhVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwp
LT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJv
bnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+Z290TWV0YWRhdGEocmVxdWVzdElkLCBzdGF0aWNf
Y2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCA3ZjQ0YWMwZTg2ZjMzZGNjNTFm
YmVjMzJlMTc5MDRmMTIzNGQxN2QzLi43ZWMzYTY5ZmNkZjQzZjAzNTMwZTc3YTBkZDc1MDMyNTNl
OWIyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiB1cmwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRNZXRhZGF0YShFcnJv
clN0cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmlu
ZGV4IGE2OTI2YjllYjUyZmZmYTM1YjhkMWI3NGU4ZGRjYjRmMGJiYTZjODIuLmMyMTYzMjEwMWYx
Y2NhOTA1MjhkYjBmNjUxYTIyMjVhOWNhZGY3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMzUsNiArMjM1
LDExIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBlbnRyaWVzKTsKKyAgICB9LAorCisg
ICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uKGVudHJ5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHRoaXMuX2FnZW50V3JhcHBlci5nZXRNZXRhZGF0YShlbnRyeS51cmwsIGNhbGxiYWNrKTsKICAg
ICB9CiB9CiAKQEAgLTMxMSw3ICszMTYsMTIgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5FbnRyeS5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJs
OyB9LAogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfSwKLSAgICBnZXQgaXNE
aXJlY3RvcnkoKSB7IHJldHVybiB0aGlzLl9pc0RpcmVjdG9yeTsgfQorICAgIGdldCBpc0RpcmVj
dG9yeSgpIHsgcmV0dXJuIHRoaXMuX2lzRGlyZWN0b3J5OyB9LAorCisgICAgZ2V0TWV0YWRhdGE6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTW9kZWwu
Z2V0TWV0YWRhdGEodGhpcywgY2FsbGJhY2spOworICAgIH0KIH0KIAogLyoqCkBAIC0zNjcsNiAr
Mzc3LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9u
KCkKIHsKICAgICB0aGlzLl9wZW5kaW5nR2V0RmlsZVN5c3RlbVJvb3RSZXF1ZXN0cyA9IHt9Owog
ICAgIHRoaXMuX3BlbmRpbmdSZWFkRGlyZWN0b3J5UmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9w
ZW5kaW5nR2V0TWV0YWRhdGFSZXF1ZXN0cyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckZpbGVTeXN0ZW1EaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
c3BhdGNoZXIodGhpcykpOwogICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKQEAgLTQzMiw2
ICs0NDMsMjYgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5n
UmVhZERpcmVjdG9yeVJlcXVlc3RzW3JlcXVlc3RJZF07CiAgICAgICAgIGNhbGxiYWNrKGVycm9y
Q29kZSwgYmFja2VuZEVudHJpZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1B
Z2VudC5NZXRhZGF0YT0pfSBjYWxsYmFjaworICAgICAqLworICAgIGdldE1ldGFkYXRhOiBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMu
X3JlcXVlc3RJZCgpOworICAgICAgICB0aGlzLl9wZW5kaW5nR2V0TWV0YWRhdGFSZXF1ZXN0c1ty
ZXF1ZXN0SWRdID0gY2FsbGJhY2s7CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5nZXRNZXRhZGF0
YShyZXF1ZXN0SWQsIHVybCk7CisgICAgfSwKKworICAgIF9nb3RNZXRhZGF0YTogZnVuY3Rpb24o
cmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxi
YWNrID0gdGhpcy5fcGVuZGluZ0dldE1ldGFkYXRhUmVxdWVzdHNbcmVxdWVzdElkXTsKKyAgICAg
ICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3BlbmRpbmdHZXRNZXRhZGF0YVJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGNhbGxi
YWNrKGVycm9yQ29kZSwgbWV0YWRhdGEpOwogICAgIH0KIH0KIApAQCAtNDY0LDUgKzQ5NSwxNSBA
QCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGRp
ZFJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBiYWNrZW5kRW50
cmllcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fZGlkUmVhZERpcmVjdG9y
eShyZXF1ZXN0SWQsIGVycm9yQ29kZSwgYmFja2VuZEVudHJpZXMpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGVycm9yQ29kZQorICAgICAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50Lk1ldGFkYXRhPX0g
bWV0YWRhdGEKKyAgICAgKi8KKyAgICBnb3RNZXRhZGF0YTogZnVuY3Rpb24ocmVxdWVzdElkLCBl
cnJvckNvZGUsIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9n
b3RNZXRhZGF0YShyZXF1ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRhdGEpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAwYTJjOTY3ZTUxMzljOGQxYzA4MzlmMTEyM2NjMzI4NzJjYzFlYjY4Li4wZTVkMDE4YzQ4
ZmY2NWEwNjhjN2VhNzg0NDEyOTBlZmI5YjU3OTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMDYtMTkgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFkZCBnZXRNZXRhZGF0YSBjb21tYW5kIGFuZCBnb3RNZXRhZGF0YSBldmVu
dCB0byBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Nzg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3Qud3Jp
dGVGaWxlKToKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVz
dC5kdW1wR2V0TWV0YWRhdGFSZXN1bHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVt
VGVzdCk6CisgICAgICAgICh3cml0ZUZpbGUuZ290RmlsZVN5c3RlbSk6CisgICAgICAgICh3cml0
ZUZpbGUpOgorICAgICAgICAod3JpdGVGaWxlLmdvdFdyaXRlci53cml0ZXIub253cml0ZSk6Cisg
ICAgICAgICh3cml0ZUZpbGUuZ290V3JpdGVyKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA2LTE4ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5nIHRpdGxlIGR5bmFtaWNhbGx5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVz
eXN0ZW0tdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCmluZGV4IDMwODYzZDdmNTQxYzU4OWQ4NDU0ZWFjZmVkMGU3
YjgyZWVmYTA2NmEuLjlhYjM4MGM1NTQwMjZlNzQxYzhkODRmYmUxNDAyNTE1ZjNlNGYzNmMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmls
ZXN5c3RlbS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCkBAIC0yOSw2ICsyOSwxMSBAQCB2YXIgaW5pdGlh
bGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgiY3JlYXRlRmlsZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUocGF0aCkgKyAi
XCIpLCAiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7
CiAgICAgfTsKIAorICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlID0gZnVuY3Rpb24ocGF0aCwg
Y29udGVudCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJ3cml0ZUZpbGUodW5lc2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgdW5l
c2NhcGUoXCIiICsgZXNjYXBlKGNvbnRlbnQpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3QucmVn
aXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOworICAgIH07CisKICAgICBJbnNwZWN0b3JU
ZXN0LmNsZWFyRmlsZVN5c3RlbSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJGaWxlU3lzdGVtKCIgKyBJbnNwZWN0
b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKQEAgLTUxLDYgKzU2LDE4
IEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBlbnRyaWVzW2ld
W2pdKTsKICAgICAgICAgfQogICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBHZXRNZXRh
ZGF0YVJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKKyAg
ICAgICAgaWYgKG1ldGFkYXRhKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgibWV0YWRhdGE6Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBt
b2RpZmljYXRpb25UaW1lOiAiICsgKCJtb2RpZmljYXRpb25UaW1lIiBpbiBtZXRhZGF0YSA/ICIo
ZXhpc3RzKSIgOiAiKG51bGwpIikpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiAgc2l6ZTogIiArICgic2l6ZSIgaW4gbWV0YWRhdGEgPyBtZXRhZGF0YS5zaXplIDogIihu
dWxsKSIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJtZXRhZGF0YTogKG51bGwpIik7CisgICAgICAgIH0KKyAgICB9OwogfQogCiBmdW5j
dGlvbiBkaXNwYXRjaENhbGxiYWNrKCkKQEAgLTgzLDYgKzEwMCwzMCBAQCBmdW5jdGlvbiBjcmVh
dGVGaWxlKHBhdGgsIGNhbGxiYWNrKQogICAgIH0KIH0KIAorZnVuY3Rpb24gd3JpdGVGaWxlKHBh
dGgsIGNvbnRlbnQsIGNhbGxiYWNrKQoreworICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRF
TVBPUkFSWSwgMSwgZ290RmlsZVN5c3RlbSk7CisKKyAgICBmdW5jdGlvbiBnb3RGaWxlU3lzdGVt
KGZpbGVTeXN0ZW0pCisgICAgeworICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShwYXRo
LCB7Y3JlYXRlOnRydWV9LCBnb3RGaWxlRW50cnkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdv
dEZpbGVFbnRyeShmaWxlRW50cnkpCisgICAgeworICAgICAgICBmaWxlRW50cnkuY3JlYXRlV3Jp
dGVyKGdvdFdyaXRlcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ290V3JpdGVyKHdyaXRlcikK
KyAgICB7CisgICAgICAgIHdyaXRlci53cml0ZShuZXcgQmxvYihbY29udGVudF0pKTsKKyAgICAg
ICAgd3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXIu
cmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICB9OworICAgIH0KK30KKwogZnVuY3Rpb24gY2xlYXJGaWxlU3lzdGVtKGNhbGxiYWNr
KQogewogICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06IiAr
IGxvY2F0aW9uLm9yaWdpbiArICIvdGVtcG9yYXJ5LyIsIGdvdFJvb3QsIG9uRXJyb3IpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQt
bWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MTgyODE0
NTVjM2UwMGViOGUzYmRjZmE0ZTU0NjQ2YzU3NDdkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZ2V0TWV0YWRhdGEuCisKK2Vycm9yQ29k
ZTogMAorbWV0YWRhdGE6CisgIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCisgIHNpemU6IDQK
K2Vycm9yQ29kZTogMAorbWV0YWRhdGE6CisgIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCisg
IHNpemU6IChudWxsKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGFk
ZTAyMjUyZDZmMzFkYmM5ZDk4NmY5ZjFmYTI2MGY4NzRjYWIwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEu
aHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbShzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UiLCAiZnVnYSIsIHN0ZXAyKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBmaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIuZ2V0TWV0YWRhdGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3RlbXBvcmFyeS9ob2dlIiwgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKGVy
cm9yQ29kZSwgbWV0YWRhdGEpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBHZXRN
ZXRhZGF0YVJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgc3RlcDQoKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmNyZWF0ZURpcmVjdG9yeSgiL3BpeW8iLCBzdGVwNSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c3RlcDUoKQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLmdldE1ldGFk
YXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvcGl5byIsIHN0
ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNihlcnJvckNvZGUsIG1ldGFkYXRhKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wR2V0TWV0YWRhdGFSZXN1bHQoZXJyb3JD
b2RlLCBtZXRhZGF0YSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0
ZXA3KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNyhlcnJvckNvZGUsIGZpbGVTeXN0ZW0p
CisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30K
KworPC9zY3JpcHQ+Cis8cD5UZXN0cyBnZXRNZXRhZGF0YS48L3A+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148726</attachid>
            <date>2012-06-20 21:36:56 -0700</date>
            <delta_ts>2012-06-21 23:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120621133655.patch</filename>
            <type>text/plain</type>
            <size>22971</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM4MTUyOWI5NmJlYzg1
YjA2YzkyZGFiY2VmNzY4NGRlYzg3NmQ5NC4uNmJiYzM1ZjU2NmY4Mzk4MzdiMmM2OGNlNWRlYTRi
MzY3YzQ2YjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDEyLTA2LTIwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgZ2V0TWV0YWRhdGEgY29tbWFuZCBhbmQgZ290TWV0YWRhdGEgZXZlbnQgdG8gRmlsZVN5c3Rl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdE1ldGFkYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6CisgICAgICAgIChJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5w
cm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5yZXF1ZXN0TWV0YWRhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IGlzRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90
eXBlLmdldE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdl
ci5wcm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0TWV0YWRhdGEu
cmVxdWVzdEFjY2VwdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fbWV0YWRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90eXBlLmRp
cmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bURpc3BhdGNoZXIucHJvdG90eXBlLm1ldGFkYXRhUmVjZWl2ZWQpOgorCisyMDEyLTA2LTIwICBU
YWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBVbmlmeSBGaWxlU3lzdGVtIGNhbGxiYWNrcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCmluZGV4IDQyZDNiZTAyYjM0MzUwZjkxNTA1NjVkNjQzNWRkMDA0MjhjNGZjYWIu
LjQzMjlkY2I0NjM1YjA0MTRkODE0ZWY5MGY3OTk2MTRkYmY1MDFiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE0MjAsNiArMTQyMCwxNSBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlVHlwZSIsICIkcmVmIjogIlBhZ2UuUmVz
b3VyY2VUeXBlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlVHlw
ZSBvZiB0aGUgZW50cnksIGF2YWlsYWJsZSBmb3IgYSBmaWxlIG9ubHkuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwcmVzZW50cyBhIGJy
b3dzZXIgc2lkZSBmaWxlIG9yIGRpcmVjdG9yeS4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtb2RpZmljYXRpb25UaW1lIiwgInR5cGUiOiAibnVt
YmVyIiwgImRlc2NyaXB0aW9uIjogIk1vZGlmaWNhdGlvbiB0aW1lLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzaXplIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZpbGUgc2l6ZS4gVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUg
b25seSBmb3IgYSBmaWxlLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJlcHJlc2VudHMgbWV0YWRhdGEgb2YgYSBmaWxlIG9yIGVudHJ5LiIK
ICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpAQCAtMTQ1
MSw2ICsxNDYwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElk
IiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmll
ci4gQ29ycmVzcG9uZGluZyBkaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQgZXZlbnQgc2hvdWxkIGhh
dmUgc2FtZSByZXF1ZXN0SWQgd2l0aCB0aGlzLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgY29udGVudCBvZiB0aGUgZGlyZWN0
b3J5IGFzIGRpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCBldmVudC4iCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgeworCQkJICAgICJuYW1lIjogInJlcXVlc3RNZXRhZGF0YSIsCisgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
dXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgZW50cnkg
dGhhdCB0aGUgZnJvbnRlbmQgaXMgcmVxdWVzdGluZyB0byBnZXQgbWV0YWRhdGEgZnJvbS4iIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZpZXIuIENvcnJlc3BvbmRpbmcgbWV0YWRh
dGFSZWNlaXZlZCBldmVudCBzaG91bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0
dXJucyBtZXRhZGF0YSBvZiB0aGUgZW50cnkgYXMgbWV0YWRhdGFSZWNlaXZlZCBldmVudC4iCiAg
ICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xNDcxLDYg
KzE0OTAsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbnRyaWVzIiwgInR5
cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkZpbGVTeXN0ZW0uRW50cnkiIH0sICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDb250YWlucyBhbGwgZW50cmllcyBvbiBk
aXJlY3RvcnkgaWYgdGhlIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9u
IGV2ZW50IG9mIHJlcXVlc3REaXJlY3RvcnlDb250ZW50IGNvbW1hbmQuIgorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJtZXRhZGF0YVJlY2Vp
dmVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdhcyBwYXNzZWQgdG8gY29ycmVzcG9uZGluZyBn
ZXRNZXRhZGF0YSByZXF1ZXN0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
cnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIjAsIGlmIG5vIGVy
cm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8gRmlsZUVycm9yOjpFcnJvckNvZGUg
dmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1ldGFkYXRhIiwgIiRy
ZWYiOiAiRmlsZVN5c3RlbS5NZXRhZGF0YSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJDb250YWlucyBtZXRhZGF0YSBvZiB0aGUgZW50cnkgaWYgdGhlIGNvbW1hbmQgY29tcGxl
dGVkIHN1Y2Nlc3NmdWxseS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDb21wbGV0aW9uIGV2ZW50IG9mIGdldE1ldGFkYXRhIGNvbW1hbmQu
IgogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggN2U1ZDI2
YTMwZGRjMmFjY2I5YTgzMDkyZTY4ZWYzMzhlNDY2Yjk1YS4uZjc0ODI0ZDA1ZDRlY2JiZjVhYzI3
YzRlYTg0NGZkNDA5NzRjMTc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTUyLDYgKzUyLDggQEAKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiTWV0YWRh
dGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIHVzaW5nIFdlYkNv
cmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKQEAgLTE0MCw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBkaWRIaXRFcnJvcihGaWxlRXJyb3IqKTsKLSAgICBib29sIGdvdEVu
dHJ5KEVudHJ5Kik7CisgICAgYm9vbCBkaWRHZXRFbnRyeShFbnRyeSopOwogCiAgICAgdm9pZCBy
ZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnkpCiAgICAgewpAQCAtMTc4LDE0ICsx
ODAsMTQgQEAgdm9pZCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBjcmVhdGVDYWxs
YmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVudHJ5Q2FsbGJhY2s+KCksIHRoaXMsICZHZXRGaWxl
U3lzdGVtUm9vdFRhc2s6OmdvdEVudHJ5KTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFbnRyeUNh
bGxiYWNrPigpLCB0aGlzLCAmR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRHZXRFbnRyeSk7CiAg
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFja0Rp
c3BhdGNoZXIoVHlwZVBhcmFtPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZHZXRGaWxlU3lzdGVt
Um9vdFRhc2s6OmRpZEhpdEVycm9yKTsKICAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4g
ZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsICIv
Iik7CiAKICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVs
ZWFzZSgpKTsKIH0KIAotYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmdvdEVudHJ5KEVudHJ5
KiBlbnRyeSkKK2Jvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSog
ZW50cnkpCiB7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gcmVz
dWx0KFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRlKCkuc2V0VXJsKGVudHJ5
LT50b1VSTCgpKS5zZXROYW1lKCIvIikuc2V0SXNEaXJlY3RvcnkodHJ1ZSkpOwogICAgIHJlcG9y
dFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4oMCksIHJlc3VsdCk7CkBA
IC0yMTQsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgYm9vbCBnb3RFbnRyeShFbnRyeSopOworICAgIGJvb2wgZGlkR2V0RW50cnkoRW50cnkq
KTsKICAgICBib29sIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqKTsKIAogICAg
IHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgUGFzc1Jl
ZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+ID4gZW50cmllcykKQEAg
LTI1MCwxNCArMjUyLDE0IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3Jl
YXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFbnRyeUNhbGxiYWNrPigpLCB0aGlzLCAm
UmVhZERpcmVjdG9yeVRhc2s6OmdvdEVudHJ5KTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNwYXRjaGVyKFR5cGVQYXJhbTxFbnRy
eUNhbGxiYWNrPigpLCB0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEdldEVudHJ5KTsKICAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlz
cGF0Y2hlcihUeXBlUGFyYW08RXJyb3JDYWxsYmFjaz4oKSwgdGhpcywgJlJlYWREaXJlY3RvcnlU
YXNrOjpkaWRIaXRFcnJvcik7CiAgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVT
eXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBwYXRoKTsK
IAogICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNl
KCkpOwogfQogCi1ib29sIFJlYWREaXJlY3RvcnlUYXNrOjpnb3RFbnRyeShFbnRyeSogZW50cnkp
Citib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCiB7CiAg
ICAgaWYgKCFlbnRyeS0+aXNEaXJlY3RvcnkoKSkgewogICAgICAgICByZXBvcnRSZXN1bHQoRmls
ZUVycm9yOjpUWVBFX01JU01BVENIX0VSUiwgMCk7CkBAIC0zMTYsNiArMzE4LDg2IEBAIGJvb2wg
UmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVu
dHJpZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NsYXNzIEdldE1ldGFkYXRhVGFzayA6IHB1
YmxpYyBSZWZDb3VudGVkPEdldE1ldGFkYXRhVGFzaz4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEdldE1ldGFkYXRhVGFzayk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0
TWV0YWRhdGFUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVu
ZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0TWV0YWRhdGFUYXNrKGZyb250ZW5kUHJvdmlkZXIs
IHJlcXVlc3RJZCwgdXJsKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+R2V0TWV0YWRhdGFUYXNr
KCkKKyAgICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7
CisgICAgfQorCisgICAgYm9vbCBkaWRIaXRFcnJvcihGaWxlRXJyb3IqIGVycm9yKQorICAgIHsK
KyAgICAgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2RlKCksIDApOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICBib29sIGRpZEdldEVudHJ5KEVudHJ5Kik7CisgICAgYm9vbCBkaWRHZXRNZXRhZGF0YShN
ZXRhZGF0YSopOworCisgICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUg
ZXJyb3JDb2RlLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpNZXRhZGF0YT4g
bWV0YWRhdGEpCisgICAgeworICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlciB8fCAhbV9m
cm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFkYXRhUmVjZWl2ZWQobV9yZXF1
ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgbWV0YWRhdGEpOworICAgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXIgPSAwOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHZXRNZXRhZGF0
YVRhc2soUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlk
ZXIoZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisg
ICAgICAgICwgbV91cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpIHsgfQorCisgICAgUmVmUHRyPEZy
b250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7
CisgICAgS1VSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIGJvb2wgbV9pc0RpcmVj
dG9yeTsKK307CisKK3ZvaWQgR2V0TWV0YWRhdGFUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIEZpbGVTeXN0ZW1UeXBlIHR5
cGU7CisgICAgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlw
ZSwgbV9wYXRoKTsKKworICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVudHJ5Q2FsbGJhY2s+KCksIHRo
aXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08
RXJyb3JDYWxsYmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJyb3IpOwor
CisgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBS
ZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBtX3BhdGgpOworICAgIExvY2FsRmlsZVN5
c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOworfQorCitib29sIEdl
dE1ldGFkYXRhVGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQoreworICAgIGlmICghZW50
cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIFJlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPE1ldGFkYXRhQ2FsbGJhY2s+KCks
IHRoaXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEdldE1ldGFkYXRhKTsKKyAgICBSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBl
UGFyYW08RXJyb3JDYWxsYmFjaz4oKSwgdGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJy
b3IpOworICAgIGVudHJ5LT5nZXRNZXRhZGF0YShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spOworICAgIG1faXNEaXJlY3RvcnkgPSBlbnRyeS0+aXNEaXJlY3RvcnkoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBHZXRNZXRhZGF0YVRhc2s6OmRpZEdldE1ldGFkYXRhKE1ldGFk
YXRhKiBtZXRhZGF0YSkKK3sKKyAgICB1c2luZyBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0
YWRhdGE7CisgICAgUmVmUHRyPE1ldGFkYXRhPiByZXN1bHQgPSBNZXRhZGF0YTo6Y3JlYXRlKCku
c2V0TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSgpKTsKKyAgICBp
ZiAoIW1faXNEaXJlY3RvcnkpCisgICAgICAgIHJlc3VsdC0+c2V0U2l6ZShtZXRhZGF0YS0+c2l6
ZSgpKTsKKyAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+
KDApLCByZXN1bHQpOworICAgIHJldHVybiB0cnVlOworfQorCiB9CiAKIC8vIHN0YXRpYwpAQCAt
Mzc0LDYgKzQ1NiwyMCBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdERp
cmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbgogICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCgqcmVxdWVz
dElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpCit7CisgICAgaWYgKCFtX2VuYWJs
ZWQgfHwgIW1fZnJvbnRlbmRQcm92aWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCht
X2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOworCisgICAgKnJlcXVlc3RJZCA9IG1fbmV4
dFJlcXVlc3RJZCsrOworCisgICAgaWYgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0KCkpKQorICAgICAgICBHZXRNZXRhZGF0
YVRhc2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpLT5tZXRhZGF0YVJlY2VpdmVkKCpyZXF1ZXN0SWQsIHN0YXRpY19j
YXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwKTsKK30KKwogdm9pZCBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
IHsKICAgICBBU1NFUlQoZnJvbnRlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4IDU5YTE2ZTkwN2IzMzM4ZTc1MzBm
YTdhZjVjMTcwYTIyNTQ2YTFkODQuLjgyZjk1YzRiNmZlOGZkMzFiODc5MjFiNTM3ZmM3M2YwZTdh
NWNjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1
ZXN0SWQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanMKaW5kZXggNzU0OGIxMzJiNmM0ZDAxZGI2N2FjM2JlMTgyZDgwMDVj
ZTkyM2Q3Ny4uMTY0MzU3OWI2OTBmZTIxMzFkNjdiMzNiZDc3ODU3ZjlhNWIxN2ZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9k
ZWwuanMKQEAgLTIzNSw2ICsyMzUsMTEgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIGVu
dHJpZXMpOworICAgIH0sCisKKyAgICByZXF1ZXN0TWV0YWRhdGE6IGZ1bmN0aW9uKGVudHJ5LCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5yZXF1ZXN0TWV0YWRh
dGEoZW50cnkudXJsLCBjYWxsYmFjayk7CiAgICAgfQogfQogCkBAIC0zMTEsNyArMzE2LDEyIEBA
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlID0gewogCiAgICAg
Z2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfSwKICAgICBnZXQgbmFtZSgpIHsgcmV0dXJu
IHRoaXMuX25hbWU7IH0sCi0gICAgZ2V0IGlzRGlyZWN0b3J5KCkgeyByZXR1cm4gdGhpcy5faXNE
aXJlY3Rvcnk7IH0KKyAgICBnZXQgaXNEaXJlY3RvcnkoKSB7IHJldHVybiB0aGlzLl9pc0RpcmVj
dG9yeTsgfSwKKworICAgIGdldE1ldGFkYXRhOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YSh0aGlzLCBjYWxsYmFj
ayk7CisgICAgfQogfQogCiAvKioKQEAgLTM2Nyw2ICszNzcsNyBAQCBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX3BlbmRpbmdG
aWxlU3lzdGVtUm9vdFJlcXVlc3RzID0ge307CiAgICAgdGhpcy5fcGVuZGluZ0RpcmVjdG9yeUNv
bnRlbnRSZXF1ZXN0cyA9IHt9OworICAgIHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzID0g
e307CiAKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3RlbURpc3BhdGNoZXIo
bmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKSk7CiAgICAgRmlsZVN5
c3RlbUFnZW50LmVuYWJsZSgpOwpAQCAtNDMyLDYgKzQ0MywzMSBAQCBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdEaXJlY3RvcnlDb250ZW50UmVxdWVzdHNbcmVx
dWVzdElkXTsKICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcyk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKG51bWJlciwgRmlsZVN5c3RlbUFnZW50Lk1ldGFkYXRhPSl9IGNhbGxiYWNr
CisgICAgICovCisgICAgcmVxdWVzdE1ldGFkYXRhOiBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5fcGVuZGluZ01ldGFkYXRhUmVxdWVzdHM7
CisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0TWV0YWRhdGEodXJsLCByZXF1ZXN0QWNj
ZXB0ZWQpOworCisgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVz
dElkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAg
IHN0b3JlW3JlcXVlc3RJZF0gPSBjYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
bWV0YWRhdGFSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRh
KQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fcGVuZGluZ01ldGFkYXRhUmVx
dWVzdHNbcmVxdWVzdElkXTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzW3JlcXVl
c3RJZF07CisgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbWV0YWRhdGEpOwogICAgIH0KIH0K
IApAQCAtNDY0LDUgKzUwMCwxNSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIu
cHJvdG90eXBlID0gewogICAgIGRpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocmVx
dWVzdElkLCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVzKQogICAgIHsKICAgICAgICAgdGhpcy5f
YWdlbnRXcmFwcGVyLl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNv
ZGUsIGJhY2tlbmRFbnRyaWVzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHJlcXVlc3RJZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAg
KiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YT19IG1ldGFkYXRhCisgICAgICovCisg
ICAgbWV0YWRhdGFSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFk
YXRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9tZXRhZGF0YVJlY2VpdmVk
KHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNiOTA5
MjdmM2NkYTIzNjZiYjNjZmEwOTMyZTk5YzcyMTQ4NTE4ZmYuLjdhOTA5MmRjMWYyOGM4MzE2MTcx
MmZlNzhhODMzNzllNTYyMjAyYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMi0wNi0yMCAg
VGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIGdldE1ldGFkYXRhIGNvbW1hbmQgYW5kIGdvdE1ldGFkYXRhIGV2ZW50IHRvIEZpbGVT
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qczoKKyAgICAg
ICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUpOgor
ICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBNZXRh
ZGF0YVJlcXVlc3RSZXN1bHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCk6
CisgICAgICAgICh3cml0ZUZpbGUuZGlkR2V0RmlsZVN5c3RlbSk6CisgICAgICAgICh3cml0ZUZp
bGUpOgorICAgICAgICAod3JpdGVGaWxlLmRpZEdldFdyaXRlci53cml0ZXIub253cml0ZSk6Cisg
ICAgICAgICh3cml0ZUZpbGUuZGlkR2V0V3JpdGVyKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWw6
IEFkZGVkLgorCisyMDEyLTA2LTIwICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4K
KwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20g
RmlsZVN5c3RlbSBmcm9udGVuZCB0byBiYWNrZW5kCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU1NQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0Lmpz
CmluZGV4IGU4YTNlMmU3NmRmMjU2NmFjMjQ1MTIzNjhjMGUwNzg1YTQ3ZGY1YTguLmQ2N2ExYzE0
MWY5NTE3YTcwNDM3YmMxNGQyYzcyODQ1YWJlOGQ0MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10
ZXN0LmpzCkBAIC0yOSw2ICsyOSwxMSBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRl
RmlsZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUocGF0aCkgKyAiXCIpLCAiICsgSW5zcGVjdG9yVGVz
dC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7CiAgICAgfTsKIAorICAgIEluc3Bl
Y3RvclRlc3Qud3JpdGVGaWxlID0gZnVuY3Rpb24ocGF0aCwgY29udGVudCwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3cml0ZUZpbGUodW5l
c2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgdW5lc2NhcGUoXCIiICsgZXNjYXBlKGNv
bnRlbnQpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFj
aykgKyAiKSIpOworICAgIH07CisKICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSA9
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiY2xlYXJGaWxlU3lzdGVtKCIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJh
Y2soY2FsbGJhY2spICsgIikiKTsKQEAgLTUwLDYgKzU1LDE4IEBAIHZhciBpbml0aWFsaXplX0Zp
bGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBlbnRyaWVzW2ldW2pdKTsKICAgICAgICAgfQogICAg
IH07CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQgPSBmdW5j
dGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7CisgICAgICAgIGlmIChtZXRhZGF0
YSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgbW9kaWZpY2F0aW9uVGltZTog
IiArICgibW9kaWZpY2F0aW9uVGltZSIgaW4gbWV0YWRhdGEgPyAiKGV4aXN0cykiIDogIihudWxs
KSIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIHNpemU6ICIgKyAo
InNpemUiIGluIG1ldGFkYXRhID8gbWV0YWRhdGEuc2l6ZSA6ICIobnVsbCkiKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6
IChudWxsKSIpOworICAgICAgICB9CisgICAgfTsKIH0KIAogZnVuY3Rpb24gZGlzcGF0Y2hDYWxs
YmFjaygpCkBAIC02MCw5ICs3Nyw5IEBAIGZ1bmN0aW9uIGRpc3BhdGNoQ2FsbGJhY2soKQogCiBm
dW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkocGF0aCwgY2FsbGJhY2spCiB7Ci0gICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBnb3RGaWxlU3lzdGVtKTsKKyAgICB3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVTeXN0ZW0pOwogCi0gICAg
ZnVuY3Rpb24gZ290RmlsZVN5c3RlbShmaWxlU3lzdGVtKQorICAgIGZ1bmN0aW9uIGRpZEdldEZp
bGVTeXN0ZW0oZmlsZVN5c3RlbSkKICAgICB7CiAgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRE
aXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CkBAIC03Miw5ICs4OSw5IEBAIGZ1bmN0aW9uIGNyZWF0ZURpcmVjdG9y
eShwYXRoLCBjYWxsYmFjaykKIAogZnVuY3Rpb24gY3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykK
IHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGdvdEZpbGVTeXN0
ZW0pOworICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0Rmls
ZVN5c3RlbSk7CiAKLSAgICBmdW5jdGlvbiBnb3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pCisgICAg
ZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgZmls
ZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBAIC04MiwxMSArOTksMzUgQEAgZnVuY3Rpb24g
Y3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykKICAgICB9CiB9CiAKK2Z1bmN0aW9uIHdyaXRlRmls
ZShwYXRoLCBjb250ZW50LCBjYWxsYmFjaykKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVTeXN0ZW0pOworCisgICAgZnVuY3Rpb24gZGlkR2V0
RmlsZVN5c3RlbShmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbS5yb290Lmdl
dEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZGlkR2V0RmlsZUVudHJ5KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBkaWRHZXRGaWxlRW50cnkoZmlsZUVudHJ5KQorICAgIHsKKyAgICAgICAgZmls
ZUVudHJ5LmNyZWF0ZVdyaXRlcihkaWRHZXRXcml0ZXIpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGRpZEdldFdyaXRlcih3cml0ZXIpCisgICAgeworICAgICAgICB3cml0ZXIud3JpdGUobmV3IEJs
b2IoW2NvbnRlbnRdKSk7CisgICAgICAgIHdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpZiAod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3JpdGVyLkRPTkUpCisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisKIGZ1bmN0aW9uIGNs
ZWFyRmlsZVN5c3RlbShjYWxsYmFjaykKIHsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKCJmaWxlc3lzdGVtOiIgKyBsb2NhdGlvbi5vcmlnaW4gKyAiL3RlbXBvcmFyeS8iLCBn
b3RSb290LCBvbkVycm9yKTsKKyAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJm
aWxlc3lzdGVtOiIgKyBsb2NhdGlvbi5vcmlnaW4gKyAiL3RlbXBvcmFyeS8iLCBkaWRHZXRSb290
LCBvbkVycm9yKTsKIAotICAgIGZ1bmN0aW9uIGdvdFJvb3Qocm9vdCkKKyAgICBmdW5jdGlvbiBk
aWRHZXRSb290KHJvb3QpCiAgICAgewogICAgICAgICB2YXIgcmVhZGVyID0gcm9vdC5jcmVhdGVS
ZWFkZXIoKTsKICAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGRpZFJlYWRFbnRyaWVzKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0
LW1ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODE4Mjgx
NDU1YzNlMDBlYjhlM2JkY2ZhNGU1NDY0NmM1NzQ3ZDAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIGdldE1ldGFkYXRhLgorCitlcnJvckNv
ZGU6IDAKK21ldGFkYXRhOgorICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQorICBzaXplOiA0
CitlcnJvckNvZGU6IDAKK21ldGFkYXRhOgorICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQor
ICBzaXplOiAobnVsbCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJh
NjZlOWMyMDgzMmE3YzM1NDk3MTUxZDE0MGU5NGM2NGE3NzI5MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRh
Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+PG1ldGEgY2hhcnNldD0iVVRG
LTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcigpOworCisgICAgSW5zcGVjdG9yVGVzdC5j
bGVhckZpbGVTeXN0ZW0oc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCBzdGVwMik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyLnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDMoZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgc3Rl
cDQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNCgpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL3BpeW8iLCBzdGVwNSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3RlcDUoKQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2Vy
LnJlcXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L3BpeW8iLCBzdGVwNik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDYoZXJyb3JDb2Rl
LCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
bGVhckZpbGVTeXN0ZW0oc3RlcDcpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA3KGVycm9y
Q29kZSwgZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzxwPlRlc3RzIGdldE1ldGFkYXRhLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148968</attachid>
            <date>2012-06-21 23:44:56 -0700</date>
            <delta_ts>2012-06-22 06:10:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120622154456.patch</filename>
            <type>text/plain</type>
            <size>24313</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRjZDExZjhhODJhN2Iy
MDdkNWZlMzk2MDdlMTEwYTdmMzM0OWZhMi4uMmZmYjE0YmEzZGRiMGQxMWIxZWYzZjc2YzcwM2I1
YmRjNGEzYzdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTA2LTIxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQgYW5kIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgdG8g
RmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODc4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1s
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0
ZW1Sb290KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZGlyZWN0b3J5Q29u
dGVudFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJv
dG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgaXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0TWV0YWRhdGEpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5fZGlyZWN0b3J5
Q29udGVudFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVz
dE1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RNZXRhZGF0YS5yZXF1ZXN0QWNjZXB0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUucmVx
dWVzdE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucHJvdG90eXBlLl9tZXRhZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUuZGlyZWN0b3J5Q29udGVudFJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUu
bWV0YWRhdGFSZWNlaXZlZCk6CisKKzIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBmcm9udGVuZC1zaWRlIEVu
dHJ5IG9iamVjdCB0byBGaWxlU3lzdGVtTW9kZWwKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzM5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgppbmRleCA0MmQzYmUwMmIzNDM1MGY5MTUwNTY1ZDY0MzVkZDAwNDI4YzRmY2Fi
Li44YTM0NTFiYzQ1NGVmNzdiOWIxNWQyYmUxMTI0OWIyNzljNWI5MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNDIwLDYgKzE0MjAsMTUgQEAKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNvdXJjZVR5cGUiLCAiJHJlZiI6ICJQYWdlLlJl
c291cmNlVHlwZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZVR5
cGUgb2YgdGhlIGVudHJ5LCBhdmFpbGFibGUgZm9yIGEgZmlsZSBvbmx5LiIgfQogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcHJlc2VudHMgYSBi
cm93c2VyIHNpZGUgZmlsZSBvciBkaXJlY3RvcnkuIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiTWV0YWRhdGEiLAorICAgICAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibW9kaWZpY2F0aW9uVGltZSIsICJ0eXBlIjogIm51
bWJlciIsICJkZXNjcmlwdGlvbiI6ICJNb2RpZmljYXRpb24gdGltZS4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2l6ZSIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGaWxlIHNpemUuIFRoaXMgZmllbGQgaXMgYXZhaWxhYmxl
IG9ubHkgZm9yIGEgZmlsZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJSZXByZXNlbnRzIG1ldGFkYXRhIG9mIGEgZmlsZSBvciBlbnRyeS4i
CiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKQEAgLTE0
NTEsNiArMTQ2MCwxNiBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJ
ZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkZW50aWZp
ZXIuIENvcnJlc3BvbmRpbmcgZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIGV2ZW50IHNob3VsZCBo
YXZlIHNhbWUgcmVxdWVzdElkIHdpdGggdGhpcy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGNvbnRlbnQgb2YgdGhlIGRpcmVj
dG9yeSBhcyBkaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQgZXZlbnQuIgorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0TWV0YWRhdGEi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2Yg
dGhlIGVudHJ5IHRoYXQgdGhlIGZyb250ZW5kIGlzIHJlcXVlc3RpbmcgdG8gZ2V0IG1ldGFkYXRh
IGZyb20uIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJS
ZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZGVudGlmaWVyLiBDb3JyZXNwb25k
aW5nIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgc2hvdWxkIGhhdmUgc2FtZSByZXF1ZXN0SWQgd2l0
aCB0aGlzLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlJldHVybnMgbWV0YWRhdGEgb2YgdGhlIGVudHJ5IGFzIG1ldGFkYXRhUmVjZWl2ZWQg
ZXZlbnQuIgogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwpA
QCAtMTQ3MSw2ICsxNDkwLDE1IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW50
cmllcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJGaWxlU3lzdGVtLkVu
dHJ5IiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMgYWxsIGVu
dHJpZXMgb24gZGlyZWN0b3J5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHku
IiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
Q29tcGxldGlvbiBldmVudCBvZiByZXF1ZXN0RGlyZWN0b3J5Q29udGVudCBjb21tYW5kLiIKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAibWV0
YWRhdGFSZWNlaXZlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkZW50aWZpZXIgdGhhdCB3YXMgcmV0dXJuZWQgaW4gcmVz
cG9uc2UgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZ2V0TWV0YWRhdGEgcmVxdWVzdC4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIs
ICJkZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMg
c2V0IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIkcmVmIjogIkZpbGVTeXN0ZW0uTWV0YWRhdGEiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMgbWV0YWRhdGEgb2YgdGhl
IGVudHJ5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIiB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxldGlvbiBl
dmVudCBvZiBnZXRNZXRhZGF0YSBjb21tYW5kLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQog
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuY3BwCmluZGV4IDcyYTI3ODhjNjU3ZTc1MjIxMmRhNGJjMWM1YTAzYzQ4MGZi
MjFmMjkuLjA2MjA2ZGUyNjNkNjYxODc5OWJjOWRjZjA5NjFkMTdmMzM0ODJjZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
Y3BwCkBAIC01Miw2ICs1Miw4IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvY2Fs
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJN
ZXRhZGF0YS5oIgorI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk7CkBAIC0x
NDIsNyArMTQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgZGlkSGl0RXJyb3Io
RmlsZUVycm9yKik7Ci0gICAgYm9vbCBnb3RFbnRyeShFbnRyeSopOworICAgIGJvb2wgZGlkR2V0
RW50cnkoRW50cnkqKTsKIAogICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JD
b2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+
IGVudHJ5KQogICAgIHsKQEAgLTE4MCwxNCArMTgyLDE0IEBAIHZvaWQgR2V0RmlsZVN5c3RlbVJv
b3RUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmdvdEVudHJ5KTsKKyAgICBS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVy
RmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRGaWxlU3lzdGVtUm9vdFRh
c2s6OmRpZEdldEVudHJ5KTsKICAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpkaWRIaXRFcnJvcik7CiAgICAgT3duUHRyPFJlc29s
dmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNvbHZlVVJJQ2FsbGJhY2tz
OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCB0eXBlLCAiLyIpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0
ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lz
dGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNr
Ojpnb3RFbnRyeShFbnRyeSogZW50cnkpCitib29sIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlk
R2V0RW50cnkoRW50cnkqIGVudHJ5KQogewogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5
c3RlbTo6RW50cnk+IHJlc3VsdChUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk6OmNyZWF0
ZSgpLnNldFVybChlbnRyeS0+dG9VUkwoKSkuc2V0TmFtZSgiLyIpLnNldElzRGlyZWN0b3J5KHRy
dWUpKTsKICAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+
KDApLCByZXN1bHQpOwpAQCAtMjE2LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgZ290RW50cnkoRW50cnkqKTsKKyAgICBib29sIGRp
ZEdldEVudHJ5KEVudHJ5Kik7CiAgICAgYm9vbCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRy
eUFycmF5Kik7CiAKICAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBl
cnJvckNvZGUsIFBhc3NSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5
PiA+IGVudHJpZXMpCkBAIC0yNTIsMTQgKzI1NCwxNCBAQCB2b2lkIFJlYWREaXJlY3RvcnlUYXNr
OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNy
ZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmdvdEVudHJ5KTsKKyAgICBSZWZQdHI8RW50
cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxF
bnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6ZGlkR2V0RW50
cnkpOwogICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tE
aXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZSZWFkRGlyZWN0
b3J5VGFzazo6ZGlkSGl0RXJyb3IpOwogICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBm
aWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgcGF0
aCk7CiAKICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lz
dGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVs
ZWFzZSgpKTsKIH0KIAotYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6Z290RW50cnkoRW50cnkqIGVu
dHJ5KQorYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQog
ewogICAgIGlmICghZW50cnktPmlzRGlyZWN0b3J5KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0
KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIsIDApOwpAQCAtMzE4LDYgKzMyMCw4NiBAQCBi
b29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5
KiBlbnRyaWVzKQogICAgIHJldHVybiB0cnVlOwogfQogCitjbGFzcyBHZXRNZXRhZGF0YVRhc2sg
OiBwdWJsaWMgUmVmQ291bnRlZDxHZXRNZXRhZGF0YVRhc2s+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHZXRNZXRhZGF0YVRhc2spOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEdldE1ldGFkYXRhVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldE1ldGFkYXRhVGFzayhmcm9udGVuZFByb3Zp
ZGVyLCByZXF1ZXN0SWQsIHVybCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkdldE1ldGFkYXRh
VGFzaygpCisgICAgeworICAgICAgICByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpBQk9SVF9FUlIs
IDApOworICAgIH0KKworICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKKyAg
ICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgYm9vbCBkaWRHZXRFbnRyeShFbnRyeSopOworICAgIGJvb2wgZGlkR2V0TWV0YWRh
dGEoTWV0YWRhdGEqKTsKKworICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JD
b2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0YWRh
dGE+IG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwg
IW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5tZXRhZGF0YVJlY2VpdmVkKG1f
cmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIG1ldGFkYXRhKTsKKyAgICAg
ICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR2V0TWV0
YWRhdGFUYXNrKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwg
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9mcm9udGVuZFBy
b3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpCisgICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElk
KQorICAgICAgICAsIG1fdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKSB7IH0KKworICAgIFJlZlB0
cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgaW50IG1fcmVxdWVz
dElkOworICAgIEtVUkwgbV91cmw7CisgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBib29sIG1faXNE
aXJlY3Rvcnk7Cit9OworCit2b2lkIEdldE1ldGFkYXRhVGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBGaWxlU3lzdGVtVHlw
ZSB0eXBlOworICAgIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmws
IHR5cGUsIG1fcGF0aCk7CisKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRo
aXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEdldEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxs
YmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRIaXRFcnJvcik7CisKKyAg
ICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29s
dmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIG1fcGF0aCk7CisgICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgR2V0TWV0
YWRhdGFUYXNrOjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCit7CisgICAgaWYgKCFlbnRyeS0+
ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgcmVwb3J0
UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENh
bGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8TWV0YWRhdGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAm
R2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRNZXRhZGF0YSk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJh
Y2s+OjpjcmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJyb3IpOworICAgIGVu
dHJ5LT5nZXRNZXRhZGF0YShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIG1f
aXNEaXJlY3RvcnkgPSBlbnRyeS0+aXNEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBHZXRNZXRhZGF0YVRhc2s6OmRpZEdldE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRhZGF0
YSkKK3sKKyAgICB1c2luZyBUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6TWV0YWRhdGE7CisgICAg
UmVmUHRyPE1ldGFkYXRhPiByZXN1bHQgPSBNZXRhZGF0YTo6Y3JlYXRlKCkuc2V0TW9kaWZpY2F0
aW9uVGltZShtZXRhZGF0YS0+bW9kaWZpY2F0aW9uVGltZSgpKTsKKyAgICBpZiAoIW1faXNEaXJl
Y3RvcnkpCisgICAgICAgIHJlc3VsdC0+c2V0U2l6ZShtZXRhZGF0YS0+c2l6ZSgpKTsKKyAgICBy
ZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCByZXN1bHQp
OworICAgIHJldHVybiB0cnVlOworfQorCiB9CiAKIC8vIHN0YXRpYwpAQCAtMzUxLDggKzQzMywx
MCBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiAKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3Qo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBpbnQqIHJlcXVlc3RJZCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9udGVu
ZFByb3ZpZGVyKQorICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpIHsK
KyAgICAgICAgKmVycm9yID0gIkZpbGVTeXN0ZW0gYWdlbnQgaXMgbm90IGVuYWJsZWQiOwogICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIEFTU0VSVChtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250
ZW5kKCkpOwogCiAgICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVlc3RJZCsrOwpAQCAtMzYyLDEw
ICs0NDYsMTIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lz
dGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFMKICAgICAgICAgbV9mcm9udGVuZFBy
b3ZpZGVyLT5mcm9udGVuZCgpLT5maWxlU3lzdGVtUm9vdFJlY2VpdmVkKCpyZXF1ZXN0SWQsIHN0
YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKQogewotICAgIGlmICghbV9lbmFibGVk
IHx8ICFtX2Zyb250ZW5kUHJvdmlkZXIpCisgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJvbnRl
bmRQcm92aWRlcikgeworICAgICAgICAqZXJyb3IgPSAiRmlsZVN5c3RlbSBhZ2VudCBpcyBub3Qg
ZW5hYmxlZCI7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSk7CiAKICAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElk
Kys7CkBAIC0zNzYsNiArNDYyLDIyIEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojpy
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluCiAgICAgICAg
IG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGlyZWN0b3J5Q29udGVudFJlY2VpdmVk
KCpyZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oRmlsZUVycm9yOjpBQk9SVF9FUlIpLCAwKTsK
IH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKK3sKKyAg
ICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyKSB7CisgICAgICAgICplcnJv
ciA9ICJGaWxlU3lzdGVtIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKKworICAg
ICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKKworICAgIGlmIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZvck9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKSkK
KyAgICAgICAgR2V0TWV0YWRhdGFUYXNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCAqcmVx
dWVzdElkLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBlbHNlCisg
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+bWV0YWRhdGFSZWNlaXZlZCgq
cmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCA1
OWExNmU5MDdiMzMzOGU3NTMwZmE3YWY1YzE3MGEyMjU0NmExZDg0Li44MmY5NWM0YjZmZThmZDMx
Yjg3OTIxYjUzN2ZjNzNmMGU3YTVjYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQqIHJlcXVlc3RJ
ZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCogcmVxdWVzdElkKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckZyb250ZW5kKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDg0MzYyZDM1MzQ2MTNj
MzFjMTkzNGQyZjY2OTNiYWNkNjAzZjY1OGEuLjBkZjFjZTk4ZjBmMGE1NjczNmEyNjg3OWFmNzk4
Zjg4MmU2NmQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMzUsNiArMjM1LDExIEBAIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgY2Fs
bGJhY2soZXJyb3JDb2RlLCBlbnRyaWVzKTsKKyAgICB9LAorCisgICAgcmVxdWVzdE1ldGFkYXRh
OiBmdW5jdGlvbihlbnRyeSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9hZ2VudFdy
YXBwZXIucmVxdWVzdE1ldGFkYXRhKGVudHJ5LnVybCwgY2FsbGJhY2spOwogICAgIH0KIH0KIApA
QCAtMjg5LDcgKzI5NCwxMiBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnBy
b3RvdHlwZSA9IHsKIAogICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH0sCiAgICAg
Z2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9LAotICAgIGdldCBpc0RpcmVjdG9yeSgp
IHsgcmV0dXJuIHRoaXMuX2lzRGlyZWN0b3J5OyB9CisgICAgZ2V0IGlzRGlyZWN0b3J5KCkgeyBy
ZXR1cm4gdGhpcy5faXNEaXJlY3Rvcnk7IH0sCisKKyAgICBnZXRNZXRhZGF0YTogZnVuY3Rpb24o
Y2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0
YWRhdGEodGhpcywgY2FsbGJhY2spOworICAgIH0KIH0KIAogLyoqCkBAIC0zNDUsNiArMzU1LDcg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsK
ICAgICB0aGlzLl9wZW5kaW5nRmlsZVN5c3RlbVJvb3RSZXF1ZXN0cyA9IHt9OwogICAgIHRoaXMu
X3BlbmRpbmdEaXJlY3RvcnlDb250ZW50UmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9wZW5kaW5n
TWV0YWRhdGFSZXF1ZXN0cyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckZp
bGVTeXN0ZW1EaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIo
dGhpcykpOwogICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKQEAgLTQxMCw2ICs0MjEsMzEg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nRGlyZWN0b3J5
Q29udGVudFJlcXVlc3RzW3JlcXVlc3RJZF07CiAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwg
YmFja2VuZEVudHJpZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdXJsCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5N
ZXRhZGF0YT0pfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rp
b24odXJsLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBzdG9yZSA9IHRoaXMuX3BlbmRp
bmdNZXRhZGF0YVJlcXVlc3RzOworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdE1ldGFk
YXRhKHVybCwgcmVxdWVzdEFjY2VwdGVkKTsKKworICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNj
ZXB0ZWQoZXJyb3IsIHJlcXVlc3RJZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFlcnJv
cikKKyAgICAgICAgICAgICAgICBzdG9yZVtyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgX21ldGFkYXRhUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
ZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMu
X3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzW3JlcXVlc3RJZF07CisgICAgICAgIGlmICghY2FsbGJh
Y2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nTWV0
YWRhdGFSZXF1ZXN0c1tyZXF1ZXN0SWRdOworICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG1l
dGFkYXRhKTsKICAgICB9CiB9CiAKQEAgLTQ0Miw1ICs0NzgsMTUgQEAgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBkaXJlY3RvcnlDb250ZW50UmVj
ZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcykKICAg
ICB7CiAgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVk
KHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcyk7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuTWV0YWRhdGE9fSBt
ZXRhZGF0YQorICAgICAqLworICAgIG1ldGFkYXRhUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJ
ZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBl
ci5fbWV0YWRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRhdGEpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA3ZjZkNjQ0NDdhYmI4YjM4NGYxMGNkMGM1ZDBmOGMwNmQ5OGM5NjA4Li4z
ZThkNzUwZTVmNTZjNTcwYThmZGE1NzQ0NzFkZjBmNDlkYzc0YzVkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZCBhbmQgbWV0
YWRhdGFSZWNlaXZlZCBldmVudCB0byBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9maWxlc3lzdGVtLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
Lkluc3BlY3RvclRlc3Qud3JpdGVGaWxlKToKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3Rl
bVRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAg
KGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QpOgorICAgICAgICAod3JpdGVGaWxlLmRpZEdldEZp
bGVTeXN0ZW0pOgorICAgICAgICAod3JpdGVGaWxlKToKKyAgICAgICAgKHdyaXRlRmlsZS5kaWRH
ZXRXcml0ZXIud3JpdGVyLm9ud3JpdGUpOgorICAgICAgICAod3JpdGVGaWxlLmRpZEdldFdyaXRl
cik6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRh
dGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yMSAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBMYXlvdXQg
VGVzdCBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy5odG1sIGlzIGZs
YWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCmluZGV4IGU4YTNlMmU3NmRmMjU2NmFjMjQ1
MTIzNjhjMGUwNzg1YTQ3ZGY1YTguLjZkYjJkZWRmM2M5ZGMxZjAwMzAwZjI5YmRjNzYxNTk1ODk3
NmJmNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCkBAIC0yOSw2ICsyOSwxMSBAQCB2
YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlRmlsZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUo
cGF0aCkgKyAiXCIpLCAiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNr
KSArICIpIik7CiAgICAgfTsKIAorICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlID0gZnVuY3Rp
b24ocGF0aCwgY29udGVudCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJ3cml0ZUZpbGUodW5lc2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsg
IlwiKSwgdW5lc2NhcGUoXCIiICsgZXNjYXBlKGNvbnRlbnQpICsgIlwiKSwgIiArIEluc3BlY3Rv
clRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOworICAgIH07CisKICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJGaWxlU3lzdGVtKCIg
KyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsgIikiKTsKQEAgLTUw
LDYgKzU1LDE4IEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgaiArICI6ICIgKyBl
bnRyaWVzW2ldW2pdKTsKICAgICAgICAgfQogICAgIH07CisKKyAgICBJbnNwZWN0b3JUZXN0LmR1
bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVy
cm9yQ29kZSk7CisgICAgICAgIGlmIChtZXRhZGF0YSkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIiAgbW9kaWZpY2F0aW9uVGltZTogIiArICgibW9kaWZpY2F0aW9uVGltZSIgaW4g
bWV0YWRhdGEgPyAiKGV4aXN0cykiIDogIihudWxsKSIpKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCIgIHNpemU6ICIgKyAoInNpemUiIGluIG1ldGFkYXRhID8gbWV0YWRh
dGEuc2l6ZSA6ICIobnVsbCkiKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6IChudWxsKSIpOworICAgICAgICB9CisgICAg
fTsKIH0KIAogZnVuY3Rpb24gZGlzcGF0Y2hDYWxsYmFjaygpCkBAIC02MCw5ICs3Nyw5IEBAIGZ1
bmN0aW9uIGRpc3BhdGNoQ2FsbGJhY2soKQogCiBmdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkocGF0
aCwgY2FsbGJhY2spCiB7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAx
LCBnb3RGaWxlU3lzdGVtKTsKKyAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlks
IDEsIGRpZEdldEZpbGVTeXN0ZW0pOwogCi0gICAgZnVuY3Rpb24gZ290RmlsZVN5c3RlbShmaWxl
U3lzdGVtKQorICAgIGZ1bmN0aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKICAgICB7
CiAgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0cnVl
fSwgZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBAIC03Miw5ICs4
OSw5IEBAIGZ1bmN0aW9uIGNyZWF0ZURpcmVjdG9yeShwYXRoLCBjYWxsYmFjaykKIAogZnVuY3Rp
b24gY3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykKIHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbShURU1QT1JBUlksIDEsIGdvdEZpbGVTeXN0ZW0pOworICAgIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0RmlsZVN5c3RlbSk7CiAKLSAgICBmdW5jdGlvbiBn
b3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pCisgICAgZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShm
aWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwg
e2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7
CkBAIC04MiwxMSArOTksMzUgQEAgZnVuY3Rpb24gY3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykK
ICAgICB9CiB9CiAKK2Z1bmN0aW9uIHdyaXRlRmlsZShwYXRoLCBjb250ZW50LCBjYWxsYmFjaykK
K3sKKyAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVT
eXN0ZW0pOworCisgICAgZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQorICAg
IHsKKyAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwg
ZGlkR2V0RmlsZUVudHJ5KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkaWRHZXRGaWxlRW50cnko
ZmlsZUVudHJ5KQorICAgIHsKKyAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihkaWRHZXRX
cml0ZXIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRpZEdldFdyaXRlcih3cml0ZXIpCisgICAg
eworICAgICAgICB3cml0ZXIud3JpdGUobmV3IEJsb2IoW2NvbnRlbnRdKSk7CisgICAgICAgIHdy
aXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod3JpdGVyLnJlYWR5
U3RhdGUgPT09IHdyaXRlci5ET05FKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH07CisgICAgfQorfQorCiBmdW5jdGlvbiBjbGVhckZpbGVTeXN0ZW0oY2FsbGJhY2spCiB7
Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbToiICsgbG9j
YXRpb24ub3JpZ2luICsgIi90ZW1wb3JhcnkvIiwgZ290Um9vdCwgb25FcnJvcik7CisgICAgd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbToiICsgbG9jYXRpb24ub3Jp
Z2luICsgIi90ZW1wb3JhcnkvIiwgZGlkR2V0Um9vdCwgb25FcnJvcik7CiAKLSAgICBmdW5jdGlv
biBnb3RSb290KHJvb3QpCisgICAgZnVuY3Rpb24gZGlkR2V0Um9vdChyb290KQogICAgIHsKICAg
ICAgICAgdmFyIHJlYWRlciA9IHJvb3QuY3JlYXRlUmVhZGVyKCk7CiAgICAgICAgIHJlYWRlci5y
ZWFkRW50cmllcyhkaWRSZWFkRW50cmllcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgxODI4MTQ1NWMzZTAwZWI4ZTNiZGNmYTRlNTQ2NDZj
NTc0N2QwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBA
CitUZXN0cyBnZXRNZXRhZGF0YS4KKworZXJyb3JDb2RlOiAwCittZXRhZGF0YToKKyAgbW9kaWZp
Y2F0aW9uVGltZTogKGV4aXN0cykKKyAgc2l6ZTogNAorZXJyb3JDb2RlOiAwCittZXRhZGF0YToK
KyAgbW9kaWZpY2F0aW9uVGltZTogKGV4aXN0cykKKyAgc2l6ZTogKG51bGwpCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZ2V0LW1ldGFk
YXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dl
dC1tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYTY2ZTljMjA4MzJhN2MzNTQ5NzE1MWQxNDBl
OTRjNjRhNzcyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwh
RE9DVFlQRSBodG1sPjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgZmlsZVN5
c3RlbVJlcXVlc3RNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIoKTsKKworICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXAxKTsKKwor
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVG
aWxlKCIvaG9nZSIsICJmdWdhIiwgc3RlcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKKyAgICB7CisgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRh
dGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgc3Rl
cDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKGVycm9yQ29kZSwgbWV0YWRhdGEpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBtZXRhZGF0YSk7CisgICAgICAgIHN0ZXA0KCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc3RlcDQoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3Rvcnko
Ii9waXlvIiwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KCkKKyAgICB7Cisg
ICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEoImZpbGVzeXN0
ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9waXlvIiwgc3RlcDYpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN0ZXA2KGVycm9yQ29kZSwgbWV0YWRhdGEpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBtZXRh
ZGF0YSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHN0ZXA3KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNyhlcnJvckNvZGUsIGZpbGVTeXN0ZW0pCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3Jp
cHQ+Cis8cD5UZXN0cyBnZXRNZXRhZGF0YS48L3A+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149012</attachid>
            <date>2012-06-22 06:10:47 -0700</date>
            <delta_ts>2012-06-26 03:06:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87856-20120622221046.patch</filename>
            <type>text/plain</type>
            <size>24281</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhZTVmZThjNzhjOWE0
ZDJiMjRkNWI2OTQxNDA3YWM0YjkyOTgwOS4uMjc3Y2EzZGJlZWJjMDY3OTA5MmE3YTJlYzk0NTRj
ZTg3OTIwNzI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTA2LTIyICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQgYW5kIG1ldGFkYXRhUmVjZWl2ZWQgZXZlbnQgdG8g
RmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODc4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1s
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0
ZW1Sb290KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZGlyZWN0b3J5Q29u
dGVudFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJv
dG90eXBlLnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgaXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUucmVxdWVzdE1ldGFkYXRhKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2RpcmVj
dG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0TWV0YWRhdGEucmVxdWVzdEFjY2VwdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBl
LnJlcXVlc3RNZXRhZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVl
c3RNYW5hZ2VyLnByb3RvdHlwZS5fbWV0YWRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90eXBlLmRpcmVjdG9yeUNvbnRlbnRSZWNl
aXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90
eXBlLm1ldGFkYXRhUmVjZWl2ZWQpOgorCisyMDEyLTA2LTIyICBUYWlqdSBUc3Vpa2kgIDx0emlr
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgZnJvbnRlbmQtc2lk
ZSBFbnRyeSBvYmplY3QgdG8gRmlsZVN5c3RlbU1vZGVsCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTczOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KaW5kZXggODgwNjMzZTFkNjUyYzZmOTk0M2Q1YTgyZmJiNDRkODBkN2I5
Y2YxYi4uMGY2NDQ4MzQ5MWUwYTAwNjdjNmY5OTE0NmUzODU1NmMxY2M2ZmJmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQyMCw2ICsxNDIwLDE1IEBACiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2VUeXBlIiwgIiRyZWYiOiAiUGFn
ZS5SZXNvdXJjZVR5cGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVzb3Vy
Y2VUeXBlIG9mIHRoZSBlbnRyeSwgYXZhaWxhYmxlIGZvciBhIGZpbGUgb25seS4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXByZXNlbnRz
IGEgYnJvd3NlciBzaWRlIGZpbGUgb3IgZGlyZWN0b3J5LiIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIk1ldGFkYXRhIiwKKyAgICAgICAgICAg
ICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1vZGlmaWNhdGlvblRpbWUiLCAidHlwZSI6
ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiTW9kaWZpY2F0aW9uIHRpbWUuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNpemUiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRmlsZSBzaXplLiBUaGlzIGZpZWxkIGlzIGF2YWls
YWJsZSBvbmx5IGZvciBhIGZpbGUuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiUmVwcmVzZW50cyBtZXRhZGF0YSBvZiBhIGZpbGUgb3IgZW50
cnkuIgogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCkBA
IC0xNDUxLDYgKzE0NjAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZGVu
dGlmaWVyLiBDb3JyZXNwb25kaW5nIGRpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCBldmVudCBzaG91
bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CiAgICAgICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBjb250ZW50IG9mIHRoZSBk
aXJlY3RvcnkgYXMgZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIGV2ZW50LiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdE1ldGFk
YXRhIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVVJM
IG9mIHRoZSBlbnRyeSB0aGF0IHRoZSBmcm9udGVuZCBpcyByZXF1ZXN0aW5nIHRvIGdldCBtZXRh
ZGF0YSBmcm9tLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVy
bnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYi
OiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4gQ29ycmVz
cG9uZGluZyBtZXRhZGF0YVJlY2VpdmVkIGV2ZW50IHNob3VsZCBoYXZlIHNhbWUgcmVxdWVzdElk
IHdpdGggdGhpcy4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXR1cm5zIG1ldGFkYXRhIG9mIHRoZSBlbnRyeSBhcyBtZXRhZGF0YVJlY2Vp
dmVkIGV2ZW50LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6
IFsKQEAgLTE0NzEsNiArMTQ5MCwxNSBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImVudHJpZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRmlsZVN5c3Rl
bS5FbnRyeSIgfSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNvbnRhaW5zIGFs
bCBlbnRyaWVzIG9uIGRpcmVjdG9yeSBpZiB0aGUgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1
bGx5LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkNvbXBsZXRpb24gZXZlbnQgb2YgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQgY29tbWFuZC4i
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
Im1ldGFkYXRhUmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVyIHRoYXQgd2FzIHJldHVybmVkIGlu
IHJlc3BvbnNlIHRvIHRoZSBjb3JyZXNwb25kaW5nIGdldE1ldGFkYXRhIHJlcXVlc3QuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29kZSIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiMCwgaWYgbm8gZXJyb3IuIE90aGVyd2lzZSwgZXJyb3JDb2Rl
IGlzIHNldCB0byBGaWxlRXJyb3I6OkVycm9yQ29kZSB2YWx1ZS4iIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAibWV0YWRhdGEiLCAiJHJlZiI6ICJGaWxlU3lzdGVtLk1ldGFkYXRh
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNvbnRhaW5zIG1ldGFkYXRhIG9m
IHRoZSBlbnRyeSBpZiB0aGUgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBsZXRp
b24gZXZlbnQgb2YgZ2V0TWV0YWRhdGEgY29tbWFuZC4iCiAgICAgICAgICAgICB9CiAgICAgICAg
IF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA3MmEyNzg4YzY1N2U3NTIyMTJkYTRiYzFjNWEwM2M0
ODBmYjIxZjI5Li4wNjIwNmRlMjYzZDY2MTg3OTliYzlkY2YwOTYxZDE3ZjMzNDgyY2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcApAQCAtNTIsNiArNTIsOCBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJM
b2NhbEZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwpA
QCAtMTQyLDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGRpZEhpdEVy
cm9yKEZpbGVFcnJvciopOwotICAgIGJvb2wgZ290RW50cnkoRW50cnkqKTsKKyAgICBib29sIGRp
ZEdldEVudHJ5KEVudHJ5Kik7CiAKICAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVy
cm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVu
dHJ5PiBlbnRyeSkKICAgICB7CkBAIC0xODAsMTQgKzE4MiwxNCBAQCB2b2lkIEdldEZpbGVTeXN0
ZW1Sb290VGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxs
YmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpnb3RFbnRyeSk7Cisg
ICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmR2V0RmlsZVN5c3RlbVJv
b3RUYXNrOjpkaWRHZXRFbnRyeSk7CiAgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUo
dGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkSGl0RXJyb3IpOwogICAgIE93blB0cjxS
ZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxi
YWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgdHlwZSwgIi8iKTsKIAogICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxl
U3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgZmls
ZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi1ib29sIEdldEZpbGVTeXN0ZW1Sb290
VGFzazo6Z290RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6
OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkZp
bGVTeXN0ZW06OkVudHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5Ojpj
cmVhdGUoKS5zZXRVcmwoZW50cnktPnRvVVJMKCkpLnNldE5hbWUoIi8iKS5zZXRJc0RpcmVjdG9y
eSh0cnVlKSk7CiAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JD
b2RlPigwKSwgcmVzdWx0KTsKQEAgLTIxNiw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGdvdEVudHJ5KEVudHJ5Kik7CisgICAgYm9v
bCBkaWRHZXRFbnRyeShFbnRyeSopOwogICAgIGJvb2wgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMo
RW50cnlBcnJheSopOwogCiAgICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNv
ZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpF
bnRyeT4gPiBlbnRyaWVzKQpAQCAtMjUyLDE0ICsyNTQsMTQgQEAgdm9pZCBSZWFkRGlyZWN0b3J5
VGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+
OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpnb3RFbnRyeSk7CisgICAgUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rv
cnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEdl
dEVudHJ5KTsKICAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxi
YWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERp
cmVjdG9yeVRhc2s6OmRpZEhpdEVycm9yKTsKICAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNr
cz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUs
IHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmls
ZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tz
LnJlbGVhc2UoKSk7CiB9CiAKLWJvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmdvdEVudHJ5KEVudHJ5
KiBlbnRyeSkKK2Jvb2wgUmVhZERpcmVjdG9yeVRhc2s6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRy
eSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7CiAgICAgICAgIHJlcG9ydFJl
c3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSLCAwKTsKQEAgLTMxOCw2ICszMjAsODYg
QEAgYm9vbCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlB
cnJheSogZW50cmllcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorY2xhc3MgR2V0TWV0YWRhdGFU
YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8R2V0TWV0YWRhdGFUYXNrPiB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR2V0TWV0YWRhdGFUYXNrKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxHZXRNZXRhZGF0YVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+
IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRNZXRhZGF0YVRhc2soZnJvbnRlbmRQ
cm92aWRlciwgcmVxdWVzdElkLCB1cmwpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5HZXRNZXRh
ZGF0YVRhc2soKQorICAgIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRf
RVJSLCAwKTsKKyAgICB9CisKKyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3Ip
CisgICAgeworICAgICAgICByZXBvcnRSZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIGJvb2wgZGlkR2V0RW50cnkoRW50cnkqKTsKKyAgICBib29sIGRpZEdldE1l
dGFkYXRhKE1ldGFkYXRhKik7CisKKyAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVy
cm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1l
dGFkYXRhPiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVy
IHx8ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+bWV0YWRhdGFSZWNlaXZl
ZChtX3JlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtZXRhZGF0YSk7Cisg
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIEdl
dE1ldGFkYXRhVGFzayhQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlk
ZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fZnJvbnRl
bmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQorICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVl
c3RJZCkKKyAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CisKKyAgICBS
ZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAgIGludCBtX3Jl
cXVlc3RJZDsKKyAgICBLVVJMIG1fdXJsOworICAgIFN0cmluZyBtX3BhdGg7CisgICAgYm9vbCBt
X2lzRGlyZWN0b3J5OworfTsKKwordm9pZCBHZXRNZXRhZGF0YVRhc2s6OnN0YXJ0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgRmlsZVN5c3Rl
bVR5cGUgdHlwZTsKKyAgICBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKG1f
dXJsLCB0eXBlLCBtX3BhdGgpOworCisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0
ZSh0aGlzLCAmR2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRFbnRyeSk7CisgICAgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9y
Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldE1ldGFkYXRhVGFzazo6ZGlkSGl0RXJyb3IpOwor
CisgICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBS
ZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBtX3BhdGgpOworICAgIExvY2FsRmlsZVN5
c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOworfQorCitib29sIEdl
dE1ldGFkYXRhVGFzazo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5KQoreworICAgIGlmICghZW50
cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUiwgMCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIFJlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PE1ldGFkYXRhQ2FsbGJhY2s+OjpjcmVhdGUodGhp
cywgJkdldE1ldGFkYXRhVGFzazo6ZGlkR2V0TWV0YWRhdGEpOworICAgIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNh
bGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZHZXRNZXRhZGF0YVRhc2s6OmRpZEhpdEVycm9yKTsKKyAg
ICBlbnRyeS0+Z2V0TWV0YWRhdGEoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAg
ICBtX2lzRGlyZWN0b3J5ID0gZW50cnktPmlzRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgR2V0TWV0YWRhdGFUYXNrOjpkaWRHZXRNZXRhZGF0YShNZXRhZGF0YSogbWV0
YWRhdGEpCit7CisgICAgdXNpbmcgVHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhOwor
ICAgIFJlZlB0cjxNZXRhZGF0YT4gcmVzdWx0ID0gTWV0YWRhdGE6OmNyZWF0ZSgpLnNldE1vZGlm
aWNhdGlvblRpbWUobWV0YWRhdGEtPm1vZGlmaWNhdGlvblRpbWUoKSk7CisgICAgaWYgKCFtX2lz
RGlyZWN0b3J5KQorICAgICAgICByZXN1bHQtPnNldFNpemUobWV0YWRhdGEtPnNpemUoKSk7Cisg
ICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgcmVz
dWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQogCiAvLyBzdGF0aWMKQEAgLTM1MSw4ICs0
MzMsMTAgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcqKQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1S
b290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgaW50KiByZXF1ZXN0SWQpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJv
bnRlbmRQcm92aWRlcikKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVy
KSB7CisgICAgICAgICplcnJvciA9ICJGaWxlU3lzdGVtIGFnZW50IGlzIG5vdCBlbmFibGVkIjsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLT5m
cm9udGVuZCgpKTsKIAogICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKQEAgLTM2
MiwxMCArNDQ2LDEyIEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0Rmls
ZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTCiAgICAgICAgIG1fZnJvbnRl
bmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCgqcmVxdWVzdElk
LCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwgMCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKK3ZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkKIHsKLSAgICBpZiAoIW1fZW5h
YmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyKQorICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2Zy
b250ZW5kUHJvdmlkZXIpIHsKKyAgICAgICAgKmVycm9yID0gIkZpbGVTeXN0ZW0gYWdlbnQgaXMg
bm90IGVuYWJsZWQiOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIEFTU0VSVChtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpOwogCiAgICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVl
c3RJZCsrOwpAQCAtMzc2LDYgKzQ2MiwyMiBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDo6cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbgogICAg
ICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRpcmVjdG9yeUNvbnRlbnRSZWNl
aXZlZCgqcmVxdWVzdElkLCBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVFcnJvcjo6QUJPUlRfRVJSKSwg
MCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybCwgaW50KiByZXF1ZXN0SWQpCit7
CisgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fZnJvbnRlbmRQcm92aWRlcikgeworICAgICAgICAq
ZXJyb3IgPSAiRmlsZVN5c3RlbSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7CisK
KyAgICAqcmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7CisKKyAgICBpZiAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQo
KSkpCisgICAgICAgIEdldE1ldGFkYXRhVGFzazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwg
KnJlcXVlc3RJZCwgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgZWxz
ZQorICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFkYXRhUmVjZWl2
ZWQoKnJlcXVlc3RJZCwgc3RhdGljX2Nhc3Q8aW50PihGaWxlRXJyb3I6OkFCT1JUX0VSUiksIDAp
OworfQorCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIEFTU0VSVChmcm9udGVuZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKaW5k
ZXggNTlhMTZlOTA3YjMzMzhlNzUzMGZhN2FmNWMxNzBhMjI1NDZhMWQ4NC4uODJmOTVjNGI2ZmU4
ZmQzMWI4NzkyMWI1MzdmYzczZjBlN2E1Y2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAtNjEsNiArNjEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50KiByZXF1
ZXN0SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJGcm9udGVuZCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwppbmRleCA2NjFlOTE1ZmY3
MTVjMjFhMmM1YmU1MDg4ZjQ1NzhhM2I3N2NhYzQ5Li5lZGI2NDdmYTc1ODFiNGVkOGRkOWFlOTIz
MDYyMjQ2ZTQ5NmFmNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMjM1LDYgKzIzNSwxMSBAQCBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IGNhbGxiYWNrKGVycm9yQ29kZSwgZW50cmllcyk7CisgICAgfSwKKworICAgIHJlcXVlc3RNZXRh
ZGF0YTogZnVuY3Rpb24oZW50cnksIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWdl
bnRXcmFwcGVyLnJlcXVlc3RNZXRhZGF0YShlbnRyeS51cmwsIGNhbGxiYWNrKTsKICAgICB9CiB9
CiAKQEAgLTMyNSw2ICszMzAsMTQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRy
eS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGlzRGlyZWN0b3J5KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9pc0RpcmVjdG9yeTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YSl9IGNhbGxiYWNrCisg
ICAgICovCisgICAgcmVxdWVzdE1ldGFkYXRhOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YSh0aGlzLCBjYWxsYmFj
ayk7CiAgICAgfQogfQogCkBAIC0zOTQsNiArNDA3LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl9wZW5kaW5nRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0cyA9IHt9OwogICAgIHRoaXMuX3BlbmRpbmdEaXJlY3RvcnlDb250ZW50
UmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0cyA9IHt9Owog
CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1EaXNwYXRjaGVyKG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIodGhpcykpOwogICAgIEZpbGVTeXN0ZW1B
Z2VudC5lbmFibGUoKTsKQEAgLTQ1OSw2ICs0NzMsMzEgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nRGlyZWN0b3J5Q29udGVudFJlcXVlc3RzW3JlcXVlc3RJ
ZF07CiAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgYmFja2VuZEVudHJpZXMpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5NZXRhZGF0YT0pfSBjYWxsYmFjaworICAg
ICAqLworICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHZhciBzdG9yZSA9IHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzOworICAg
ICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdE1ldGFkYXRhKHVybCwgcmVxdWVzdEFjY2VwdGVk
KTsKKworICAgICAgICBmdW5jdGlvbiByZXF1ZXN0QWNjZXB0ZWQoZXJyb3IsIHJlcXVlc3RJZCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAgICAgICAgICAgICAgICBzdG9y
ZVtyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX21ldGFk
YXRhUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAg
ICB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3Rz
W3JlcXVlc3RJZF07CisgICAgICAgIGlmICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0c1tyZXF1ZXN0SWRd
OworICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG1ldGFkYXRhKTsKICAgICB9CiB9CiAKQEAg
LTQ5MSw1ICs1MzAsMTUgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnByb3Rv
dHlwZSA9IHsKICAgICBkaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJ
ZCwgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZW50
V3JhcHBlci5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBi
YWNrZW5kRW50cmllcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSByZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBh
cmFtIHtGaWxlU3lzdGVtQWdlbnQuTWV0YWRhdGE9fSBtZXRhZGF0YQorICAgICAqLworICAgIG1l
dGFkYXRhUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSkK
KyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fbWV0YWRhdGFSZWNlaXZlZChyZXF1
ZXN0SWQsIGVycm9yQ29kZSwgbWV0YWRhdGEpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YWZmMDEyOWRh
NzVmYmUyYWUxOWUyYTM4MzNlMjQ5NDZhNWJkNGI0Li4wZmZiZTYyZWFkYjliOWZhN2E1Mzc2MjUz
OWY5ZWFiNmEzZmNmM2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjIgIFRhaWp1
IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZCBhbmQgbWV0YWRhdGFSZWNlaXZlZCBldmVudCB0byBG
aWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04Nzg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanM6Cisg
ICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3Qud3JpdGVGaWxl
KToKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QuSW5zcGVjdG9yVGVzdC5kdW1w
TWV0YWRhdGFSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKGluaXRpYWxpemVfRmlsZVN5c3RlbVRl
c3QpOgorICAgICAgICAod3JpdGVGaWxlLmRpZEdldEZpbGVTeXN0ZW0pOgorICAgICAgICAod3Jp
dGVGaWxlKToKKyAgICAgICAgKHdyaXRlRmlsZS5kaWRHZXRXcml0ZXIud3JpdGVyLm9ud3JpdGUp
OgorICAgICAgICAod3JpdGVGaWxlLmRpZEdldFdyaXRlcik6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yMSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IHNlcGFyYXRlIHNjcmlw
dCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpp
bmRleCBlOGEzZTJlNzZkZjI1NjZhYzI0NTEyMzY4YzBlMDc4NWE0N2RmNWE4Li42ZGIyZGVkZjNj
OWRjMWYwMDMwMGYyOWJkYzc2MTU5NTg5NzZiZjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVz
dC5qcwpAQCAtMjksNiArMjksMTEgQEAgdmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBm
dW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUZp
bGUodW5lc2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3Qu
cmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwogICAgIH07CiAKKyAgICBJbnNwZWN0
b3JUZXN0LndyaXRlRmlsZSA9IGZ1bmN0aW9uKHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid3JpdGVGaWxlKHVuZXNj
YXBlKFwiIiArIGVzY2FwZShwYXRoKSArICJcIiksIHVuZXNjYXBlKFwiIiArIGVzY2FwZShjb250
ZW50KSArICJcIiksICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2sp
ICsgIikiKTsKKyAgICB9OworCiAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0gPSBm
dW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImNsZWFyRmlsZVN5c3RlbSgiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNr
KGNhbGxiYWNrKSArICIpIik7CkBAIC01MCw2ICs1NSwxOCBAQCB2YXIgaW5pdGlhbGl6ZV9GaWxl
U3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCIgICAgIiArIGogKyAiOiAiICsgZW50cmllc1tpXVtqXSk7CiAgICAgICAgIH0KICAgICB9
OworCisgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rp
b24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOworICAgICAgICBpZiAobWV0YWRhdGEp
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJtZXRhZGF0YToiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIG1vZGlmaWNhdGlvblRpbWU6ICIg
KyAoIm1vZGlmaWNhdGlvblRpbWUiIGluIG1ldGFkYXRhID8gIihleGlzdHMpIiA6ICIobnVsbCki
KSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBzaXplOiAiICsgKCJz
aXplIiBpbiBtZXRhZGF0YSA/IG1ldGFkYXRhLnNpemUgOiAiKG51bGwpIikpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiAo
bnVsbCkiKTsKKyAgICAgICAgfQorICAgIH07CiB9CiAKIGZ1bmN0aW9uIGRpc3BhdGNoQ2FsbGJh
Y2soKQpAQCAtNjAsOSArNzcsOSBAQCBmdW5jdGlvbiBkaXNwYXRjaENhbGxiYWNrKCkKIAogZnVu
Y3Rpb24gY3JlYXRlRGlyZWN0b3J5KHBhdGgsIGNhbGxiYWNrKQogewotICAgIHdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgZ290RmlsZVN5c3RlbSk7CisgICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxlU3lzdGVtKTsKIAotICAgIGZ1
bmN0aW9uIGdvdEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKKyAgICBmdW5jdGlvbiBkaWRHZXRGaWxl
U3lzdGVtKGZpbGVTeXN0ZW0pCiAgICAgewogICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGly
ZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAg
ICBjYWxsYmFjaygpOwpAQCAtNzIsOSArODksOSBAQCBmdW5jdGlvbiBjcmVhdGVEaXJlY3Rvcnko
cGF0aCwgY2FsbGJhY2spCiAKIGZ1bmN0aW9uIGNyZWF0ZUZpbGUocGF0aCwgY2FsbGJhY2spCiB7
Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBnb3RGaWxlU3lzdGVt
KTsKKyAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVT
eXN0ZW0pOwogCi0gICAgZnVuY3Rpb24gZ290RmlsZVN5c3RlbShmaWxlU3lzdGVtKQorICAgIGZ1
bmN0aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKICAgICB7CiAgICAgICAgIGZpbGVT
eXN0ZW0ucm9vdC5nZXRGaWxlKHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7
CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtODIsMTEgKzk5LDM1IEBAIGZ1bmN0aW9uIGNy
ZWF0ZUZpbGUocGF0aCwgY2FsbGJhY2spCiAgICAgfQogfQogCitmdW5jdGlvbiB3cml0ZUZpbGUo
cGF0aCwgY29udGVudCwgY2FsbGJhY2spCit7CisgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxlU3lzdGVtKTsKKworICAgIGZ1bmN0aW9uIGRpZEdldEZp
bGVTeXN0ZW0oZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRG
aWxlKHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGRpZEdldEZpbGVFbnRyeSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZGlkR2V0RmlsZUVudHJ5KGZpbGVFbnRyeSkKKyAgICB7CisgICAgICAgIGZpbGVF
bnRyeS5jcmVhdGVXcml0ZXIoZGlkR2V0V3JpdGVyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBk
aWRHZXRXcml0ZXIod3JpdGVyKQorICAgIHsKKyAgICAgICAgd3JpdGVyLndyaXRlKG5ldyBCbG9i
KFtjb250ZW50XSkpOworICAgICAgICB3cml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaWYgKHdyaXRlci5yZWFkeVN0YXRlID09PSB3cml0ZXIuRE9ORSkKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9OworICAgIH0KK30KKwogZnVuY3Rpb24gY2xl
YXJGaWxlU3lzdGVtKGNhbGxiYWNrKQogewotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1VUkwoImZpbGVzeXN0ZW06IiArIGxvY2F0aW9uLm9yaWdpbiArICIvdGVtcG9yYXJ5LyIsIGdv
dFJvb3QsIG9uRXJyb3IpOworICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZp
bGVzeXN0ZW06IiArIGxvY2F0aW9uLm9yaWdpbiArICIvdGVtcG9yYXJ5LyIsIGRpZEdldFJvb3Qs
IG9uRXJyb3IpOwogCi0gICAgZnVuY3Rpb24gZ290Um9vdChyb290KQorICAgIGZ1bmN0aW9uIGRp
ZEdldFJvb3Qocm9vdCkKICAgICB7CiAgICAgICAgIHZhciByZWFkZXIgPSByb290LmNyZWF0ZVJl
YWRlcigpOwogICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZGlkUmVhZEVudHJpZXMpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQt
bWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MTgyODE0
NTVjM2UwMGViOGUzYmRjZmE0ZTU0NjQ2YzU3NDdkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZ2V0TWV0YWRhdGEuCisKK2Vycm9yQ29k
ZTogMAorbWV0YWRhdGE6CisgIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCisgIHNpemU6IDQK
K2Vycm9yQ29kZTogMAorbWV0YWRhdGE6CisgIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCisg
IHNpemU6IChudWxsKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2dldC1tZXRhZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmE2
NmU5YzIwODMyYTdjMzU0OTcxNTFkMTQwZTk0YzY0YTc3MjkxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9nZXQtbWV0YWRhdGEu
aHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD48bWV0YSBjaGFyc2V0PSJVVEYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisKKyAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbShzdGVwMSk7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UiLCAiZnVnYSIsIHN0ZXAyKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBmaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHN0ZXAzKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVw
MyhlcnJvckNvZGUsIG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
TWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOworICAgICAgICBzdGVw
NCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvcGl5byIsIHN0ZXA1KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzdGVwNSgpCisgICAgeworICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIu
cmVxdWVzdE1ldGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvcGl5byIsIHN0ZXA2KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwNihlcnJvckNvZGUs
IG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1
ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNs
ZWFyRmlsZVN5c3RlbShzdGVwNyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDcoZXJyb3JD
b2RlLCBmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPHA+VGVzdHMgZ2V0TWV0YWRhdGEuPC9wPgo=
</data>
<flag name="review"
          id="156918"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="156919"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>