<?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>67180</bug_id>
          
          <creation_ts>2011-08-29 23:06:25 -0700</creation_ts>
          <short_desc>WebSocket: Receive binary message as ArrayBuffer</short_desc>
          <delta_ts>2011-08-31 01:32:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>65249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458718</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-29 23:06:25 -0700</bug_when>
    <thetext>Part of bug 65249. See also: bug 67115 (Receive binary message as Blob)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458729</commentid>
    <comment_count>1</comment_count>
      <attachid>105585</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-29 23:29:11 -0700</bug_when>
    <thetext>Created attachment 105585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458768</commentid>
    <comment_count>2</comment_count>
      <attachid>105585</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-30 01:37:19 -0700</bug_when>
    <thetext>Comment on attachment 105585
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/receive-arraybuffer.html:32
&gt; +// Create an ArrayBuffer containing all distinct bytes (&quot;\x00&quot; to &quot;\xFF&quot;).
&gt; +function createAllBytesValue()

nit: The comment is not so helpful because the function code is simple, and we can rename it to &quot;createArrayBufferContainingAllDistinctBytes&quot;

&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/receive-arraybuffer.js:16
&gt; +// Create an ArrayBuffer containing all distinct bytes (&quot;\x00&quot; to &quot;\xFF&quot;).
&gt; +function createAllBytesValue()

ditto.

&gt; Source/WebCore/websockets/WebSocket.cpp:419
&gt; +        RefPtr&lt;ArrayBuffer&gt; arrayBuffer = ArrayBuffer::create(binaryData-&gt;data(), binaryData-&gt;size());
&gt; +        dispatchEvent(MessageEvent::create(arrayBuffer.release()));

The variable &apos;arrayBuffer&apos; is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458850</commentid>
    <comment_count>3</comment_count>
      <attachid>105618</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-30 05:16:32 -0700</bug_when>
    <thetext>Created attachment 105618
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458851</commentid>
    <comment_count>4</comment_count>
      <attachid>105585</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-30 05:18:12 -0700</bug_when>
    <thetext>Comment on attachment 105585
Patch

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

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/receive-arraybuffer.html:32
&gt;&gt; +function createAllBytesValue()
&gt; 
&gt; nit: The comment is not so helpful because the function code is simple, and we can rename it to &quot;createArrayBufferContainingAllDistinctBytes&quot;

Fixed. Updated function names in receive-blob.html too.

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/receive-arraybuffer.js:16
&gt;&gt; +function createAllBytesValue()
&gt; 
&gt; ditto.

Fixed.

&gt;&gt; Source/WebCore/websockets/WebSocket.cpp:419
&gt;&gt; +        dispatchEvent(MessageEvent::create(arrayBuffer.release()));
&gt; 
&gt; The variable &apos;arrayBuffer&apos; is not needed.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459487</commentid>
    <comment_count>5</comment_count>
      <attachid>105618</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-31 00:22:11 -0700</bug_when>
    <thetext>Comment on attachment 105618
Patch v2

Looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459518</commentid>
    <comment_count>6</comment_count>
      <attachid>105618</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 01:32:45 -0700</bug_when>
    <thetext>Comment on attachment 105618
Patch v2

Clearing flags on attachment: 105618

Committed r94161: &lt;http://trac.webkit.org/changeset/94161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459519</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 01:32:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105585</attachid>
            <date>2011-08-29 23:29:11 -0700</date>
            <delta_ts>2011-08-30 05:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67180-20110830152909.patch</filename>
            <type>text/plain</type>
            <size>18193</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkM2MwMzMwMzhmYzMwMDAzMGI0N2E2
ZjMxMDE3NzE0OTNmYmMwZTBkLi5mMmFmYzEzZDA2NGZkYmI1MjY5NGE5NWI3MzA5Y2E0OGI3N2Uy
M2FlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMjkgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBSZWNlaXZlIGJpbmFyeSBt
ZXNzYWdlIGFzIEFycmF5QnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NzE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFy
cmF5YnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWw6CisgICAgICAgIEFkZGVk
LiBDb25uZWN0IHRvIGJpbmFyeS1mcmFtZXNfd3NoLnB5ICh3aGljaCBpcyBhbHNvIHVzZWQgZnJv
bSByZWNlaXZlLWJsb2IuaHRtbCkgYW5kCisgICAgICAgIGNoZWNrIHRoZSBjb250ZW50IG9mIE1l
c3NhZ2VFdmVudCdzIGRhdGEgYXR0cmlidXRlLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZWNlaXZlLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJz
L3JlY2VpdmUtYXJyYXlidWZmZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9yZWNlaXZlLWFycmF5YnVmZmVy
LmpzOiBBZGRlZC4KKwogMjAxMS0wOC0yOSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNaW5vciB1cGRhdGUgZm9yIHRlc3QgdGhhdCBpcyB0
aW1pbmcgb3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA2YzA3MmQ4NzRiNDQwYTI3MmUzYzcxOTk2N2Y3OWRmZDdh
MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MiBAQAorV2ViU29ja2V0OiBSZWNlaXZlIEFycmF5QnVmZmVycy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIHdzLmJpbmFyeVR5cGUgaXMgImFycmF5YnVmZmVyIgorUEFTUyBy
ZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aCBpcyAzCitDaGVja2luZyBtZXNzYWdlICMwLgorUEFTUyBy
ZXNwb25zZVR5cGUgaXMgIltvYmplY3QgQXJyYXlCdWZmZXJdIgorUEFTUyBhY3R1YWxBcnJheS5s
ZW5ndGggaXMgMTMKK1BBU1MgUGFzc2VkOiBNZXNzYWdlICMwLgorQ2hlY2tpbmcgbWVzc2FnZSAj
MS4KK1BBU1MgcmVzcG9uc2VUeXBlIGlzICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgYWN0
dWFsQXJyYXkubGVuZ3RoIGlzIDAKK1BBU1MgUGFzc2VkOiBNZXNzYWdlICMxLgorQ2hlY2tpbmcg
bWVzc2FnZSAjMi4KK1BBU1MgcmVzcG9uc2VUeXBlIGlzICJbb2JqZWN0IEFycmF5QnVmZmVyXSIK
K1BBU1MgYWN0dWFsQXJyYXkubGVuZ3RoIGlzIDI1NgorUEFTUyBQYXNzZWQ6IE1lc3NhZ2UgIzIu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNl
aXZlLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3JlY2VpdmUtYXJyYXlidWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjMwNTkzZDg2
YzljMzU0OTU0ZWJhZDQ2N2U1OGRjZGQ0YTZmNjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVy
Lmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiV2ViU29ja2V0OiBSZWNlaXZlIEFycmF5QnVmZmVycy4iKTsKKwor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKworZnVuY3Rpb24gY3JlYXRl
SGVsbG9Xb3JsZFZhbHVlKCkKK3sKKyAgICB2YXIgaGVsbG8gPSAiSGVsbG8sIHdvcmxkISI7Cisg
ICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoaGVsbG8ubGVuZ3RoKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGhlbGxvLmxlbmd0aDsgKytpKQorICAgICAgICBhcnJheVtpXSA9IGhlbGxv
LmNoYXJDb2RlQXQoaSk7CisgICAgcmV0dXJuIGFycmF5LmJ1ZmZlcjsKK30KKworZnVuY3Rpb24g
Y3JlYXRlRW1wdHlWYWx1ZSgpCit7CisgICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcigwKTsKK30K
KworLy8gQ3JlYXRlIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5pbmcgYWxsIGRpc3RpbmN0IGJ5dGVz
ICgiXHgwMCIgdG8gIlx4RkYiKS4KK2Z1bmN0aW9uIGNyZWF0ZUFsbEJ5dGVzVmFsdWUoKQorewor
ICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KDI1Nik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAyNTY7ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSBpOworICAgIHJldHVybiBhcnJheS5i
dWZmZXI7Cit9CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvYmluYXJ5LWZyYW1lcyIpOword3MuYmluYXJ5VHlwZSA9ICJh
cnJheWJ1ZmZlciI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndzLmJpbmFyeVR5cGUiLCAiYXJy
YXlidWZmZXIiKTsKKwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgcmVjZWl2ZWRNZXNzYWdlcyA9IFtd
OwordmFyIGV4cGVjdGVkVmFsdWVzID0gW2NyZWF0ZUhlbGxvV29ybGRWYWx1ZSgpLCBjcmVhdGVF
bXB0eVZhbHVlKCksIGNyZWF0ZUFsbEJ5dGVzVmFsdWUoKV07CisKK3dzLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KQoreworICAgIHJlY2VpdmVkTWVzc2FnZXMucHVzaChldmVudC5kYXRhKTsK
K307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBjbG9zZUV2ZW50ID0g
ZXZlbnQ7CisKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJyZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aCIs
IGV4cGVjdGVkVmFsdWVzLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZFZhbHVlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgY2hlY2soaSk7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9OworCit2YXIgcmVzcG9uc2VUeXBlOworCitmdW5jdGlvbiBjaGVjayhpbmRleCkKK3sK
KyAgICBkZWJ1ZygiQ2hlY2tpbmcgbWVzc2FnZSAjIiArIGluZGV4ICsgIi4iKTsKKyAgICByZXNw
b25zZVR5cGUgPSAnJyArIHJlY2VpdmVkTWVzc2FnZXNbaW5kZXhdOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygicmVzcG9uc2VUeXBlIiwgIltvYmplY3QgQXJyYXlCdWZmZXJdIik7CisgICAg
Y2hlY2tBcnJheUJ1ZmZlcihpbmRleCwgcmVjZWl2ZWRNZXNzYWdlc1tpbmRleF0sIGV4cGVjdGVk
VmFsdWVzW2luZGV4XSk7Cit9CisKK3ZhciBhY3R1YWxBcnJheTsKK3ZhciBleHBlY3RlZEFycmF5
OworCitmdW5jdGlvbiBjaGVja0FycmF5QnVmZmVyKHRlc3RJbmRleCwgYWN0dWFsLCBleHBlY3Rl
ZCkKK3sKKyAgICBhY3R1YWxBcnJheSA9IG5ldyBVaW50OEFycmF5KGFjdHVhbCk7CisgICAgZXhw
ZWN0ZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KGV4cGVjdGVkKTsKKyAgICBzaG91bGRFdmFsdWF0
ZVRvKCJhY3R1YWxBcnJheS5sZW5ndGgiLCBleHBlY3RlZEFycmF5Lmxlbmd0aCk7CisgICAgLy8g
UHJpbnQgb25seSB0aGUgZmlyc3QgbWlzbWF0Y2hlZCBieXRlIGluIG9yZGVyIG5vdCB0byBmbG9v
ZCBjb25zb2xlLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRBcnJheS5sZW5ndGg7
ICsraSkgeworICAgICAgICBpZiAoYWN0dWFsQXJyYXlbaV0gIT0gZXhwZWN0ZWRBcnJheVtpXSkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgiVmFsdWUgbWlzbWF0Y2g6IGFjdHVhbEFycmF5WyIg
KyBpICsgIl0gPSAiICsgYWN0dWFsQXJyYXlbaV0gKyAiLCBleHBlY3RlZEFycmF5WyIgKyBpICsg
Il0gPSAiICsgZXhwZWN0ZWRBcnJheVtpXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisgICAgdGVzdFBhc3NlZCgiUGFzc2VkOiBNZXNzYWdlICMiICsgdGVzdEluZGV4
ICsgIi4iKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3JlY2VpdmUtYXJyYXlidWZm
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3JlY2VpdmUtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkNDU2NTI0YTIxNGVkZTg5ODllZGUxNWIzN2JkOGI5OTBjNzI3MDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMv
cmVjZWl2ZS1hcnJheWJ1ZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorV2ViU29j
a2V0OiBSZWNlaXZlIEFycmF5QnVmZmVycyBpbiBXZWIgV29ya2Vycy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitQQVNTIFBBU1M6IHdzLmJpbmFyeVR5cGUgaXMgImFycmF5YnVmZmVy
IgorUEFTUyBQQVNTOiByZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aCBpcyAzCitJTkZPOiBDaGVja2lu
ZyBtZXNzYWdlICMwLgorUEFTUyBQQVNTOiByZXNwb25zZVR5cGUgaXMgIltvYmplY3QgQXJyYXlC
dWZmZXJdIgorUEFTUyBQQVNTOiBhY3R1YWxBcnJheS5sZW5ndGggaXMgMTMKK1BBU1MgUEFTUzog
UGFzc2VkOiBNZXNzYWdlICMwLgorSU5GTzogQ2hlY2tpbmcgbWVzc2FnZSAjMS4KK1BBU1MgUEFT
UzogcmVzcG9uc2VUeXBlIGlzICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgUEFTUzogYWN0
dWFsQXJyYXkubGVuZ3RoIGlzIDAKK1BBU1MgUEFTUzogUGFzc2VkOiBNZXNzYWdlICMxLgorSU5G
TzogQ2hlY2tpbmcgbWVzc2FnZSAjMi4KK1BBU1MgUEFTUzogcmVzcG9uc2VUeXBlIGlzICJbb2Jq
ZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgUEFTUzogYWN0dWFsQXJyYXkubGVuZ3RoIGlzIDI1Ngor
UEFTUyBQQVNTOiBQYXNzZWQ6IE1lc3NhZ2UgIzIuCitET05FCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3JlY2VpdmUtYXJyYXlidWZm
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ0NWFiNmFmMDcxOWRk
ZWJlYzVjMGIyMzBjYzJiNjc3MzE2MmM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZWNlaXZlLWFycmF5YnVm
ZmVyLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4v
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJXZWJTb2Nr
ZXQ6IFJlY2VpdmUgQXJyYXlCdWZmZXJzIGluIFdlYiBXb3JrZXJzLiIpOworCit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwg
cHJlZml4KQoreworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3Zh
ciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5qcyIp
Oword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVzc2Fn
ZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBBU1MiKSkKKyAg
ICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChzdGFydHNXaXRoKG1lc3Nh
Z2UsICJGQUlMIikpCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSkKKyAgICBlbHNlCisgICAg
ICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlID09PSAiRE9ORSIpCisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291
cmNlcy9yZWNlaXZlLWFycmF5YnVmZmVyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9yZWNlaXZlLWFycmF5YnVmZmVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBhYzRiYjI1MjE5MTY2ZTZiMzY2YjA4MGM3MTNlNjY4YzJhMjk2ZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvcmVzb3VyY2VzL3JlY2VpdmUtYXJyYXlidWZmZXIuanMKQEAgLTAsMCArMSw3
NyBAQAorZnVuY3Rpb24gY3JlYXRlSGVsbG9Xb3JsZFZhbHVlKCkKK3sKKyAgICB2YXIgaGVsbG8g
PSAiSGVsbG8sIHdvcmxkISI7CisgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoaGVsbG8u
bGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlbGxvLmxlbmd0aDsgKytpKQorICAg
ICAgICBhcnJheVtpXSA9IGhlbGxvLmNoYXJDb2RlQXQoaSk7CisgICAgcmV0dXJuIGFycmF5LmJ1
ZmZlcjsKK30KKworZnVuY3Rpb24gY3JlYXRlRW1wdHlWYWx1ZSgpCit7CisgICAgcmV0dXJuIG5l
dyBBcnJheUJ1ZmZlcigwKTsKK30KKworLy8gQ3JlYXRlIGFuIEFycmF5QnVmZmVyIGNvbnRhaW5p
bmcgYWxsIGRpc3RpbmN0IGJ5dGVzICgiXHgwMCIgdG8gIlx4RkYiKS4KK2Z1bmN0aW9uIGNyZWF0
ZUFsbEJ5dGVzVmFsdWUoKQoreworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KDI1Nik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSBp
OworICAgIHJldHVybiBhcnJheS5idWZmZXI7Cit9CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQo
IndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJj
ZXMvYmluYXJ5LWZyYW1lcyIpOword3MuYmluYXJ5VHlwZSA9ICJhcnJheWJ1ZmZlciI7CitpZiAo
d3MuYmluYXJ5VHlwZSA9PT0gImFycmF5YnVmZmVyIikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzog
d3MuYmluYXJ5VHlwZSBpcyBcImFycmF5YnVmZmVyXCIiKTsKK2Vsc2UKKyAgICBwb3N0TWVzc2Fn
ZSgiRkFJTDogd3MuYmluYXJ5VHlwZSBzaG91bGQgYmUgXCJhcnJheWJ1ZmZlclwiIGJ1dCB3YXMg
XCIiICsgd3MuYmluYXJ5VHlwZSArICJcIiIpOworCit2YXIgcmVjZWl2ZWRNZXNzYWdlcyA9IFtd
OwordmFyIGV4cGVjdGVkVmFsdWVzID0gW2NyZWF0ZUhlbGxvV29ybGRWYWx1ZSgpLCBjcmVhdGVF
bXB0eVZhbHVlKCksIGNyZWF0ZUFsbEJ5dGVzVmFsdWUoKV07CisKK3dzLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KQoreworICAgIHJlY2VpdmVkTWVzc2FnZXMucHVzaChldmVudC5kYXRhKTsK
K307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbihjbG9zZUV2ZW50KQoreworICAgIGlmIChyZWNl
aXZlZE1lc3NhZ2VzLmxlbmd0aCA9PT0gZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoKQorICAgICAgICBw
b3N0TWVzc2FnZSgiUEFTUzogcmVjZWl2ZWRNZXNzYWdlcy5sZW5ndGggaXMgIiArIGV4cGVjdGVk
VmFsdWVzLmxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogcmVj
ZWl2ZWRNZXNzYWdlcy5sZW5ndGggc2hvdWxkIGJlICIgKyBleHBlY3RlZFZhbHVlcy5sZW5ndGgg
KyAiIGJ1dCB3YXMgIiArIHJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgKytpKQorICAgICAgICBjaGVjayhpKTsK
KyAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworfTsKKworZnVuY3Rpb24gY2hlY2soaW5kZXgpCit7
CisgICAgcG9zdE1lc3NhZ2UoIklORk86IENoZWNraW5nIG1lc3NhZ2UgIyIgKyBpbmRleCArICIu
Iik7CisgICAgdmFyIHJlc3BvbnNlVHlwZSA9ICcnICsgcmVjZWl2ZWRNZXNzYWdlc1tpbmRleF07
CisgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gIltvYmplY3QgQXJyYXlCdWZmZXJdIikKKyAgICAg
ICAgcG9zdE1lc3NhZ2UoIlBBU1M6IHJlc3BvbnNlVHlwZSBpcyBcIltvYmplY3QgQXJyYXlCdWZm
ZXJdXCIiKTsKKyAgICBlbHNlCisgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiByZXNwb25zZVR5
cGUgc2hvdWxkIGJlIFwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIiBidXQgd2FzIFwiIiArIHJlc3Bv
bnNlVHlwZSArICJcIiIpOworICAgIGNoZWNrQXJyYXlCdWZmZXIoaW5kZXgsIHJlY2VpdmVkTWVz
c2FnZXNbaW5kZXhdLCBleHBlY3RlZFZhbHVlc1tpbmRleF0pOworfQorCitmdW5jdGlvbiBjaGVj
a0FycmF5QnVmZmVyKHRlc3RJbmRleCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgYWN0
dWFsQXJyYXkgPSBuZXcgVWludDhBcnJheShhY3R1YWwpOworICAgIHZhciBleHBlY3RlZEFycmF5
ID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQpOworICAgIGlmIChhY3R1YWxBcnJheS5sZW5ndGgg
PT09IGV4cGVjdGVkQXJyYXkubGVuZ3RoKQorICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogYWN0
dWFsQXJyYXkubGVuZ3RoIGlzICIgKyBleHBlY3RlZEFycmF5Lmxlbmd0aCk7CisgICAgZWxzZQor
ICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogYWN0dWFsQXJyYXkubGVuZ3RoIHNob3VsZCBiZSAi
ICsgZXhwZWN0ZWRBcnJheS5sZW5ndGggKyAiIGJ1dCB3YXMgIiArIGFjdHVhbEFycmF5Lmxlbmd0
aCk7CisgICAgLy8gUHJpbnQgb25seSB0aGUgZmlyc3QgbWlzbWF0Y2hlZCBieXRlIGluIG9yZGVy
IG5vdCB0byBmbG9vZCBjb25zb2xlLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRB
cnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYWN0dWFsQXJyYXlbaV0gIT0gZXhwZWN0
ZWRBcnJheVtpXSkgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFZhbHVlIG1pc21h
dGNoOiBhY3R1YWxBcnJheVsiICsgaSArICJdID0gIiArIGFjdHVhbEFycmF5W2ldICsgIiwgZXhw
ZWN0ZWRBcnJheVsiICsgaSArICJdID0gIiArIGV4cGVjdGVkQXJyYXlbaV0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQYXNz
ZWQ6IE1lc3NhZ2UgIyIgKyB0ZXN0SW5kZXggKyAiLiIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2Zjg1
ZmZjN2Q3MjQwMDgyZjNlY2M0NDUxYTVlNjM1MzQ1ZjYyMDkuLjllOWY1YjZmOTkwM2NmMzg2ZjFi
ZjVjMDU5NGEzMjk3ZDRjZTA3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAxMS0w
OC0yOSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWJT
b2NrZXQ6IFJlY2VpdmUgYmluYXJ5IG1lc3NhZ2UgYXMgQXJyYXlCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVjZWl2ZS1hcnJheWJ1
ZmZlci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6ZGF0YSk6IENvbnZlcnQgQXJy
YXlCdWZmZXIgdG8gSlNWYWx1ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OmRh
dGFBY2Nlc3NvckdldHRlcik6IENvbnZlcnQgQXJyYXlCdWZmZXIgdG8gdjg6OlZhbHVlLgorICAg
ICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAg
ICAgQWRkZWQgRGF0YVR5cGVBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXItcmVsYXRlZCBmdW5j
dGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmRhdGFBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgQ29uc3RydWN0IGFuIEFycmF5QnVmZmVyIGZy
b20gYmluYXJ5RGF0YSBhbmQgcmFpc2UgTWVzc2FnZUV2ZW50LgorCisyMDExLTA4LTI5ICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYlNvY2tldDogUmVj
ZWl2ZSBiaW5hcnkgbWVzc2FnZSBhcyBCbG9iCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NzExNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggZGE5MTE1NGJiYjljNWY0OTYy
ZTEzMDMyM2FhM2MwYWRmZjM2MzJmMy4uZmIwMzVjNWUyMDc2ZWI1OTQxMWExMWE1NjQ0M2ZlZWI0
Y2Y2ZjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50LmgiCiAKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgi
CiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuaCIKQEAgLTY1LDYgKzY2LDEwIEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZl
bnQ6OmRhdGEoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpE
YXRhVHlwZUJsb2I6CiAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCks
IGV2ZW50LT5kYXRhQXNCbG9iKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTWVzc2Fn
ZUV2ZW50OjpEYXRhVHlwZUFycmF5QnVmZmVyOgorICAgICAgICByZXN1bHQgPSB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBldmVudC0+ZGF0YUFzQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIC8vIFNhdmUgdGhlIHJlc3VsdCBzbyB3ZSBkb24ndCBoYXZlIHRv
IGRlc2VyaWFsaXplIHRoZSB2YWx1ZSBhZ2Fpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDc1
YzdiNTdkMDk2NjEyNjMwODMwMGFmMWNiNzI5YzY4ODhiNzE4ZTQuLmQ2NDA4M2MyODZmYzk2ZTdk
ZWM3MzRiNzg1Njg3NDhjNjVjOTk3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93Lmgi
CkBAIC02Niw2ICs2NywxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6
OmRhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIGNhc2UgTWVz
c2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6CiAgICAgICAgIHJlc3VsdCA9IHRvVjgoZXZlbnQtPmRh
dGFBc0Jsb2IoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRh
dGFUeXBlQXJyYXlCdWZmZXI6CisgICAgICAgIHJlc3VsdCA9IHRvVjgoZXZlbnQtPmRhdGFBc0Fy
cmF5QnVmZmVyKCkpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICAvLyBPdmVyd3JpdGUg
dGhlIGRhdGEgYXR0cmlidXRlIHNvIGl0IHJldHVybnMgdGhlIGNhY2hlZCByZXN1bHQgaW4gZnV0
dXJlIGludm9jYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCAzNDMy
ZDZmMzQ1NTFmMjRkMDZhMjg5Y2UxYzI2NTQ0M2VmNGEwOGQ4Li4yNzMxZmEzNWNmNzU5YzY0MTE5
N2UxMWY4NmQ5YTJlM2EyYTA4MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApA
QCAtNjgsNiArNjgsMTUgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxC
bG9iPiBkYXRhKQogewogfQogCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBkYXRhKQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwgZmFsc2UsIGZhbHNlKQorICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZUFycmF5QnVmZmVyKQor
ICAgICwgbV9kYXRhQXNBcnJheUJ1ZmZlcihkYXRhKQorICAgICwgbV9vcmlnaW4oIiIpCisgICAg
LCBtX2xhc3RFdmVudElkKCIiKQoreworfQorCiBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQo
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IDNlYjJjNGYxMWVlMTU0NDM0
ODA1M2U3NjYzYzVmYjM2NzM1ZDIyZmIuLmRlZDgwNzRiMGVkZDYzZDAxZGJlZTA2ZWNlMTc2OTg4
MDNkMTNkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZm5kZWYgTWVzc2FnZUV2ZW50X2gKICNkZWZpbmUgTWVzc2FnZUV2ZW50X2gKIAorI2luY2x1
ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC01Niw2ICs1NywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2Fn
ZUV2ZW50KGRhdGEpKTsKICAgICAgICAgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhKSk7Cisg
ICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKICAgICAgICAgdm9p
ZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01X
aW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CkBAIC03OCwyMyAr
ODMsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBlbnVtIERhdGFUeXBlIHsKICAg
ICAgICAgICAgIERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlLAogICAgICAgICAgICAgRGF0
YVR5cGVTdHJpbmcsCi0gICAgICAgICAgICBEYXRhVHlwZUJsb2IKKyAgICAgICAgICAgIERhdGFU
eXBlQmxvYiwKKyAgICAgICAgICAgIERhdGFUeXBlQXJyYXlCdWZmZXIKICAgICAgICAgfTsKICAg
ICAgICAgRGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9CiAg
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7IH0K
ICAgICAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUFzU3Ry
aW5nOyB9CiAgICAgICAgIEJsb2IqIGRhdGFBc0Jsb2IoKSBjb25zdCB7IHJldHVybiBtX2RhdGFB
c0Jsb2IuZ2V0KCk7IH0KKyAgICAgICAgQXJyYXlCdWZmZXIqIGRhdGFBc0FycmF5QnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhQXNBcnJheUJ1ZmZlci5nZXQoKTsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgICAgIE1lc3NhZ2VFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgICAgICBleHBsaWNpdCBNZXNzYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBh
c3NSZWZQdHI8QmxvYj4gZGF0YSk7CisgICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKTsKIAogICAgICAgICBEYXRhVHlwZSBtX2RhdGFUeXBl
OwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGFBc1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKICAgICAgICAgU3RyaW5nIG1fZGF0YUFzU3RyaW5nOwogICAgICAgICBS
ZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1f
ZGF0YUFzQXJyYXlCdWZmZXI7CiAgICAgICAgIFN0cmluZyBtX29yaWdpbjsKICAgICAgICAgU3Ry
aW5nIG1fbGFzdEV2ZW50SWQ7CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDRmYTg3MTlmNzNkMDFi
NWYwNzljODEzMGViYjQ5ODBiM2YyN2M3NWIuLjc4OTUwNjRkNWM1NWI4NzViYmVlOWNjM2QwNWM3
OTRlYjgyZDU4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAg
LTQxNCwxMCArNDE0LDEyIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIGNhc2UgQmluYXJ5VHlwZUFycmF5QnVmZmVyOgotICAgICAgICBtX2NoYW5uZWwt
PmZhaWwoIkNhbm5vdCByZWNlaXZlIFdlYlNvY2tldCBiaW5hcnkgZGF0YSBhcyBBcnJheUJ1ZmZl
ciB5ZXQuIik7CisgICAgY2FzZSBCaW5hcnlUeXBlQXJyYXlCdWZmZXI6IHsKKyAgICAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYmluYXJ5
RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLT5zaXplKCkpOworICAgICAgICBkaXNwYXRjaEV2ZW50
KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSkpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgfQogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VFcnJvcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105618</attachid>
            <date>2011-08-30 05:16:32 -0700</date>
            <delta_ts>2011-08-31 01:32:45 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-67180-20110830211630.patch</filename>
            <type>text/plain</type>
            <size>21233</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkM2MwMzMwMzhmYzMwMDAzMGI0N2E2
ZjMxMDE3NzE0OTNmYmMwZTBkLi5iZGUzODVlNjgxYWE0MDI1ZjE3ZmMyYmUxYTlmMDZlY2RkNTI4
Y2RjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDgtMzAgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViU29ja2V0OiBSZWNlaXZlIGJpbmFyeSBt
ZXNzYWdlIGFzIEFycmF5QnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NzE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFy
cmF5YnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWw6CisgICAgICAgIEFkZGVk
LiBDb25uZWN0IHRvIGJpbmFyeS1mcmFtZXNfd3NoLnB5ICh3aGljaCBpcyBhbHNvIHVzZWQgZnJv
bSByZWNlaXZlLWJsb2IuaHRtbCkgYW5kCisgICAgICAgIGNoZWNrIHRoZSBjb250ZW50IG9mIE1l
c3NhZ2VFdmVudCdzIGRhdGEgYXR0cmlidXRlLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1ibG9iLmh0bWw6CisgICAgICAgIFVwZGF0ZSBmdW5jdGlv
biBuYW1lcyB0byBtYXRjaCBvbmVzIGluIHJlY2VpdmUtYXJyYXlidWZmZXIuaHRtbC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVjZWl2ZS1hcnJh
eWJ1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJj
ZXMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9yZWNlaXZlLWJsb2IuanM6Cisg
ICAgICAgIFNhbWUgYXMgcmVjZWl2ZS1ibG9iLmh0bWwgYWJvdmUuCisKIDIwMTEtMDgtMjkgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWlu
b3IgdXBkYXRlIGZvciB0ZXN0IHRoYXQgaXMgdGltaW5nIG91dC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3JlY2VpdmUtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNmMwNzJk
ODc0YjQ0MGEyNzJlM2M3MTk5NjdmNzlkZmQ3YTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3JlY2VpdmUtYXJyYXlidWZm
ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1dlYlNvY2tldDogUmVjZWl2ZSBBcnJh
eUJ1ZmZlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyB3cy5iaW5hcnlU
eXBlIGlzICJhcnJheWJ1ZmZlciIKK1BBU1MgcmVjZWl2ZWRNZXNzYWdlcy5sZW5ndGggaXMgMwor
Q2hlY2tpbmcgbWVzc2FnZSAjMC4KK1BBU1MgcmVzcG9uc2VUeXBlIGlzICJbb2JqZWN0IEFycmF5
QnVmZmVyXSIKK1BBU1MgYWN0dWFsQXJyYXkubGVuZ3RoIGlzIDEzCitQQVNTIFBhc3NlZDogTWVz
c2FnZSAjMC4KK0NoZWNraW5nIG1lc3NhZ2UgIzEuCitQQVNTIHJlc3BvbnNlVHlwZSBpcyAiW29i
amVjdCBBcnJheUJ1ZmZlcl0iCitQQVNTIGFjdHVhbEFycmF5Lmxlbmd0aCBpcyAwCitQQVNTIFBh
c3NlZDogTWVzc2FnZSAjMS4KK0NoZWNraW5nIG1lc3NhZ2UgIzIuCitQQVNTIHJlc3BvbnNlVHlw
ZSBpcyAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitQQVNTIGFjdHVhbEFycmF5Lmxlbmd0aCBpcyAy
NTYKK1BBU1MgUGFzc2VkOiBNZXNzYWdlICMyLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODg5MzQyNzE5NmMyMzA5NDQ5NDU2YjkyYzFmOTU4ODkyNWNjYTYw
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIldlYlNvY2tldDog
UmVjZWl2ZSBBcnJheUJ1ZmZlcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CisKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0hlbGxvV29y
bGQoKQoreworICAgIHZhciBoZWxsbyA9ICJIZWxsbywgd29ybGQhIjsKKyAgICB2YXIgYXJyYXkg
PSBuZXcgVWludDhBcnJheShoZWxsby5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
aGVsbG8ubGVuZ3RoOyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaGVsbG8uY2hhckNvZGVBdChp
KTsKKyAgICByZXR1cm4gYXJyYXkuYnVmZmVyOworfQorCitmdW5jdGlvbiBjcmVhdGVFbXB0eUFy
cmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbmV3IEFycmF5QnVmZmVyKDApOworfQorCitmdW5j
dGlvbiBjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKK3sKKyAg
ICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAgICByZXR1cm4gYXJyYXkuYnVm
ZmVyOworfQorCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2JpbmFyeS1mcmFtZXMiKTsKK3dzLmJpbmFyeVR5cGUgPSAiYXJy
YXlidWZmZXIiOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3cy5iaW5hcnlUeXBlIiwgImFycmF5
YnVmZmVyIik7CisKK3ZhciBjbG9zZUV2ZW50OwordmFyIHJlY2VpdmVkTWVzc2FnZXMgPSBbXTsK
K3ZhciBleHBlY3RlZFZhbHVlcyA9IFtjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdIZWxsb1dv
cmxkKCksIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXIoKSwgY3JlYXRlQXJyYXlCdWZmZXJDb250YWlu
aW5nQWxsRGlzdGluY3RCeXRlcygpXTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQp
Cit7CisgICAgcmVjZWl2ZWRNZXNzYWdlcy5wdXNoKGV2ZW50LmRhdGEpOworfTsKKword3Mub25j
bG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKworICAg
IHNob3VsZEV2YWx1YXRlVG8oInJlY2VpdmVkTWVzc2FnZXMubGVuZ3RoIiwgZXhwZWN0ZWRWYWx1
ZXMubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0
aDsgKytpKQorICAgICAgICBjaGVjayhpKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3Zh
ciByZXNwb25zZVR5cGU7CisKK2Z1bmN0aW9uIGNoZWNrKGluZGV4KQoreworICAgIGRlYnVnKCJD
aGVja2luZyBtZXNzYWdlICMiICsgaW5kZXggKyAiLiIpOworICAgIHJlc3BvbnNlVHlwZSA9ICcn
ICsgcmVjZWl2ZWRNZXNzYWdlc1tpbmRleF07CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJy
ZXNwb25zZVR5cGUiLCAiW29iamVjdCBBcnJheUJ1ZmZlcl0iKTsKKyAgICBjaGVja0FycmF5QnVm
ZmVyKGluZGV4LCByZWNlaXZlZE1lc3NhZ2VzW2luZGV4XSwgZXhwZWN0ZWRWYWx1ZXNbaW5kZXhd
KTsKK30KKwordmFyIGFjdHVhbEFycmF5OwordmFyIGV4cGVjdGVkQXJyYXk7CisKK2Z1bmN0aW9u
IGNoZWNrQXJyYXlCdWZmZXIodGVzdEluZGV4LCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGFj
dHVhbEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYWN0dWFsKTsKKyAgICBleHBlY3RlZEFycmF5ID0g
bmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQpOworICAgIHNob3VsZEV2YWx1YXRlVG8oImFjdHVhbEFy
cmF5Lmxlbmd0aCIsIGV4cGVjdGVkQXJyYXkubGVuZ3RoKTsKKyAgICAvLyBQcmludCBvbmx5IHRo
ZSBmaXJzdCBtaXNtYXRjaGVkIGJ5dGUgaW4gb3JkZXIgbm90IHRvIGZsb29kIGNvbnNvbGUuCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChhY3R1YWxBcnJheVtpXSAhPSBleHBlY3RlZEFycmF5W2ldKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJWYWx1ZSBtaXNtYXRjaDogYWN0dWFsQXJyYXlbIiArIGkgKyAiXSA9ICIg
KyBhY3R1YWxBcnJheVtpXSArICIsIGV4cGVjdGVkQXJyYXlbIiArIGkgKyAiXSA9ICIgKyBleHBl
Y3RlZEFycmF5W2ldKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICB0ZXN0UGFzc2VkKCJQYXNzZWQ6IE1lc3NhZ2UgIyIgKyB0ZXN0SW5kZXggKyAiLiIpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3JlY2VpdmUtYmxvYi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWJsb2IuaHRtbAppbmRleCBiYjBjZjZk
NWQ1YWFkZWM3ZGI2Mjk4MDA0NWE4OTM3ZTc3MTVmYzdlLi5mYmRhZjY4MWJlZjAxODk4NTk4NDUz
MmY0MzE5MjE5ZDZlNmExZDJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3JlY2VpdmUtYmxvYi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1ibG9iLmh0bWwKQEAgLTE0LDcg
KzE0LDcgQEAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAotZnVuY3Rp
b24gY3JlYXRlSGVsbG9Xb3JsZFZhbHVlKCkKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVyQ29u
dGFpbmluZ0hlbGxvV29ybGQoKQogewogICAgIHZhciBoZWxsbyA9ICJIZWxsbywgd29ybGQhIjsK
ICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxsby5sZW5ndGgpOwpAQCAtMjMsMTMg
KzIzLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZUhlbGxvV29ybGRWYWx1ZSgpCiAgICAgcmV0dXJuIGFy
cmF5LmJ1ZmZlcjsKIH0KIAotZnVuY3Rpb24gY3JlYXRlRW1wdHlWYWx1ZSgpCitmdW5jdGlvbiBj
cmVhdGVFbXB0eUFycmF5QnVmZmVyKCkKIHsKICAgICByZXR1cm4gbmV3IEFycmF5QnVmZmVyKDAp
OwogfQogCi0vLyBDcmVhdGUgYW4gQXJyYXlCdWZmZXIgY29udGFpbmluZyBhbGwgZGlzdGluY3Qg
Ynl0ZXMgKCJceDAwIiB0byAiXHhGRiIpLgotZnVuY3Rpb24gY3JlYXRlQWxsQnl0ZXNWYWx1ZSgp
CitmdW5jdGlvbiBjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkK
IHsKICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwogICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMjU2OyArK2kpCkBAIC00Miw3ICs0MSw3IEBAIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid3MuYmluYXJ5VHlwZSIsICJibG9iIik7CiAKIHZhciBjbG9zZUV2ZW50OwogdmFyIHJlY2Vp
dmVkTWVzc2FnZXMgPSBbXTsKLXZhciBleHBlY3RlZFZhbHVlcyA9IFtjcmVhdGVIZWxsb1dvcmxk
VmFsdWUoKSwgY3JlYXRlRW1wdHlWYWx1ZSgpLCBjcmVhdGVBbGxCeXRlc1ZhbHVlKCldOwordmFy
IGV4cGVjdGVkVmFsdWVzID0gW2NyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0hlbGxvV29ybGQo
KSwgY3JlYXRlRW1wdHlBcnJheUJ1ZmZlcigpLCBjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdB
bGxEaXN0aW5jdEJ5dGVzKCldOwogCiB3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9yZWNlaXZlLWFycmF5YnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZWNlaXZlLWFycmF5YnVmZmVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDQ1NjUyNGEyMTRlZGU4OTg5ZWRlMTViMzdiZDhi
OTkwYzcyNzAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3JlY2VpdmUtYXJyYXlidWZmZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjMgQEAKK1dlYlNvY2tldDogUmVjZWl2ZSBBcnJheUJ1ZmZlcnMgaW4gV2Vi
IFdvcmtlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBQQVNTOiB3cy5i
aW5hcnlUeXBlIGlzICJhcnJheWJ1ZmZlciIKK1BBU1MgUEFTUzogcmVjZWl2ZWRNZXNzYWdlcy5s
ZW5ndGggaXMgMworSU5GTzogQ2hlY2tpbmcgbWVzc2FnZSAjMC4KK1BBU1MgUEFTUzogcmVzcG9u
c2VUeXBlIGlzICJbb2JqZWN0IEFycmF5QnVmZmVyXSIKK1BBU1MgUEFTUzogYWN0dWFsQXJyYXku
bGVuZ3RoIGlzIDEzCitQQVNTIFBBU1M6IFBhc3NlZDogTWVzc2FnZSAjMC4KK0lORk86IENoZWNr
aW5nIG1lc3NhZ2UgIzEuCitQQVNTIFBBU1M6IHJlc3BvbnNlVHlwZSBpcyAiW29iamVjdCBBcnJh
eUJ1ZmZlcl0iCitQQVNTIFBBU1M6IGFjdHVhbEFycmF5Lmxlbmd0aCBpcyAwCitQQVNTIFBBU1M6
IFBhc3NlZDogTWVzc2FnZSAjMS4KK0lORk86IENoZWNraW5nIG1lc3NhZ2UgIzIuCitQQVNTIFBB
U1M6IHJlc3BvbnNlVHlwZSBpcyAiW29iamVjdCBBcnJheUJ1ZmZlcl0iCitQQVNTIFBBU1M6IGFj
dHVhbEFycmF5Lmxlbmd0aCBpcyAyNTYKK1BBU1MgUEFTUzogUGFzc2VkOiBNZXNzYWdlICMyLgor
RE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBkNDVhYjZhZjA3MTlkZGViZWM1YzBiMjMwY2MyYjY3NzMxNjJjODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitkZXNjcmlwdGlvbigiV2ViU29ja2V0OiBSZWNlaXZlIEFycmF5QnVmZmVycyBpbiBXZWIg
V29ya2Vycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwor
ZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gc3RyLmluZGV4
T2YocHJlZml4KSA9PSAwOworfQorCit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2Vz
L3JlY2VpdmUtYXJyYXlidWZmZXIuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNX
aXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAg
ZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVk
KG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVz
c2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJj
ZXMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjI1YWIxYmJiMjQyNTgyYjBl
MGY1MGU2ZTkxZmNhOWM5ZmU0ZGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9yZWNlaXZlLWFy
cmF5YnVmZmVyLmpzCkBAIC0wLDAgKzEsNzYgQEAKK2Z1bmN0aW9uIGNyZWF0ZUFycmF5QnVmZmVy
Q29udGFpbmluZ0hlbGxvV29ybGQoKQoreworICAgIHZhciBoZWxsbyA9ICJIZWxsbywgd29ybGQh
IjsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShoZWxsby5sZW5ndGgpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaGVsbG8ubGVuZ3RoOyArK2kpCisgICAgICAgIGFycmF5W2ldID0g
aGVsbG8uY2hhckNvZGVBdChpKTsKKyAgICByZXR1cm4gYXJyYXkuYnVmZmVyOworfQorCitmdW5j
dGlvbiBjcmVhdGVFbXB0eUFycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbmV3IEFycmF5QnVm
ZmVyKDApOworfQorCitmdW5jdGlvbiBjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdBbGxEaXN0
aW5jdEJ5dGVzKCkKK3sKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIGFycmF5W2ldID0gaTsKKyAg
ICByZXR1cm4gYXJyYXkuYnVmZmVyOworfQorCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czov
LzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Jp
bmFyeS1mcmFtZXMiKTsKK3dzLmJpbmFyeVR5cGUgPSAiYXJyYXlidWZmZXIiOworaWYgKHdzLmJp
bmFyeVR5cGUgPT09ICJhcnJheWJ1ZmZlciIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IHdzLmJp
bmFyeVR5cGUgaXMgXCJhcnJheWJ1ZmZlclwiIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IHdzLmJpbmFyeVR5cGUgc2hvdWxkIGJlIFwiYXJyYXlidWZmZXJcIiBidXQgd2FzIFwiIiAr
IHdzLmJpbmFyeVR5cGUgKyAiXCIiKTsKKwordmFyIHJlY2VpdmVkTWVzc2FnZXMgPSBbXTsKK3Zh
ciBleHBlY3RlZFZhbHVlcyA9IFtjcmVhdGVBcnJheUJ1ZmZlckNvbnRhaW5pbmdIZWxsb1dvcmxk
KCksIGNyZWF0ZUVtcHR5QXJyYXlCdWZmZXIoKSwgY3JlYXRlQXJyYXlCdWZmZXJDb250YWluaW5n
QWxsRGlzdGluY3RCeXRlcygpXTsKKword3Mub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCit7
CisgICAgcmVjZWl2ZWRNZXNzYWdlcy5wdXNoKGV2ZW50LmRhdGEpOworfTsKKword3Mub25jbG9z
ZSA9IGZ1bmN0aW9uKGNsb3NlRXZlbnQpCit7CisgICAgaWYgKHJlY2VpdmVkTWVzc2FnZXMubGVu
Z3RoID09PSBleHBlY3RlZFZhbHVlcy5sZW5ndGgpCisgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNT
OiByZWNlaXZlZE1lc3NhZ2VzLmxlbmd0aCBpcyAiICsgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoKTsK
KyAgICBlbHNlCisgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiByZWNlaXZlZE1lc3NhZ2VzLmxl
bmd0aCBzaG91bGQgYmUgIiArIGV4cGVjdGVkVmFsdWVzLmxlbmd0aCArICIgYnV0IHdhcyAiICsg
cmVjZWl2ZWRNZXNzYWdlcy5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0
ZWRWYWx1ZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGNoZWNrKGkpOworICAgIHBvc3RNZXNzYWdl
KCJET05FIik7Cit9OworCitmdW5jdGlvbiBjaGVjayhpbmRleCkKK3sKKyAgICBwb3N0TWVzc2Fn
ZSgiSU5GTzogQ2hlY2tpbmcgbWVzc2FnZSAjIiArIGluZGV4ICsgIi4iKTsKKyAgICB2YXIgcmVz
cG9uc2VUeXBlID0gJycgKyByZWNlaXZlZE1lc3NhZ2VzW2luZGV4XTsKKyAgICBpZiAocmVzcG9u
c2VUeXBlID09PSAiW29iamVjdCBBcnJheUJ1ZmZlcl0iKQorICAgICAgICBwb3N0TWVzc2FnZSgi
UEFTUzogcmVzcG9uc2VUeXBlIGlzIFwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIiIpOworICAgIGVs
c2UKKyAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IHJlc3BvbnNlVHlwZSBzaG91bGQgYmUgXCJb
b2JqZWN0IEFycmF5QnVmZmVyXVwiIGJ1dCB3YXMgXCIiICsgcmVzcG9uc2VUeXBlICsgIlwiIik7
CisgICAgY2hlY2tBcnJheUJ1ZmZlcihpbmRleCwgcmVjZWl2ZWRNZXNzYWdlc1tpbmRleF0sIGV4
cGVjdGVkVmFsdWVzW2luZGV4XSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQXJyYXlCdWZmZXIodGVz
dEluZGV4LCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBhY3R1YWxBcnJheSA9IG5ldyBV
aW50OEFycmF5KGFjdHVhbCk7CisgICAgdmFyIGV4cGVjdGVkQXJyYXkgPSBuZXcgVWludDhBcnJh
eShleHBlY3RlZCk7CisgICAgaWYgKGFjdHVhbEFycmF5Lmxlbmd0aCA9PT0gZXhwZWN0ZWRBcnJh
eS5sZW5ndGgpCisgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBhY3R1YWxBcnJheS5sZW5ndGgg
aXMgIiArIGV4cGVjdGVkQXJyYXkubGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIHBvc3RNZXNz
YWdlKCJGQUlMOiBhY3R1YWxBcnJheS5sZW5ndGggc2hvdWxkIGJlICIgKyBleHBlY3RlZEFycmF5
Lmxlbmd0aCArICIgYnV0IHdhcyAiICsgYWN0dWFsQXJyYXkubGVuZ3RoKTsKKyAgICAvLyBQcmlu
dCBvbmx5IHRoZSBmaXJzdCBtaXNtYXRjaGVkIGJ5dGUgaW4gb3JkZXIgbm90IHRvIGZsb29kIGNv
bnNvbGUuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEFycmF5Lmxlbmd0aDsgKytp
KSB7CisgICAgICAgIGlmIChhY3R1YWxBcnJheVtpXSAhPSBleHBlY3RlZEFycmF5W2ldKSB7Cisg
ICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogVmFsdWUgbWlzbWF0Y2g6IGFjdHVhbEFycmF5
WyIgKyBpICsgIl0gPSAiICsgYWN0dWFsQXJyYXlbaV0gKyAiLCBleHBlY3RlZEFycmF5WyIgKyBp
ICsgIl0gPSAiICsgZXhwZWN0ZWRBcnJheVtpXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFBhc3NlZDogTWVzc2FnZSAjIiAr
IHRlc3RJbmRleCArICIuIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3JlY2VpdmUtYmxvYi5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvcmVjZWl2ZS1ibG9iLmpzCmluZGV4IGZjNTgzNTM0MGQ4MjZkM2FkNzYwZjM5OWE5Y2Fm
NTBlYmFiNDQ2OTcuLjBkNThhYTlhYTM4MWY3YzhiOGM3OTVkN2JhMWU4YTYzMDgwZGY2YWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9yZXNvdXJjZXMvcmVjZWl2ZS1ibG9iLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvcmVjZWl2ZS1ibG9iLmpz
CkBAIC0xLDQgKzEsNCBAQAotZnVuY3Rpb24gY3JlYXRlSGVsbG9Xb3JsZFZhbHVlKCkKK2Z1bmN0
aW9uIGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0hlbGxvV29ybGQoKQogewogICAgIHZhciBo
ZWxsbyA9ICJIZWxsbywgd29ybGQhIjsKICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSho
ZWxsby5sZW5ndGgpOwpAQCAtNywxMyArNywxMiBAQCBmdW5jdGlvbiBjcmVhdGVIZWxsb1dvcmxk
VmFsdWUoKQogICAgIHJldHVybiBhcnJheS5idWZmZXI7CiB9CiAKLWZ1bmN0aW9uIGNyZWF0ZUVt
cHR5VmFsdWUoKQorZnVuY3Rpb24gY3JlYXRlRW1wdHlBcnJheUJ1ZmZlcigpCiB7CiAgICAgcmV0
dXJuIG5ldyBBcnJheUJ1ZmZlcigwKTsKIH0KIAotLy8gQ3JlYXRlIGFuIEFycmF5QnVmZmVyIGNv
bnRhaW5pbmcgYWxsIGRpc3RpbmN0IGJ5dGVzICgiXHgwMCIgdG8gIlx4RkYiKS4KLWZ1bmN0aW9u
IGNyZWF0ZUFsbEJ5dGVzVmFsdWUoKQorZnVuY3Rpb24gY3JlYXRlQXJyYXlCdWZmZXJDb250YWlu
aW5nQWxsRGlzdGluY3RCeXRlcygpCiB7CiAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXko
MjU2KTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKQpAQCAtMjgsNyArMjcsNyBA
QCBlbHNlCiAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IHdzLmJpbmFyeVR5cGUgc2hvdWxkIGJlIFwi
YmxvYlwiIGJ1dCB3YXMgXCIiICsgd3MuYmluYXJ5VHlwZSArICJcIiIpOwogCiB2YXIgcmVjZWl2
ZWRNZXNzYWdlcyA9IFtdOwotdmFyIGV4cGVjdGVkVmFsdWVzID0gW2NyZWF0ZUhlbGxvV29ybGRW
YWx1ZSgpLCBjcmVhdGVFbXB0eVZhbHVlKCksIGNyZWF0ZUFsbEJ5dGVzVmFsdWUoKV07Cit2YXIg
ZXhwZWN0ZWRWYWx1ZXMgPSBbY3JlYXRlQXJyYXlCdWZmZXJDb250YWluaW5nSGVsbG9Xb3JsZCgp
LCBjcmVhdGVFbXB0eUFycmF5QnVmZmVyKCksIGNyZWF0ZUFycmF5QnVmZmVyQ29udGFpbmluZ0Fs
bERpc3RpbmN0Qnl0ZXMoKV07CiAKIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDE2Zjg1ZmZjN2Q3MjQwMDgyZjNlY2M0NDUxYTVlNjM1MzQ1ZjYyMDkuLjk1
MzMyOGVlNTA4YTA5YjUyMWExYWJmNTBlY2JlNzQ0Yzc0NTdjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMS0wOC0zMCAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWJTb2NrZXQ6IFJlY2VpdmUgYmluYXJ5IG1lc3NhZ2UgYXMgQXJyYXlC
dWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
MTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6
ZGF0YSk6IENvbnZlcnQgQXJyYXlCdWZmZXIgdG8gSlNWYWx1ZS4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6IENvbnZlcnQgQXJyYXlCdWZmZXIg
dG8gdjg6OlZhbHVlLgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNz
YWdlRXZlbnQuaDoKKyAgICAgICAgQWRkZWQgRGF0YVR5cGVBcnJheUJ1ZmZlciBhbmQgQXJyYXlC
dWZmZXItcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmRhdGFBc0FycmF5QnVm
ZmVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgQ29uc3RydWN0
IGFuIEFycmF5QnVmZmVyIGZyb20gYmluYXJ5RGF0YSBhbmQgcmFpc2UgTWVzc2FnZUV2ZW50Lgor
CiAyMDExLTA4LTI5ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYlNvY2tldDogUmVjZWl2ZSBiaW5hcnkgbWVzc2FnZSBhcyBCbG9iCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
ZGE5MTE1NGJiYjljNWY0OTYyZTEzMDMyM2FhM2MwYWRmZjM2MzJmMy4uZmIwMzVjNWUyMDc2ZWI1
OTQxMWExMWE1NjQ0M2ZlZWI0Y2Y2ZjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50LmgiCiAKKyNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTY1LDYgKzY2LDEwIEBAIEpT
VmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6CiAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIGV2ZW50LT5kYXRhQXNCbG9iKCkpOwogICAgICAgICBicmVhazsK
KworICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUFycmF5QnVmZmVyOgorICAgICAgICBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBldmVudC0+ZGF0YUFzQXJyYXlCdWZm
ZXIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIC8vIFNhdmUgdGhlIHJlc3VsdCBz
byB3ZSBkb24ndCBoYXZlIHRvIGRlc2VyaWFsaXplIHRoZSB2YWx1ZSBhZ2Fpbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRD
dXN0b20uY3BwCmluZGV4IDc1YzdiNTdkMDk2NjEyNjMwODMwMGFmMWNiNzI5YzY4ODhiNzE4ZTQu
LmQ2NDA4M2MyODZmYzk2ZTdkZWM3MzRiNzg1Njg3NDhjNjVjOTk3YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1
ZGUgIlY4RE9NV2luZG93LmgiCkBAIC02Niw2ICs2NywxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbgogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6CiAgICAgICAgIHJlc3Vs
dCA9IHRvVjgoZXZlbnQtPmRhdGFBc0Jsb2IoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlQXJyYXlCdWZmZXI6CisgICAgICAgIHJlc3VsdCA9IHRv
VjgoZXZlbnQtPmRhdGFBc0FycmF5QnVmZmVyKCkpOworICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICAvLyBPdmVyd3JpdGUgdGhlIGRhdGEgYXR0cmlidXRlIHNvIGl0IHJldHVybnMgdGhlIGNh
Y2hlZCByZXN1bHQgaW4gZnV0dXJlIGludm9jYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAppbmRleCAzNDMyZDZmMzQ1NTFmMjRkMDZhMjg5Y2UxYzI2NTQ0M2VmNGEwOGQ4Li4y
NzMxZmEzNWNmNzU5YzY0MTE5N2UxMWY4NmQ5YTJlM2EyYTA4MjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtNjgsNiArNjgsMTUgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhKQogewogfQogCitNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKQorICAgIDogRXZlbnQoZXZlbnRO
YW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQorICAgICwgbV9kYXRhVHlwZShEYXRh
VHlwZUFycmF5QnVmZmVyKQorICAgICwgbV9kYXRhQXNBcnJheUJ1ZmZlcihkYXRhKQorICAgICwg
bV9vcmlnaW4oIiIpCisgICAgLCBtX2xhc3RFdmVudElkKCIiKQoreworfQorCiBNZXNzYWdlRXZl
bnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4
IDNlYjJjNGYxMWVlMTU0NDM0ODA1M2U3NjYzYzVmYjM2NzM1ZDIyZmIuLmRlZDgwNzRiMGVkZDYz
ZDAxZGJlZTA2ZWNlMTc2OTg4MDNkMTNkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgTWVzc2FnZUV2ZW50X2gKICNkZWZpbmUgTWVzc2Fn
ZUV2ZW50X2gKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC01Niw2ICs1Nywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEpKTsKICAgICAgICAgfQorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBkYXRhKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3Nh
Z2VFdmVudChkYXRhKSk7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50
KCk7CiAKICAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5Pik7CkBAIC03OCwyMyArODMsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBl
bnVtIERhdGFUeXBlIHsKICAgICAgICAgICAgIERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVl
LAogICAgICAgICAgICAgRGF0YVR5cGVTdHJpbmcsCi0gICAgICAgICAgICBEYXRhVHlwZUJsb2IK
KyAgICAgICAgICAgIERhdGFUeXBlQmxvYiwKKyAgICAgICAgICAgIERhdGFUeXBlQXJyYXlCdWZm
ZXIKICAgICAgICAgfTsKICAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFUeXBlOyB9CiAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YUFzU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQXNTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuZ2V0KCk7IH0KICAgICAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YUFzU3RyaW5nOyB9CiAgICAgICAgIEJsb2IqIGRhdGFBc0Jsb2IoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFBc0Jsb2IuZ2V0KCk7IH0KKyAgICAgICAgQXJyYXlCdWZmZXIqIGRh
dGFBc0FycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQXNBcnJheUJ1ZmZlci5nZXQo
KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgICAgIE1l
c3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RE9N
V2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgICAgICBl
eHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAgICAgZXhwbGlj
aXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSk7CisgICAgICAgIGV4cGxpY2l0
IE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKTsKIAogICAgICAgICBE
YXRhVHlwZSBtX2RhdGFUeXBlOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICAgICAgU3RyaW5nIG1fZGF0YUFz
U3RyaW5nOwogICAgICAgICBSZWZQdHI8QmxvYj4gbV9kYXRhQXNCbG9iOworICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG1fZGF0YUFzQXJyYXlCdWZmZXI7CiAgICAgICAgIFN0cmluZyBtX29y
aWdpbjsKICAgICAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7CiAgICAgICAgIFJlZlB0cjxET01X
aW5kb3c+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmlu
ZGV4IDRmYTg3MTlmNzNkMDFiNWYwNzljODEzMGViYjQ5ODBiM2YyN2M3NWIuLmRjOWFiYmFmNGM0
NmFlZDY5ODJhNjc2ZDM5NWQ4MzY4ODVmMzFiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQogICAg
IH0KIAogICAgIGNhc2UgQmluYXJ5VHlwZUFycmF5QnVmZmVyOgotICAgICAgICBtX2NoYW5uZWwt
PmZhaWwoIkNhbm5vdCByZWNlaXZlIFdlYlNvY2tldCBiaW5hcnkgZGF0YSBhcyBBcnJheUJ1ZmZl
ciB5ZXQuIik7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLT5kYXRhKCksIGJpbmFyeURhdGEtPnNpemUoKSkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>