<?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>73778</bug_id>
          
          <creation_ts>2011-12-04 13:11:51 -0800</creation_ts>
          <short_desc>Change YARR code to use Vector&lt;OwnPtr&gt;</short_desc>
          <delta_ts>2013-05-26 18:13: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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>109218</dup_id>
          
          <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>73757</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514747</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-04 13:11:51 -0800</bug_when>
    <thetext>Change YARR code to use HashMap&lt;OwnPtr&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514752</commentid>
    <comment_count>1</comment_count>
      <attachid>117805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-04 13:26:57 -0800</bug_when>
    <thetext>Created attachment 117805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514753</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-04 13:27:19 -0800</bug_when>
    <thetext>The attached patch must be almost right, but not quite, because with the patch applied there are test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514754</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-04 13:28:23 -0800</bug_when>
    <thetext>Maybe Vector&lt;OwnPtr&gt; doesn’t work right yet when resizing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527211</commentid>
    <comment_count>4</comment_count>
      <attachid>117805</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-26 07:10:54 -0800</bug_when>
    <thetext>Comment on attachment 117805
Patch

Attachment 117805 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11038100

New failing tests:
http/tests/inspector-enabled/dedicated-workers-list.html
fast/files/read-file-async.html
http/tests/inspector/resource-tree/resource-tree-document-url.html
fast/files/file-reader-fffd.html
http/tests/inspector/search/search-in-script.html
fast/files/workers/worker-read-file-async.html
fast/encoding/preload-encoding.html
fast/encoding/char-decoding.html
http/tests/workers/text-encoding.html
http/tests/xmlhttprequest/binary-x-user-defined.html
fast/forms/ValidityState-typeMismatch-email.html
fast/forms/ValidityState-patternMismatch-unsupported.html
fast/forms/validationMessage.html
fast/forms/ValidityState-patternMismatch.html
fast/files/workers/worker-read-file-sync.html
fast/dom/HTMLScriptElement/script-decoding-error-after-setting-src.html
fast/encoding/external-script-charset.xhtml
http/tests/inspector/search/search-in-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643697</commentid>
    <comment_count>5</comment_count>
      <attachid>146327</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-07 10:59:00 -0700</bug_when>
    <thetext>Created attachment 146327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643721</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-07 11:21:23 -0700</bug_when>
    <thetext>Patch is not good. Causes failures and crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893860</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-26 18:13:50 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 109218 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117805</attachid>
            <date>2011-12-04 13:26:57 -0800</date>
            <delta_ts>2012-06-07 10:58:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73778-20111204132655.patch</filename>
            <type>text/plain</type>
            <size>27477</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxOTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDExLTEyLTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgWUFSUiBjb2RlIHRvIHVzZSBWZWN0b3I8T3duUHRyPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSGFzaE1hcDxPd25QdHI+IGFuZCBWZWN0
b3I8T3duUHRyPiBpbnN0ZWFkIG9mIG1hcHMgYW5kIHZlY3RvcnMgb2YKKyAgICAgICAgcmF3IHBv
aW50ZXJzLgorCisgICAgICAgICogY3JlYXRlX3JlZ2V4X3RhYmxlczogTWFrZSB0aGUgY2hhcmFj
dGVyIGNsYXNzIGNyZWF0ZSBmdW5jdGlvbnMgcmV0dXJuCisgICAgICAgIE93blB0ciBpbnN0ZWFk
IG9mIHJhdyBwb2ludGVycy4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuRW5kKTogVXNlIE93blB0ciBmb3IKKyAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi4K
KyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjplbWl0RGlzanVuY3Rpb24pOiBVc2Ug
Z2V0IHdoZW4gYWNjZXNzaW5nCisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLgorCisgICAgICAgICog
eWFyci9ZYXJySW50ZXJwcmV0ZXIuaDogTWFkZSBtX2FsbFBhcmVudGhlc2VzSW5mbyBhbmQKKyAg
ICAgICAgbV91c2VDaGFyYWN0ZXJDbGFzc2VzIGJlIFZlY3RvcjxPd25QdHI+CisgICAgICAgIChK
U0M6OllhcnI6OmFwcGVuZFJlbGVhc2VkRWxlbWVudHMpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9u
IHRvIG1vdmUKKyAgICAgICAgT3duUHRyIGl0ZW1zIGZyb20gb25lIFZlY3RvciB0byBhbm90aGVy
LiBMYXRlciB3ZSBtaWdodCBmaW5kIHNvbWUKKyAgICAgICAgY2xlYXIgd2F5IHRvIGRvIHRoaXMg
aW4gVmVjdG9yLmguCisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6Qnl0ZWNv
ZGVQYXR0ZXJuKTogVXBkYXRlIHRvIHVzZSBPd25QdHIKKyAgICAgICAgZm9yIHRoZSBjaGFyYWN0
ZXIgcGFyZW50aGVzZXMgaW5mb3JtYXRpb24gYW5kIGNoYXJhY3RlciBjbGFzc2VzLgorCisgICAg
ICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6b3BDb21waWxlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKTogVXBkYXRlZAorICAgICAgICBzaW5j
ZSBtX2FsdGVybmF0aXZlcyBpcyBWZWN0b3I8T3duUHRyPi4KKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6b3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbik6IERpdHRvLgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVCb2R5KTogRGl0dG8u
CisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
Q2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvcjo6Y2hhckNsYXNzKTogUmV0dXJuIFBhc3NPd25QdHIu
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0ZXJu
Q29uc3RydWN0b3IpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSBPd25QdHIuCisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21DaGFyYWN0ZXJDbGFzc0Vu
ZCk6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjph
dG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFy
cjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdp
bik6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpj
b3B5RGlzanVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5D
b25zdHJ1Y3Rvcjo6c2V0dXBEaXNqdW5jdGlvbk9mZnNldHMpOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y2hlY2tGb3JUZXJtaW5hbFBhcmVudGhl
c2VzKTogRGl0dG8uCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
Om9wdGltaXplQk9MKTogRGl0dG8uCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29u
c3RydWN0b3I6OmNvbnRhaW5zQ2FwdHVyaW5nVGVybXMpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJl
c3Npb25zKTogRGl0dG8uCisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAg
IChKU0M6OllhcnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6YWRkTmV3QWx0ZXJuYXRpdmUpOiBVc2Ug
T3duUHRyLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6cmVzZXQpOiBSZW1vdmVk
IG5vdy11bm5lZWRlZCBjYWxscyB0byBkZWxldGVBbGxWYWx1ZXMuCisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuOjpjYWNoZUNoYXJhY3RlckNsYXNzKTogQWRkZWQuIEhlbHBlciBmdW5j
dGlvbiBmb3IgYWxsCisgICAgICAgIHRoZSBnZXR0ZXJzIGJlbG93LgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybjo6bmV3bGluZUNoYXJhY3RlckNsYXNzKTogVXNlIGNhY2hlQ2hhcmFj
dGVyQ2xhc3MuCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpkaWdpdHNDaGFyYWN0
ZXJDbGFzcyk6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6c3BhY2Vz
Q2hhcmFjdGVyQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46
OndvcmRjaGFyQ2hhcmFjdGVyQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm46Om5vbmRpZ2l0c0NoYXJhY3RlckNsYXNzKTogRGl0dG8uCisgICAgICAgIChKU0M6
OllhcnI6OllhcnJQYXR0ZXJuOjpub25zcGFjZXNDaGFyYWN0ZXJDbGFzcyk6IERpdHRvLgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6bm9ud29yZGNoYXJDaGFyYWN0ZXJDbGFzcyk6
IERpdHRvLgorCiAyMDExLTEyLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVc2UgSGFzaE1hcDxPd25QdHI+IGZvciBTY3JpcHRTYW1wbGVSZWNvcmRNYXAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfcmVnZXhfdGFibGVzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfcmVnZXhfdGFibGVzCShyZXZpc2lvbiAx
MDE5NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX3JlZ2V4X3RhYmxlcwkod29y
a2luZyBjb3B5KQpAQCAtODYsMTUgKzg2LDE1IEBAIGZvciBuYW1lLCBjbGFzc2VzIGluIHR5cGVz
Lml0ZW1zKCk6CiAgICAgCiAgICAgIyBHZW5lcmF0ZSBjcmVhdGVGdW5jdGlvbjoKICAgICBmdW5j
dGlvbiA9ICIiOwotICAgIGZ1bmN0aW9uICs9ICgiQ2hhcmFjdGVyQ2xhc3MqICVzQ3JlYXRlKClc
biIgJSBuYW1lKQorICAgIGZ1bmN0aW9uICs9ICgiUGFzc093blB0cjxDaGFyYWN0ZXJDbGFzcz4g
JXNDcmVhdGUoKVxuIiAlIG5hbWUpCiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQogICAgIGlmIGVt
aXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJbnZlcnNlIiBp
biBjbGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgQ2hhcmFjdGVyQ2xhc3Mq
IGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKENoYXJhY3RlckNsYXNzVGFibGU6
OmNyZWF0ZShfJXNEYXRhLCB0cnVlKSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCisgICAg
ICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+IGNoYXJhY3Rl
ckNsYXNzID0gYWRvcHRQdHIobmV3IENoYXJhY3RlckNsYXNzKENoYXJhY3RlckNsYXNzVGFibGU6
OmNyZWF0ZShfJXNEYXRhLCB0cnVlKSkpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgQ2hhcmFjdGVyQ2xhc3Mq
IGNoYXJhY3RlckNsYXNzID0gbmV3IENoYXJhY3RlckNsYXNzKENoYXJhY3RlckNsYXNzVGFibGU6
OmNyZWF0ZShfJXNEYXRhLCBmYWxzZSkpO1xuIiAlIChuYW1lKSkKKyAgICAgICAgICAgIGZ1bmN0
aW9uICs9ICgiICAgIE93blB0cjxDaGFyYWN0ZXJDbGFzcz4gY2hhcmFjdGVyQ2xhc3MgPSBhZG9w
dFB0cihuZXcgQ2hhcmFjdGVyQ2xhc3MoQ2hhcmFjdGVyQ2xhc3NUYWJsZTo6Y3JlYXRlKF8lc0Rh
dGEsIGZhbHNlKSkpO1xuIiAlIChuYW1lKSkKICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiAr
PSAoIiAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xh
c3MoMCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBPd25QdHI8Q2hhcmFjdGVyQ2xh
c3M+IGNoYXJhY3RlckNsYXNzID0gYWRvcHRQdHIobmV3IENoYXJhY3RlckNsYXNzKDApKTtcbiIp
CiAgICAgZm9yIChtaW4sIG1heCkgaW4gcmFuZ2VzOgogICAgICAgICBpZiAobWluID09IG1heCk6
CiAgICAgICAgICAgICBpZiAobWluID4gMTI3KToKQEAgLTEwNiw3ICsxMDYsNyBAQCBmb3IgbmFt
ZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVtcygpOgogICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIg
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2Uo
MHglMDR4LCAweCUwNHgpKTtcbiIgJSAobWluLCBtYXgpKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgZnVuY3Rpb24gKz0gKCIgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChD
aGFyYWN0ZXJSYW5nZSgweCUwMngsIDB4JTAyeCkpO1xuIiAlIChtaW4sIG1heCkpCi0gICAgZnVu
Y3Rpb24gKz0gKCIgICAgcmV0dXJuIGNoYXJhY3RlckNsYXNzO1xuIikKKyAgICBmdW5jdGlvbiAr
PSAoIiAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3MucmVsZWFzZSgpO1xuIikKICAgICBmdW5jdGlv
biArPSAoIn1cblxuIikKICAgICBmdW5jdGlvbnMgKz0gZnVuY3Rpb24KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
MDE5NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVu
c2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0ZXJuSWQ7
CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBsYXN0U3VicGF0dGVybklkIC0g
c3VicGF0dGVybklkICsgMTsKLSAgICAgICAgQnl0ZURpc2p1bmN0aW9uKiBwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uID0gbmV3IEJ5dGVEaXNqdW5jdGlvbihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1l
U2l6ZSk7CisgICAgICAgIE93blB0cjxCeXRlRGlzanVuY3Rpb24+IHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBhZG9wdFB0cihuZXcgQnl0ZURpc2p1bmN0aW9uKG51bVN1YnBhdHRlcm5zLCBjYWxs
RnJhbWVTaXplKSk7CiAKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMuYXBw
ZW5kKEJ5dGVUZXJtOjpTdWJwYXR0ZXJuQmVnaW4oKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
dGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0gKyAxOyB0ZXJtSW5QYXJlbnRoZXNlcyA8IGVu
ZFRlcm07ICsrdGVybUluUGFyZW50aGVzZXMpCkBAIC0xNzUwLDggKzE3NTAsOCBAQCBwdWJsaWM6
CiAKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLnNocmluayhiZWdpblRlcm0pOwog
Ci0gICAgICAgIG1fYWxsUGFyZW50aGVzZXNJbmZvLmFwcGVuZChwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uKTsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShC
eXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uLCBjYXB0dXJlLCBpbnB1dFBvc2l0aW9uKSk7CisgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQo
KSwgY2FwdHVyZSwgaW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2FsbFBhcmVudGhlc2VzSW5m
by5hcHBlbmQocGFyZW50aGVzZXNEaXNqdW5jdGlvbi5yZWxlYXNlKCkpOwogCiAgICAgICAgIG1f
Ym9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlDb3VudCA9IHF1
YW50aXR5Q291bnQudW5zYWZlR2V0KCk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLmF0b20ucXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwpAQCAtMTgzOCw3
ICsxODM4LDcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGFsdCA9IDA7IGFsdCA8
IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCA9IGlucHV0Q291bnRBbHJlYWR5
Q2hlY2tlZDsKIAotICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9
IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdOworICAgICAgICAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRd
LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoYWx0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGRp
c2p1bmN0aW9uID09IG1fcGF0dGVybi5tX2JvZHkpCkBAIC0xOTQ5LDcgKzE5NDksNyBAQCBwcml2
YXRlOgogICAgIE93blB0cjxCeXRlRGlzanVuY3Rpb24+IG1fYm9keURpc2p1bmN0aW9uOwogICAg
IHVuc2lnbmVkIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXg7CiAgICAgVmVjdG9yPFBhcmVudGhl
c2VzU3RhY2tFbnRyeT4gbV9wYXJlbnRoZXNlc1N0YWNrOwotICAgIFZlY3RvcjxCeXRlRGlzanVu
Y3Rpb24qPiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKKyAgICBWZWN0b3I8T3duUHRyPEJ5dGVEaXNq
dW5jdGlvbj4gPiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKIH07CiAKIFBhc3NPd25QdHI8Qnl0ZWNv
ZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJB
bGxvY2F0b3IqIGFsbG9jYXRvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDE5NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDEwICsz
MzQsMTggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1fZnJhbWVTaXplOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lkIGFwcGVuZFJlbGVhc2VkRWxl
bWVudHMoVmVjdG9yPFQ+JiBkZXN0aW5hdGlvbiwgVmVjdG9yPFU+JiBzb3VyY2UpCit7CisgICAg
c2l6ZV90IHNpemUgPSBzb3VyY2Uuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc291cmNlW2ldLnJlbGVhc2Uo
KSk7Cit9CisKIHN0cnVjdCBCeXRlY29kZVBhdHRlcm4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEJ5dGVjb2RlUGF0dGVybihQYXNzT3duUHRyPEJ5dGVEaXNq
dW5jdGlvbj4gYm9keSwgVmVjdG9yPEJ5dGVEaXNqdW5jdGlvbio+IGFsbFBhcmVudGhlc2VzSW5m
bywgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
CisgICAgQnl0ZWNvZGVQYXR0ZXJuKFBhc3NPd25QdHI8Qnl0ZURpc2p1bmN0aW9uPiBib2R5LCBW
ZWN0b3I8T3duUHRyPEJ5dGVEaXNqdW5jdGlvbj4gPiYgYWxsUGFyZW50aGVzZXNJbmZvLCBZYXJy
UGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAg
ICAgOiBtX2JvZHkoYm9keSkKICAgICAgICAgLCBtX2lnbm9yZUNhc2UocGF0dGVybi5tX2lnbm9y
ZUNhc2UpCiAgICAgICAgICwgbV9tdWx0aWxpbmUocGF0dGVybi5tX211bHRpbGluZSkKQEAgLTM0
NiwyMCArMzU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbmV3bGluZUNoYXJhY3RlckNsYXNzID0g
cGF0dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKTsKICAgICAgICAgd29yZGNoYXJDaGFyYWN0
ZXJDbGFzcyA9IHBhdHRlcm4ud29yZGNoYXJDaGFyYWN0ZXJDbGFzcygpOwogCi0gICAgICAgIG1f
YWxsUGFyZW50aGVzZXNJbmZvLmFwcGVuZChhbGxQYXJlbnRoZXNlc0luZm8pOwotICAgICAgICBt
X3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChwYXR0ZXJuLm1fdXNlckNoYXJhY3RlckNsYXNz
ZXMpOwotICAgICAgICAvLyAnU3RlYWwnIHRoZSBZYXJyUGF0dGVybidzIENoYXJhY3RlckNsYXNz
ZXMhICBXZSBjbGVhciBpdHMKLSAgICAgICAgLy8gYXJyYXksIHNvIHRoYXQgaXQgd29uJ3QgZGVs
ZXRlIHRoZW0gb24gZGVzdHJ1Y3Rpb24uICBXZSdsbAotICAgICAgICAvLyB0YWtlIHJlc3BvbnNp
YmlsaXR5IGZvciB0aGF0LgorICAgICAgICBhcHBlbmRSZWxlYXNlZEVsZW1lbnRzKG1fYWxsUGFy
ZW50aGVzZXNJbmZvLCBhbGxQYXJlbnRoZXNlc0luZm8pOworICAgICAgICBhcHBlbmRSZWxlYXNl
ZEVsZW1lbnRzKG1fdXNlckNoYXJhY3RlckNsYXNzZXMsIHBhdHRlcm4ubV91c2VyQ2hhcmFjdGVy
Q2xhc3Nlcyk7CiAgICAgICAgIHBhdHRlcm4ubV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5jbGVhcigp
OwogICAgIH0KIAotICAgIH5CeXRlY29kZVBhdHRlcm4oKQotICAgIHsKLSAgICAgICAgZGVsZXRl
QWxsVmFsdWVzKG1fYWxsUGFyZW50aGVzZXNJbmZvKTsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVz
KG1fdXNlckNoYXJhY3RlckNsYXNzZXMpOwotICAgIH0KLQogICAgIE93blB0cjxCeXRlRGlzanVu
Y3Rpb24+IG1fYm9keTsKICAgICBib29sIG1faWdub3JlQ2FzZTsKICAgICBib29sIG1fbXVsdGls
aW5lOwpAQCAtMzcxLDggKzM3MCw4IEBAIHB1YmxpYzoKICAgICBDaGFyYWN0ZXJDbGFzcyogd29y
ZGNoYXJDaGFyYWN0ZXJDbGFzczsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8Qnl0ZURpc2p1bmN0
aW9uKj4gbV9hbGxQYXJlbnRoZXNlc0luZm87Ci0gICAgVmVjdG9yPENoYXJhY3RlckNsYXNzKj4g
bV91c2VyQ2hhcmFjdGVyQ2xhc3NlczsKKyAgICBWZWN0b3I8T3duUHRyPEJ5dGVEaXNqdW5jdGlv
bj4gPiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKKyAgICBWZWN0b3I8T3duUHRyPENoYXJhY3RlckNs
YXNzPiA+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6WWFycgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHJldmlz
aW9uIDEwMTk0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTY1LDExICsyMTY1LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
OiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgbV9vcHMuYXBwZW5kKGFsdGVybmF0aXZlQmVn
aW5PcENvZGUpOwogICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7
CiAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3Rlcm0gPSB0ZXJtOwotICAgICAgICBWZWN0b3I8UGF0
dGVybkFsdGVybmF0aXZlKj4mIGFsdGVybmF0aXZlcyA9ICB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxPd25QdHI8UGF0dGVybkFs
dGVybmF0aXZlPiA+JiBhbHRlcm5hdGl2ZXMgPSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlv
bi0+bV9hbHRlcm5hdGl2ZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhbHRl
cm5hdGl2ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9
IG1fb3BzLnNpemUoKSAtIDE7CiAKLSAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmVz
dGVkQWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbaV07CisgICAgICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIG5lc3RlZEFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2ldLmdldCgpOwogICAg
ICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRpdmUpOwogCiAgICAg
ICAgICAgICBzaXplX3QgdGhpc09wSW5kZXggPSBtX29wcy5zaXplKCk7CkBAIC0yMjE2LDExICsy
MjE2LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAg
ICAgbV9vcHMuYXBwZW5kKE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbik7CiAgICAgICAg
IG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKICAgICAgICAgbV9vcHMubGFz
dCgpLm1fdGVybSA9IHRlcm07Ci0gICAgICAgIFZlY3RvcjxQYXR0ZXJuQWx0ZXJuYXRpdmUqPiYg
YWx0ZXJuYXRpdmVzID0gIHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0
aXZlczsKKyAgICAgICAgVmVjdG9yPE93blB0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+ID4mIGFsdGVy
bmF0aXZlcyA9ICB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7
CiAKLSAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmVzdGVkQWx0ZXJuYXRpdmUgPSBh
bHRlcm5hdGl2ZXNbaV07CisgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIG5lc3RlZEFs
dGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2ldLmdldCgpOwogICAgICAgICAgICAgb3BDb21waWxl
QWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRpdmUpOwogCiAgICAgICAgICAgICBzaXplX3QgdGhp
c09wSW5kZXggPSBtX29wcy5zaXplKCk7CkBAIC0yMjkwLDcgKzIyOTAsNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgLy8gdG8gcmV0dXJuIHRoZSBmYWls
aW5nIHJlc3VsdC4KICAgICB2b2lkIG9wQ29tcGlsZUJvZHkoUGF0dGVybkRpc2p1bmN0aW9uKiBk
aXNqdW5jdGlvbikKICAgICB7Ci0gICAgICAgIFZlY3RvcjxQYXR0ZXJuQWx0ZXJuYXRpdmUqPiYg
YWx0ZXJuYXRpdmVzID0gIGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgVmVj
dG9yPE93blB0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+ID4mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0
aW9uLT5tX2FsdGVybmF0aXZlczsKICAgICAgICAgc2l6ZV90IGN1cnJlbnRBbHRlcm5hdGl2ZUlu
ZGV4ID0gMDsKIAogICAgICAgICAvLyBFbWl0IHRoZSAnb25jZSB0aHJvdWdoJyBhbHRlcm5hdGl2
ZXMuCkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtCiAKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFz
dE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwotICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRl
cm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5k
ZXhdOworICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBh
bHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwogICAgICAgICAgICAg
ICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKGFsdGVybmF0aXZlKTsKIAogICAgICAgICAgICAgICAg
IHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKQEAgLTIzMzUsNyArMjMzNSw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgbV9vcHMu
bGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBkbyB7CiAgICAgICAgICAg
ICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwotICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleF07CisgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZl
ID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKICAgICAgICAg
ICAgIEFTU0VSVCghYWx0ZXJuYXRpdmUtPm9uY2VUaHJvdWdoKCkpOwogICAgICAgICAgICAgb3BD
b21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiAxMDE5NDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MCw5ICsxNDAsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDaGFyYWN0ZXJD
bGFzcyogY2hhckNsYXNzKCkKKyAgICBQYXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiBjaGFyQ2xh
c3MoKQogICAgIHsKLSAgICAgICAgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzID0gbmV3
IENoYXJhY3RlckNsYXNzKDApOworICAgICAgICBPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+IGNoYXJh
Y3RlckNsYXNzID0gYWRvcHRQdHIobmV3IENoYXJhY3RlckNsYXNzKDApKTsKIAogICAgICAgICBj
aGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLmFwcGVuZChtX21hdGNoZXMpOwogICAgICAgICBjaGFy
YWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKG1fcmFuZ2VzKTsKQEAgLTE1MSw3ICsxNTEsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgcmVzZXQoKTsKIAotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
Q2xhc3M7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJDbGFzcy5yZWxlYXNlKCk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMjQxLDEzICsyNDEsMTAgQEAgcHVibGljOgogICAgICAgICAsIG1fY2hh
cmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLm1faWdub3JlQ2FzZSkKICAgICAgICAgLCBt
X2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24oZmFsc2UpCiAgICAgewotICAgICAgICBtX3Bh
dHRlcm4ubV9ib2R5ID0gbmV3IFBhdHRlcm5EaXNqdW5jdGlvbigpOwotICAgICAgICBtX2FsdGVy
bmF0aXZlID0gbV9wYXR0ZXJuLm1fYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKLSAgICAgICAg
bV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChtX3BhdHRlcm4ubV9ib2R5KTsKLSAgICB9
Ci0KLSAgICB+WWFyclBhdHRlcm5Db25zdHJ1Y3RvcigpCi0gICAgeworICAgICAgICBPd25QdHI8
UGF0dGVybkRpc2p1bmN0aW9uPiBib2R5ID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EaXNqdW5jdGlv
bik7CisgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgpOworICAgICAgICBtX2Fs
dGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKKyAgICAgICAgbV9wYXR0ZXJu
Lm1fZGlzanVuY3Rpb25zLmFwcGVuZChib2R5LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCByZXNldCgpCkBAIC0yNTUsOSArMjUyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9wYXR0ZXJu
LnJlc2V0KCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5yZXNldCgpOwog
Ci0gICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBuZXcgUGF0dGVybkRpc2p1bmN0aW9uKCk7Ci0g
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBtX3BhdHRlcm4ubV9ib2R5LT5hZGROZXdBbHRlcm5hdGl2
ZSgpOwotICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKG1fcGF0dGVybi5t
X2JvZHkpOworICAgICAgICBPd25QdHI8UGF0dGVybkRpc2p1bmN0aW9uPiBib2R5ID0gYWRvcHRQ
dHIobmV3IFBhdHRlcm5EaXNqdW5jdGlvbik7CisgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBi
b2R5LmdldCgpOworICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRp
dmUoKTsKKyAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChib2R5LnJlbGVh
c2UoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkKQEAgLTM0Nyw5ICsz
NDUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0VuZCgpCiAgICAg
ewotICAgICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3Q2hhcmFjdGVyQ2xhc3MgPSBtX2NoYXJhY3Rl
ckNsYXNzQ29uc3RydWN0b3IuY2hhckNsYXNzKCk7Ci0gICAgICAgIG1fcGF0dGVybi5tX3VzZXJD
aGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChuZXdDaGFyYWN0ZXJDbGFzcyk7CisgICAgICAgIE93blB0
cjxDaGFyYWN0ZXJDbGFzcz4gbmV3Q2hhcmFjdGVyQ2xhc3MgPSBtX2NoYXJhY3RlckNsYXNzQ29u
c3RydWN0b3IuY2hhckNsYXNzKCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBw
ZW5kKFBhdHRlcm5UZXJtKG5ld0NoYXJhY3RlckNsYXNzLCBtX2ludmVydENoYXJhY3RlckNsYXNz
KSk7CisgICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChuZXdD
aGFyYWN0ZXJDbGFzcy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHZvaWQgYXRvbVBhcmVudGhl
c2VzU3VicGF0dGVybkJlZ2luKGJvb2wgY2FwdHVyZSA9IHRydWUpCkBAIC0zNTgsMTggKzM1Niwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYXB0dXJlKQogICAgICAgICAgICAgbV9wYXR0ZXJu
Lm1fbnVtU3VicGF0dGVybnMrKzsKIAotICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBuZXcgUGF0dGVybkRpc2p1bmN0aW9uKG1fYWx0ZXJuYXRpdmUp
OwotICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKHBhcmVudGhlc2VzRGlz
anVuY3Rpb24pOwotICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJu
VGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVybklk
LCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLCBjYXB0dXJlLCBmYWxzZSkpOworICAgICAgICBPd25Q
dHI8UGF0dGVybkRpc2p1bmN0aW9uPiBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gYWRvcHRQdHIo
bmV3IFBhdHRlcm5EaXNqdW5jdGlvbihtX2FsdGVybmF0aXZlKSk7CisgICAgICAgIG1fYWx0ZXJu
YXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50
aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0
KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOworICAgICAgICBtX3BhdHRlcm4ubV9k
aXNqdW5jdGlvbnMuYXBwZW5kKHBhcmVudGhlc2VzRGlzanVuY3Rpb24ucmVsZWFzZSgpKTsKICAg
ICB9CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZl
cnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbiA9IG5ldyBQYXR0ZXJuRGlzanVuY3Rpb24obV9hbHRlcm5hdGl2ZSk7Ci0g
ICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQocGFyZW50aGVzZXNEaXNqdW5j
dGlvbik7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJt
KFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVt
U3VicGF0dGVybnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLCBmYWxzZSwgaW52ZXJ0KSk7
CisgICAgICAgIE93blB0cjxQYXR0ZXJuRGlzanVuY3Rpb24+IHBhcmVudGhlc2VzRGlzanVuY3Rp
b24gPSBhZG9wdFB0cihuZXcgUGF0dGVybkRpc2p1bmN0aW9uKG1fYWx0ZXJuYXRpdmUpKTsKKyAg
ICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRl
cm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJu
cyArIDEsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAg
ICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVy
bmF0aXZlKCk7CisgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQocGFyZW50
aGVzZXNEaXNqdW5jdGlvbi5yZWxlYXNlKCkpOwogICAgICAgICBtX2ludmVydFBhcmVudGhldGlj
YWxBc3NlcnRpb24gPSBpbnZlcnQ7CiAgICAgfQogCkBAIC00MzUsMTIgKzQzMywxMiBAQCBwdWJs
aWM6CiAgICAgLy8gc2tpcCBhbHRlcm5hdGl2ZXMgd2l0aCBtX3N0YXJ0c1dpdGhCT0wgc2V0IHRy
dWUuCiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBjb3B5RGlzanVuY3Rpb24oUGF0dGVybkRpc2p1
bmN0aW9uKiBkaXNqdW5jdGlvbiwgYm9vbCBmaWx0ZXJTdGFydHNXaXRoQk9MID0gZmFsc2UpCiAg
ICAgewotICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG5ld0Rpc2p1bmN0aW9uID0gMDsKKyAg
ICAgICAgT3duUHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4gbmV3RGlzanVuY3Rpb247CiAgICAgICAg
IGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVz
LnNpemUoKTsgKythbHQpIHsKLSAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJu
YXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XTsKKyAgICAgICAgICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2
ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8fCAh
YWx0ZXJuYXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICghbmV3
RGlzanVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBuZXcg
UGF0dGVybkRpc2p1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9u
ID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EaXNqdW5jdGlvbigpKTsKICAgICAgICAgICAgICAgICAg
ICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24tPm1fcGFyZW50OwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIG5ld0Fs
dGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CkBAIC00NDgs
MTAgKzQ0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIG5ld0FsdGVybmF0aXZl
LT5tX3Rlcm1zLmFwcGVuZChjb3B5VGVybShhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpXSwgZmlsdGVy
U3RhcnRzV2l0aEJPTCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorICAg
IAorICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIHJhd05ld0Rpc2p1bmN0aW9uID0gbmV3RGlz
anVuY3Rpb24uZ2V0KCk7CiAgICAgICAgIGlmIChuZXdEaXNqdW5jdGlvbikKLSAgICAgICAgICAg
IG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQobmV3RGlzanVuY3Rpb24pOwotICAgICAg
ICByZXR1cm4gbmV3RGlzanVuY3Rpb247CisgICAgICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5j
dGlvbnMuYXBwZW5kKG5ld0Rpc2p1bmN0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBy
YXdOZXdEaXNqdW5jdGlvbjsKICAgICB9CiAgICAgCiAgICAgUGF0dGVyblRlcm0gY29weVRlcm0o
UGF0dGVyblRlcm0mIHRlcm0sIGJvb2wgZmlsdGVyU3RhcnRzV2l0aEJPTCA9IGZhbHNlKQpAQCAt
NjA0LDcgKzYwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNGaXhlZFNpemUgPSB0cnVl
OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKLSAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5h
dGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XTsKKyAg
ICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+
bV9hbHRlcm5hdGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRB
bHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUgPSBzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cyhhbHRlcm5h
dGl2ZSwgaW5pdGlhbENhbGxGcmFtZVNpemUsIGluaXRpYWxJbnB1dFBvc2l0aW9uKTsKICAgICAg
ICAgICAgIG1pbmltdW1JbnB1dFNpemUgPSBtaW4obWluaW11bUlucHV0U2l6ZSwgYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemUpOwogICAgICAgICAgICAgbWF4aW11bUNhbGxGcmFtZVNpemUgPSBt
YXgobWF4aW11bUNhbGxGcmFtZVNpemUsIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUp
OwpAQCAtNjM5LDcgKzYzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fcGF0dGVybi5tX251
bVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFZlY3RvcjxQYXR0
ZXJuQWx0ZXJuYXRpdmUqPiYgYWx0ZXJuYXRpdmVzID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRl
cm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxPd25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiA+JiBh
bHRlcm5hdGl2ZXMgPSBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0ZXJuYXRpdmVzW2ldLT5tX3Rl
cm1zOwogICAgICAgICAgICAgaWYgKHRlcm1zLnNpemUoKSkgewpAQCAtNjcyLDEwICs2NzEsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS0+
c2V0T25jZVRocm91Z2goKTsKIAogICAgICAgICBpZiAobG9vcERpc2p1bmN0aW9uKSB7Ci0gICAg
ICAgICAgICAvLyBNb3ZlIGFsdGVybmF0aXZlcyBmcm9tIGxvb3BEaXNqdW5jdGlvbiB0byBkaXNq
dW5jdGlvbgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhbHQgPSAwOyBhbHQgPCBsb29wRGlz
anVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpCi0gICAgICAgICAgICAgICAg
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLmFwcGVuZChsb29wRGlzanVuY3Rpb24tPm1fYWx0
ZXJuYXRpdmVzW2FsdF0pOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTW92ZSBh
bHRlcm5hdGl2ZXMgZnJvbSBsb29wRGlzanVuY3Rpb24gdG8gZGlzanVuY3Rpb24uCisgICAgICAg
ICAgICBhcHBlbmRSZWxlYXNlZEVsZW1lbnRzKGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcywg
bG9vcERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcyk7CiAgICAgICAgICAgICBsb29wRGlzanVu
Y3Rpb24tPm1fYWx0ZXJuYXRpdmVzLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC02OTMs
NyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJu
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybikgewogICAgICAgICAgICAgICAgIFBhdHRl
cm5EaXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24gPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1
bmN0aW9uOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgbmVz
dGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMobmVzdGVkRGlzanVuY3Rpb24t
Pm1fYWx0ZXJuYXRpdmVzW2FsdF0sIDAsIG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
c1thbHRdLT5tX3Rlcm1zLnNpemUoKSAtIDEpKQorICAgICAgICAgICAgICAgICAgICBpZiAoY29u
dGFpbnNDYXB0dXJpbmdUZXJtcyhuZXN0ZWREaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0
XS5nZXQoKSwgMCwgbmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0tPm1fdGVy
bXMuc2l6ZSgpIC0gMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC03MDksMTEgKzcwNiwxMSBAQCBwdWJs
aWM6CiAgICAgLy8gYmVnaW5uaW5nIGFuZCB0aGUgZW5kIG9mIHRoZSBtYXRjaC4KICAgICB2b2lk
IG9wdGltaXplRG90U3RhcldyYXBwZWRFeHByZXNzaW9ucygpCiAgICAgewotICAgICAgICBWZWN0
b3I8UGF0dGVybkFsdGVybmF0aXZlKj4mIGFsdGVybmF0aXZlcyA9IG1fcGF0dGVybi5tX2JvZHkt
Pm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBWZWN0b3I8T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2
ZT4gPiYgYWx0ZXJuYXRpdmVzID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7CiAg
ICAgICAgIGlmIChhbHRlcm5hdGl2ZXMuc2l6ZSgpICE9IDEpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZl
c1swXTsKKyAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0
aXZlc1swXS5nZXQoKTsKICAgICAgICAgVmVjdG9yPFBhdHRlcm5UZXJtPiYgdGVybXMgPSBhbHRl
cm5hdGl2ZS0+bV90ZXJtczsKICAgICAgICAgaWYgKHRlcm1zLnNpemUoKSA+PSAzKSB7CiAgICAg
ICAgICAgICBib29sIHN0YXJ0c1dpdGhCT0wgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gMTAxOTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9Vbmljb2RlLmg+CkBAIC0yNzUsMTkgKzI3NiwxNSBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KICAgICAKLSAgICB+UGF0dGVybkRpc2p1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGRlbGV0ZUFsbFZhbHVlcyhtX2FsdGVybmF0aXZlcyk7Ci0gICAgfQotCiAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gbmV3IFBhdHRlcm5BbHRlcm5hdGl2ZSh0aGlzKTsKLSAg
ICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKGFsdGVybmF0aXZlKTsKLSAgICAgICAgcmV0dXJu
IGFsdGVybmF0aXZlOworICAgICAgICBPd25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiBhbHRlcm5h
dGl2ZSA9IGFkb3B0UHRyKG5ldyBQYXR0ZXJuQWx0ZXJuYXRpdmUodGhpcykpOworICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIHJhd0FsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmUuZ2V0KCk7Cisg
ICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChhbHRlcm5hdGl2ZS5yZWxlYXNlKCkpOworICAg
ICAgICByZXR1cm4gcmF3QWx0ZXJuYXRpdmU7CiAgICAgfQogCi0gICAgVmVjdG9yPFBhdHRlcm5B
bHRlcm5hdGl2ZSo+IG1fYWx0ZXJuYXRpdmVzOworICAgIFZlY3RvcjxPd25QdHI8UGF0dGVybkFs
dGVybmF0aXZlPiA+IG1fYWx0ZXJuYXRpdmVzOwogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbV9w
YXJlbnQ7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2l6ZTsKICAgICB1bnNpZ25lZCBtX2NhbGxG
cmFtZVNpemU7CkBAIC0yOTgsMTMgKzI5NSwxMyBAQCBwdWJsaWM6CiAvLyAocGxlYXNlIHRvIGJl
IGNhbGxpbmcgbmV3bGluZUNoYXJhY3RlckNsYXNzKCkgZXQgYWwgb24geW91cgogLy8gZnJpZW5k
bHkgbmVpZ2hib3Job29kIFlhcnJQYXR0ZXJuIGluc3RhbmNlIHRvIGdldCBuaWNlbHkKIC8vIGNh
Y2hlZCBjb3BpZXMpLgotQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDcmVhdGUoKTsKLUNoYXJhY3Rl
ckNsYXNzKiBkaWdpdHNDcmVhdGUoKTsKLUNoYXJhY3RlckNsYXNzKiBzcGFjZXNDcmVhdGUoKTsK
LUNoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNyZWF0ZSgpOwotQ2hhcmFjdGVyQ2xhc3MqIG5vbmRp
Z2l0c0NyZWF0ZSgpOwotQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NyZWF0ZSgpOwotQ2hhcmFj
dGVyQ2xhc3MqIG5vbndvcmRjaGFyQ3JlYXRlKCk7CitQYXNzT3duUHRyPENoYXJhY3RlckNsYXNz
PiBuZXdsaW5lQ3JlYXRlKCk7CitQYXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiBkaWdpdHNDcmVh
dGUoKTsKK1Bhc3NPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+IHNwYWNlc0NyZWF0ZSgpOworUGFzc093
blB0cjxDaGFyYWN0ZXJDbGFzcz4gd29yZGNoYXJDcmVhdGUoKTsKK1Bhc3NPd25QdHI8Q2hhcmFj
dGVyQ2xhc3M+IG5vbmRpZ2l0c0NyZWF0ZSgpOworUGFzc093blB0cjxDaGFyYWN0ZXJDbGFzcz4g
bm9uc3BhY2VzQ3JlYXRlKCk7CitQYXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiBub253b3JkY2hh
ckNyZWF0ZSgpOwogCiBzdHJ1Y3QgVGVybUNoYWluIHsKICAgICBUZXJtQ2hhaW4oUGF0dGVyblRl
cm0gdGVybSkKQEAgLTMxOCwxMiArMzE1LDYgQEAgc3RydWN0IFRlcm1DaGFpbiB7CiBzdHJ1Y3Qg
WWFyclBhdHRlcm4gewogICAgIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJv
b2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKLSAg
ICB+WWFyclBhdHRlcm4oKQotICAgIHsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZGlzanVu
Y3Rpb25zKTsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fdXNlckNoYXJhY3RlckNsYXNzZXMp
OwotICAgIH0KLQogICAgIHZvaWQgcmVzZXQoKQogICAgIHsKICAgICAgICAgbV9udW1TdWJwYXR0
ZXJucyA9IDA7CkBAIC0zNDAsOSArMzMxLDcgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAg
ICAgbm9uc3BhY2VzQ2FjaGVkID0gMDsKICAgICAgICAgbm9ud29yZGNoYXJDYWNoZWQgPSAwOwog
Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Rpc2p1bmN0aW9ucyk7CiAgICAgICAgIG1fZGlz
anVuY3Rpb25zLmNsZWFyKCk7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3VzZXJDaGFyYWN0
ZXJDbGFzc2VzKTsKICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5jbGVhcigpOwogICAg
IH0KIApAQCAtMzUxLDQ2ICszNDAsNTAgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAgICAg
cmV0dXJuIG1fbWF4QmFja1JlZmVyZW5jZSA+IG1fbnVtU3VicGF0dGVybnM7CiAgICAgfQogCitw
cml2YXRlOgorICAgIHZvaWQgY2FjaGVDaGFyYWN0ZXJDbGFzcyhDaGFyYWN0ZXJDbGFzcyomIGNh
Y2hlLCBQYXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiBjcmVhdGlvbkZ1bmN0aW9uKCkpCisgICAg
eworICAgICAgICBpZiAoY2FjaGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE93blB0
cjxDaGFyYWN0ZXJDbGFzcz4gY2hhcmFjdGVyQ2xhc3MgPSBjcmVhdGlvbkZ1bmN0aW9uKCk7Cisg
ICAgICAgIGNhY2hlID0gY2hhcmFjdGVyQ2xhc3MuZ2V0KCk7CisgICAgICAgIG1fdXNlckNoYXJh
Y3RlckNsYXNzZXMuYXBwZW5kKGNoYXJhY3RlckNsYXNzLnJlbGVhc2UoKSk7CisgICAgfQorCitw
dWJsaWM6CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpCiAgICAg
ewotICAgICAgICBpZiAoIW5ld2xpbmVDYWNoZWQpCi0gICAgICAgICAgICBtX3VzZXJDaGFyYWN0
ZXJDbGFzc2VzLmFwcGVuZChuZXdsaW5lQ2FjaGVkID0gbmV3bGluZUNyZWF0ZSgpKTsKKyAgICAg
ICAgY2FjaGVDaGFyYWN0ZXJDbGFzcyhuZXdsaW5lQ2FjaGVkLCBuZXdsaW5lQ3JlYXRlKTsKICAg
ICAgICAgcmV0dXJuIG5ld2xpbmVDYWNoZWQ7CiAgICAgfQogICAgIENoYXJhY3RlckNsYXNzKiBk
aWdpdHNDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAgICBpZiAoIWRpZ2l0c0NhY2hlZCkK
LSAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKGRpZ2l0c0NhY2hlZCA9
IGRpZ2l0c0NyZWF0ZSgpKTsKKyAgICAgICAgY2FjaGVDaGFyYWN0ZXJDbGFzcyhkaWdpdHNDYWNo
ZWQsIGRpZ2l0c0NyZWF0ZSk7CiAgICAgICAgIHJldHVybiBkaWdpdHNDYWNoZWQ7CiAgICAgfQog
ICAgIENoYXJhY3RlckNsYXNzKiBzcGFjZXNDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAg
ICBpZiAoIXNwYWNlc0NhY2hlZCkKLSAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMu
YXBwZW5kKHNwYWNlc0NhY2hlZCA9IHNwYWNlc0NyZWF0ZSgpKTsKKyAgICAgICAgY2FjaGVDaGFy
YWN0ZXJDbGFzcyhzcGFjZXNDYWNoZWQsIHNwYWNlc0NyZWF0ZSk7CiAgICAgICAgIHJldHVybiBz
cGFjZXNDYWNoZWQ7CiAgICAgfQogICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3Rl
ckNsYXNzKCkKICAgICB7Ci0gICAgICAgIGlmICghd29yZGNoYXJDYWNoZWQpCi0gICAgICAgICAg
ICBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZCh3b3JkY2hhckNhY2hlZCA9IHdvcmRjaGFy
Q3JlYXRlKCkpOworICAgICAgICBjYWNoZUNoYXJhY3RlckNsYXNzKHdvcmRjaGFyQ2FjaGVkLCB3
b3JkY2hhckNyZWF0ZSk7CiAgICAgICAgIHJldHVybiB3b3JkY2hhckNhY2hlZDsKICAgICB9CiAg
ICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NoYXJhY3RlckNsYXNzKCkKICAgICB7Ci0gICAg
ICAgIGlmICghbm9uZGlnaXRzQ2FjaGVkKQotICAgICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xh
c3Nlcy5hcHBlbmQobm9uZGlnaXRzQ2FjaGVkID0gbm9uZGlnaXRzQ3JlYXRlKCkpOworICAgICAg
ICBjYWNoZUNoYXJhY3RlckNsYXNzKG5vbmRpZ2l0c0NhY2hlZCwgbm9uZGlnaXRzQ3JlYXRlKTsK
ICAgICAgICAgcmV0dXJuIG5vbmRpZ2l0c0NhY2hlZDsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xh
c3MqIG5vbnNwYWNlc0NoYXJhY3RlckNsYXNzKCkKICAgICB7Ci0gICAgICAgIGlmICghbm9uc3Bh
Y2VzQ2FjaGVkKQotICAgICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQobm9u
c3BhY2VzQ2FjaGVkID0gbm9uc3BhY2VzQ3JlYXRlKCkpOworICAgICAgICBjYWNoZUNoYXJhY3Rl
ckNsYXNzKG5vbnNwYWNlc0NhY2hlZCwgbm9uc3BhY2VzQ3JlYXRlKTsKICAgICAgICAgcmV0dXJu
IG5vbnNwYWNlc0NhY2hlZDsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRjaGFy
Q2hhcmFjdGVyQ2xhc3MoKQogICAgIHsKLSAgICAgICAgaWYgKCFub253b3JkY2hhckNhY2hlZCkK
LSAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKG5vbndvcmRjaGFyQ2Fj
aGVkID0gbm9ud29yZGNoYXJDcmVhdGUoKSk7CisgICAgICAgIGNhY2hlQ2hhcmFjdGVyQ2xhc3Mo
bm9ud29yZGNoYXJDYWNoZWQsIG5vbndvcmRjaGFyQ3JlYXRlKTsKICAgICAgICAgcmV0dXJuIG5v
bndvcmRjaGFyQ2FjaGVkOwogICAgIH0KIApAQCAtNDAxLDggKzM5NCw4IEBAIHN0cnVjdCBZYXJy
UGF0dGVybiB7CiAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKICAgICB1bnNpZ25lZCBt
X21heEJhY2tSZWZlcmVuY2U7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX2JvZHk7Ci0gICAg
VmVjdG9yPFBhdHRlcm5EaXNqdW5jdGlvbiosIDQ+IG1fZGlzanVuY3Rpb25zOwotICAgIFZlY3Rv
cjxDaGFyYWN0ZXJDbGFzcyo+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CisgICAgVmVjdG9yPE93
blB0cjxQYXR0ZXJuRGlzanVuY3Rpb24+LCA0PiBtX2Rpc2p1bmN0aW9uczsKKyAgICBWZWN0b3I8
T3duUHRyPENoYXJhY3RlckNsYXNzPiA+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiAKIHByaXZh
dGU6CiAgICAgY29uc3QgY2hhciogY29tcGlsZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5n
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146327</attachid>
            <date>2012-06-07 10:59:00 -0700</date>
            <delta_ts>2012-06-07 10:59:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73778-20120607105859.patch</filename>
            <type>text/plain</type>
            <size>28317</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5NzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEyLTA2LTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgWUFSUiBjb2RlIHRvIHVzZSBWZWN0b3I8T3duUHRyPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSGFzaE1hcDxPd25QdHI+IGFuZCBWZWN0
b3I8T3duUHRyPiBpbnN0ZWFkIG9mIG1hcHMgYW5kIHZlY3RvcnMgb2YKKyAgICAgICAgcmF3IHBv
aW50ZXJzLgorCisgICAgICAgICogY3JlYXRlX3JlZ2V4X3RhYmxlczogTWFrZSB0aGUgY2hhcmFj
dGVyIGNsYXNzIGNyZWF0ZSBmdW5jdGlvbnMgcmV0dXJuCisgICAgICAgIE93blB0ciBpbnN0ZWFk
IG9mIHJhdyBwb2ludGVycy4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuRW5kKTogVXNlIE93blB0ciBmb3IKKyAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi4K
KyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjplbWl0RGlzanVuY3Rpb24pOiBVc2Ug
Z2V0IHdoZW4gYWNjZXNzaW5nCisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLgorCisgICAgICAgICog
eWFyci9ZYXJySW50ZXJwcmV0ZXIuaDogTWFkZSBtX2FsbFBhcmVudGhlc2VzSW5mbyBhbmQKKyAg
ICAgICAgbV91c2VDaGFyYWN0ZXJDbGFzc2VzIGJlIFZlY3RvcjxPd25QdHI+CisgICAgICAgIChK
U0M6OllhcnI6OmFwcGVuZFJlbGVhc2VkRWxlbWVudHMpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9u
IHRvIG1vdmUKKyAgICAgICAgT3duUHRyIGl0ZW1zIGZyb20gb25lIFZlY3RvciB0byBhbm90aGVy
LiBMYXRlciB3ZSBtaWdodCBmaW5kIHNvbWUKKyAgICAgICAgY2xlYXIgd2F5IHRvIGRvIHRoaXMg
aW4gVmVjdG9yLmguCisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6Qnl0ZWNv
ZGVQYXR0ZXJuKTogVXBkYXRlIHRvIHVzZSBPd25QdHIKKyAgICAgICAgZm9yIHRoZSBjaGFyYWN0
ZXIgcGFyZW50aGVzZXMgaW5mb3JtYXRpb24gYW5kIGNoYXJhY3RlciBjbGFzc2VzLgorCisgICAg
ICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6b3BDb21waWxlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKTogVXBkYXRlZAorICAgICAgICBzaW5j
ZSBtX2FsdGVybmF0aXZlcyBpcyBWZWN0b3I8T3duUHRyPi4KKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6b3BDb21waWxlUGFyZW50aGV0aWNhbEFzc2VydGlvbik6IERpdHRvLgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVCb2R5KTogRGl0dG8u
CisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
Q2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvcjo6Y2hhckNsYXNzKTogUmV0dXJuIFBhc3NPd25QdHIu
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0ZXJu
Q29uc3RydWN0b3IpOiBVcGRhdGVkCisgICAgICAgIHRvIHVzZSBPd25QdHIuCisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21DaGFyYWN0ZXJDbGFzc0Vu
ZCk6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjph
dG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFy
cjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdp
bik6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpj
b3B5RGlzanVuY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5D
b25zdHJ1Y3Rvcjo6c2V0dXBEaXNqdW5jdGlvbk9mZnNldHMpOiBEaXR0by4KKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y2hlY2tGb3JUZXJtaW5hbFBhcmVudGhl
c2VzKTogRGl0dG8uCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6
Om9wdGltaXplQk9MKTogRGl0dG8uCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29u
c3RydWN0b3I6OmNvbnRhaW5zQ2FwdHVyaW5nVGVybXMpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJl
c3Npb25zKTogRGl0dG8uCisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAg
IChKU0M6OllhcnI6OlBhdHRlcm5EaXNqdW5jdGlvbjo6YWRkTmV3QWx0ZXJuYXRpdmUpOiBVc2Ug
T3duUHRyLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6cmVzZXQpOiBSZW1vdmVk
IG5vdy11bm5lZWRlZCBjYWxscyB0byBkZWxldGVBbGxWYWx1ZXMuCisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuOjpjYWNoZUNoYXJhY3RlckNsYXNzKTogQWRkZWQuIEhlbHBlciBmdW5j
dGlvbiBmb3IgYWxsCisgICAgICAgIHRoZSBnZXR0ZXJzIGJlbG93LgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybjo6bmV3bGluZUNoYXJhY3RlckNsYXNzKTogVXNlIGNhY2hlQ2hhcmFj
dGVyQ2xhc3MuCisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpkaWdpdHNDaGFyYWN0
ZXJDbGFzcyk6IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6c3BhY2Vz
Q2hhcmFjdGVyQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46
OndvcmRjaGFyQ2hhcmFjdGVyQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm46Om5vbmRpZ2l0c0NoYXJhY3RlckNsYXNzKTogRGl0dG8uCisgICAgICAgIChKU0M6
OllhcnI6OllhcnJQYXR0ZXJuOjpub25zcGFjZXNDaGFyYWN0ZXJDbGFzcyk6IERpdHRvLgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6bm9ud29yZGNoYXJDaGFyYWN0ZXJDbGFzcyk6
IERpdHRvLgorCiAyMDEyLTA2LTA3ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTE5NTkzLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9yZWdleF90YWJsZXMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9yZWdleF90YWJsZXMJKHJldmlzaW9uIDExOTcyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfcmVnZXhfdGFibGVzCSh3b3JraW5nIGNvcHkp
CkBAIC04NiwxNSArODYsMTUgQEAgZm9yIG5hbWUsIGNsYXNzZXMgaW4gdHlwZXMuaXRlbXMoKToK
ICAgICAKICAgICAjIEdlbmVyYXRlIGNyZWF0ZUZ1bmN0aW9uOgogICAgIGZ1bmN0aW9uID0gIiI7
Ci0gICAgZnVuY3Rpb24gKz0gKCJDaGFyYWN0ZXJDbGFzcyogJXNDcmVhdGUoKVxuIiAlIG5hbWUp
CisgICAgZnVuY3Rpb24gKz0gKCJQYXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiAlc0NyZWF0ZSgp
XG4iICUgbmFtZSkKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1pdFRhYmxlcyBh
bmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGluIGNsYXNzZXM6
Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVy
Q2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoQ2hhcmFjdGVyQ2xhc3NUYWJsZTo6Y3JlYXRlKF8l
c0RhdGEsIHRydWUpKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uICs9ICgiICAgIE93blB0cjxDaGFyYWN0ZXJDbGFzcz4gY2hhcmFjdGVyQ2xhc3MgPSBh
ZG9wdFB0cihuZXcgQ2hhcmFjdGVyQ2xhc3MoQ2hhcmFjdGVyQ2xhc3NUYWJsZTo6Y3JlYXRlKF8l
c0RhdGEsIHRydWUpKSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVy
Q2xhc3MgPSBuZXcgQ2hhcmFjdGVyQ2xhc3MoQ2hhcmFjdGVyQ2xhc3NUYWJsZTo6Y3JlYXRlKF8l
c0RhdGEsIGZhbHNlKSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIg
ICAgT3duUHRyPENoYXJhY3RlckNsYXNzPiBjaGFyYWN0ZXJDbGFzcyA9IGFkb3B0UHRyKG5ldyBD
aGFyYWN0ZXJDbGFzcyhDaGFyYWN0ZXJDbGFzc1RhYmxlOjpjcmVhdGUoXyVzRGF0YSwgZmFsc2Up
KSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6Ci0gICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIENo
YXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5ldyBDaGFyYWN0ZXJDbGFzcygwKTtcbiIp
CisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIE93blB0cjxDaGFyYWN0ZXJDbGFzcz4gY2hhcmFj
dGVyQ2xhc3MgPSBhZG9wdFB0cihuZXcgQ2hhcmFjdGVyQ2xhc3MoMCkpO1xuIikKICAgICBmb3Ig
KG1pbiwgbWF4KSBpbiByYW5nZXM6CiAgICAgICAgIGlmIChtaW4gPT0gbWF4KToKICAgICAgICAg
ICAgIGlmIChtaW4gPiAxMjcpOgpAQCAtMTA2LDcgKzEwNiw3IEBAIGZvciBuYW1lLCBjbGFzc2Vz
IGluIHR5cGVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweCUwNHgsIDB4
JTA0eCkpO1xuIiAlIChtaW4sIG1heCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmdW5j
dGlvbiArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDB4JTAyeCwgMHglMDJ4KSk7XG4iICUgKG1pbiwgbWF4KSkKLSAgICBmdW5jdGlvbiArPSAo
IiAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3M7XG4iKQorICAgIGZ1bmN0aW9uICs9ICgiICAgIHJl
dHVybiBjaGFyYWN0ZXJDbGFzcy5yZWxlYXNlKCk7XG4iKQogICAgIGZ1bmN0aW9uICs9ICgifVxu
XG4iKQogICAgIGZ1bmN0aW9ucyArPSBmdW5jdGlvbgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDExOTcyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MTgsNyArMTcxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgc3Vi
cGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBhdHRlcm5JZDsKIAogICAgICAg
ICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0ZXJuSWQgLSBzdWJwYXR0ZXJu
SWQgKyAxOwotICAgICAgICBCeXRlRGlzanVuY3Rpb24qIHBhcmVudGhlc2VzRGlzanVuY3Rpb24g
PSBuZXcgQnl0ZURpc2p1bmN0aW9uKG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAg
ICAgICAgT3duUHRyPEJ5dGVEaXNqdW5jdGlvbj4gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IGFk
b3B0UHRyKG5ldyBCeXRlRGlzanVuY3Rpb24obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUp
KTsKIAogICAgICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRl
cm06OlN1YnBhdHRlcm5CZWdpbigpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0ZXJtSW5QYXJl
bnRoZXNlcyA9IGJlZ2luVGVybSArIDE7IHRlcm1JblBhcmVudGhlc2VzIDwgZW5kVGVybTsgKyt0
ZXJtSW5QYXJlbnRoZXNlcykKQEAgLTE3MjcsOCArMTcyNyw4IEBAIHB1YmxpYzoKIAogICAgICAg
ICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuc2hyaW5rKGJlZ2luVGVybSk7CiAKLSAgICAgICAg
bV9hbGxQYXJlbnRoZXNlc0luZm8uYXBwZW5kKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pOwotICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpU
eXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24sIGNhcHR1cmUsIGlucHV0UG9zaXRpb24pKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0
dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJl
LCBpbnB1dFBvc2l0aW9uKSk7CisgICAgICAgIG1fYWxsUGFyZW50aGVzZXNJbmZvLmFwcGVuZChw
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICAgICAgbV9ib2R5RGlzanVu
Y3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5xdWFudGl0eUNvdW50ID0gcXVhbnRpdHlDb3Vu
dC51bnNhZmVHZXQoKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVy
bV0uYXRvbS5xdWFudGl0eVR5cGUgPSBxdWFudGl0eVR5cGU7CkBAIC0xODE1LDcgKzE4MTUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgZGlzanVuY3Rp
b24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkID0gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkOwog
Ci0gICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rp
b24tPm1fYWx0ZXJuYXRpdmVzW2FsdF07CisgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAK
ICAgICAgICAgICAgIGlmIChhbHQpIHsKICAgICAgICAgICAgICAgICBpZiAoZGlzanVuY3Rpb24g
PT0gbV9wYXR0ZXJuLm1fYm9keSkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIHByaXZhdGU6CiAgICAg
T3duUHRyPEJ5dGVEaXNqdW5jdGlvbj4gbV9ib2R5RGlzanVuY3Rpb247CiAgICAgdW5zaWduZWQg
bV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleDsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0Vu
dHJ5PiBtX3BhcmVudGhlc2VzU3RhY2s7Ci0gICAgVmVjdG9yPEJ5dGVEaXNqdW5jdGlvbio+IG1f
YWxsUGFyZW50aGVzZXNJbmZvOworICAgIFZlY3RvcjxPd25QdHI8Qnl0ZURpc2p1bmN0aW9uPiA+
IG1fYWxsUGFyZW50aGVzZXNJbmZvOwogfTsKIAogUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+
IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciog
YWxsb2NhdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgJKHJldmlzaW9uIDExOTcyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTAgKzMzNCwxOCBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgbV9mcmFtZVNpemU7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHZvaWQgYXBwZW5kUmVsZWFzZWRFbGVtZW50cyhWZWN0
b3I8VD4mIGRlc3RpbmF0aW9uLCBWZWN0b3I8VT4mIHNvdXJjZSkKK3sKKyAgICBzaXplX3Qgc2l6
ZSA9IHNvdXJjZS5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzb3VyY2VbaV0ucmVsZWFzZSgpKTsKK30KKwog
c3RydWN0IEJ5dGVjb2RlUGF0dGVybiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQnl0ZWNvZGVQYXR0ZXJuKFBhc3NPd25QdHI8Qnl0ZURpc2p1bmN0aW9uPiBi
b2R5LCBWZWN0b3I8Qnl0ZURpc2p1bmN0aW9uKj4gYWxsUGFyZW50aGVzZXNJbmZvLCBZYXJyUGF0
dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICBCeXRl
Y29kZVBhdHRlcm4oUGFzc093blB0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxPd25Q
dHI8Qnl0ZURpc2p1bmN0aW9uPiA+JiBhbGxQYXJlbnRoZXNlc0luZm8sIFlhcnJQYXR0ZXJuJiBw
YXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICA6IG1fYm9k
eShib2R5KQogICAgICAgICAsIG1faWdub3JlQ2FzZShwYXR0ZXJuLm1faWdub3JlQ2FzZSkKICAg
ICAgICAgLCBtX211bHRpbGluZShwYXR0ZXJuLm1fbXVsdGlsaW5lKQpAQCAtMzQ2LDIwICszNTQs
MTEgQEAgcHVibGljOgogICAgICAgICBuZXdsaW5lQ2hhcmFjdGVyQ2xhc3MgPSBwYXR0ZXJuLm5l
d2xpbmVDaGFyYWN0ZXJDbGFzcygpOwogICAgICAgICB3b3JkY2hhckNoYXJhY3RlckNsYXNzID0g
cGF0dGVybi53b3JkY2hhckNoYXJhY3RlckNsYXNzKCk7CiAKLSAgICAgICAgbV9hbGxQYXJlbnRo
ZXNlc0luZm8uYXBwZW5kKGFsbFBhcmVudGhlc2VzSW5mbyk7Ci0gICAgICAgIG1fdXNlckNoYXJh
Y3RlckNsYXNzZXMuYXBwZW5kKHBhdHRlcm4ubV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcyk7Ci0gICAg
ICAgIC8vICdTdGVhbCcgdGhlIFlhcnJQYXR0ZXJuJ3MgQ2hhcmFjdGVyQ2xhc3NlcyEgIFdlIGNs
ZWFyIGl0cwotICAgICAgICAvLyBhcnJheSwgc28gdGhhdCBpdCB3b24ndCBkZWxldGUgdGhlbSBv
biBkZXN0cnVjdGlvbi4gIFdlJ2xsCi0gICAgICAgIC8vIHRha2UgcmVzcG9uc2liaWxpdHkgZm9y
IHRoYXQuCisgICAgICAgIGFwcGVuZFJlbGVhc2VkRWxlbWVudHMobV9hbGxQYXJlbnRoZXNlc0lu
Zm8sIGFsbFBhcmVudGhlc2VzSW5mbyk7CisgICAgICAgIGFwcGVuZFJlbGVhc2VkRWxlbWVudHMo
bV91c2VyQ2hhcmFjdGVyQ2xhc3NlcywgcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzKTsK
ICAgICAgICAgcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmNsZWFyKCk7CiAgICAgfQog
Ci0gICAgfkJ5dGVjb2RlUGF0dGVybigpCi0gICAgewotICAgICAgICBkZWxldGVBbGxWYWx1ZXMo
bV9hbGxQYXJlbnRoZXNlc0luZm8pOwotICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV91c2VyQ2hh
cmFjdGVyQ2xhc3Nlcyk7Ci0gICAgfQotCiAgICAgT3duUHRyPEJ5dGVEaXNqdW5jdGlvbj4gbV9i
b2R5OwogICAgIGJvb2wgbV9pZ25vcmVDYXNlOwogICAgIGJvb2wgbV9tdWx0aWxpbmU7CkBAIC0z
NzEsOCArMzcwLDggQEAgcHVibGljOgogICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJh
Y3RlckNsYXNzOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxCeXRlRGlzanVuY3Rpb24qPiBtX2Fs
bFBhcmVudGhlc2VzSW5mbzsKLSAgICBWZWN0b3I8Q2hhcmFjdGVyQ2xhc3MqPiBtX3VzZXJDaGFy
YWN0ZXJDbGFzc2VzOworICAgIFZlY3RvcjxPd25QdHI8Qnl0ZURpc2p1bmN0aW9uPiA+IG1fYWxs
UGFyZW50aGVzZXNJbmZvOworICAgIFZlY3RvcjxPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+ID4gbV91
c2VyQ2hhcmFjdGVyQ2xhc3NlczsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NPd25QdHI8
Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVyQWxs
b2NhdG9yKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAkocmV2
aXNpb24gMTE5NzI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMDIsMTEgKzIzMDIsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBtX29wcy5hcHBlbmQoYWx0ZXJuYXRpdmVC
ZWdpbk9wQ29kZSk7CiAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3Vu
ZDsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fdGVybSA9IHRlcm07Ci0gICAgICAgIFZlY3RvcjxQ
YXR0ZXJuQWx0ZXJuYXRpdmUqPiYgYWx0ZXJuYXRpdmVzID0gIHRlcm0tPnBhcmVudGhlc2VzLmRp
c2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgVmVjdG9yPE93blB0cjxQYXR0ZXJu
QWx0ZXJuYXRpdmU+ID4mIGFsdGVybmF0aXZlcyA9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLT5tX2FsdGVybmF0aXZlczsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFs
dGVybmF0aXZlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4
ID0gbV9vcHMuc2l6ZSgpIC0gMTsKIAotICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBu
ZXN0ZWRBbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tpXTsKKyAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogbmVzdGVkQWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbaV0uZ2V0KCk7CiAg
ICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2ZShuZXN0ZWRBbHRlcm5hdGl2ZSk7CiAKICAg
ICAgICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKQEAgLTIzNTMsMTEg
KzIzNTMsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAg
ICAgICBtX29wcy5hcHBlbmQoT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luKTsKICAgICAg
ICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBtX29wcy5s
YXN0KCkubV90ZXJtID0gdGVybTsKLSAgICAgICAgVmVjdG9yPFBhdHRlcm5BbHRlcm5hdGl2ZSo+
JiBhbHRlcm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJu
YXRpdmVzOworICAgICAgICBWZWN0b3I8T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2ZT4gPiYgYWx0
ZXJuYXRpdmVzID0gIHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
czsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFsdGVybmF0aXZlcy5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0g
MTsKIAotICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXN0ZWRBbHRlcm5hdGl2ZSA9
IGFsdGVybmF0aXZlc1tpXTsKKyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmVzdGVk
QWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbaV0uZ2V0KCk7CiAgICAgICAgICAgICBvcENvbXBp
bGVBbHRlcm5hdGl2ZShuZXN0ZWRBbHRlcm5hdGl2ZSk7CiAKICAgICAgICAgICAgIHNpemVfdCB0
aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKQEAgLTI0MjcsNyArMjQyNyw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAvLyB0byByZXR1cm4gdGhlIGZh
aWxpbmcgcmVzdWx0LgogICAgIHZvaWQgb3BDb21waWxlQm9keShQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uKQogICAgIHsKLSAgICAgICAgVmVjdG9yPFBhdHRlcm5BbHRlcm5hdGl2ZSo+
JiBhbHRlcm5hdGl2ZXMgPSAgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBW
ZWN0b3I8T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2ZT4gPiYgYWx0ZXJuYXRpdmVzID0gZGlzanVu
Y3Rpb24tPm1fYWx0ZXJuYXRpdmVzOwogICAgICAgICBzaXplX3QgY3VycmVudEFsdGVybmF0aXZl
SW5kZXggPSAwOwogCiAgICAgICAgIC8vIEVtaXQgdGhlICdvbmNlIHRocm91Z2gnIGFsdGVybmF0
aXZlcy4KQEAgLTI0MzcsNyArMjQzNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRl
IE1hY3JvQXNzZW0KIAogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBs
YXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7Ci0gICAgICAgICAgICAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJ
bmRleF07CisgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9
IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CiAgICAgICAgICAg
ICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOwogCiAgICAgICAgICAgICAg
ICAgc2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwpAQCAtMjQ3Miw3ICsyNDcyLDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBtX29w
cy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CiAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7Ci0gICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRl
cm5hdGl2ZUluZGV4XTsKKyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRp
dmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwogICAgICAg
ICAgICAgQVNTRVJUKCFhbHRlcm5hdGl2ZS0+b25jZVRocm91Z2goKSk7CiAgICAgICAgICAgICBv
cENvbXBpbGVBbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDExOTcyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc1LDE2ICsxNzUsMTYgQEAgcHVibGljOgogCiAgICAgfQogCi0gICAgQ2hhcmFjdGVyQ2xhc3Mq
IGNoYXJDbGFzcygpCisgICAgUGFzc093blB0cjxDaGFyYWN0ZXJDbGFzcz4gY2hhckNsYXNzKCkK
ICAgICB7Ci0gICAgICAgIENoYXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcyA9IG5ldyBDaGFy
YWN0ZXJDbGFzcygwKTsKKyAgICAgICAgT3duUHRyPENoYXJhY3RlckNsYXNzPiBjaGFyYWN0ZXJD
bGFzcyA9IGFkb3B0UHRyKG5ldyBDaGFyYWN0ZXJDbGFzcygwKSk7CiAKICAgICAgICAgY2hhcmFj
dGVyQ2xhc3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNs
YXNzLT5tX3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1f
bWF0Y2hlc1VuaWNvZGUuc3dhcChtX21hdGNoZXNVbmljb2RlKTsKICAgICAgICAgY2hhcmFjdGVy
Q2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5zd2FwKG1fcmFuZ2VzVW5pY29kZSk7CiAKLSAgICAgICAg
cmV0dXJuIGNoYXJhY3RlckNsYXNzOworICAgICAgICByZXR1cm4gY2hhcmFjdGVyQ2xhc3MucmVs
ZWFzZSgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI3NCwxMyArMjc0LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IocGF0dGVybi5tX2lnbm9yZUNh
c2UpCiAgICAgICAgICwgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKGZhbHNlKQogICAg
IHsKLSAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IG5ldyBQYXR0ZXJuRGlzanVuY3Rpb24oKTsK
LSAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IG1fcGF0dGVybi5tX2JvZHktPmFkZE5ld0FsdGVybmF0
aXZlKCk7Ci0gICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQobV9wYXR0ZXJu
Lm1fYm9keSk7Ci0gICAgfQotCi0gICAgfllhcnJQYXR0ZXJuQ29uc3RydWN0b3IoKQotICAgIHsK
KyAgICAgICAgT3duUHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4gYm9keSA9IGFkb3B0UHRyKG5ldyBQ
YXR0ZXJuRGlzanVuY3Rpb24pOworICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQo
KTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7Cisg
ICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoYm9keS5yZWxlYXNlKCkpOwog
ICAgIH0KIAogICAgIHZvaWQgcmVzZXQoKQpAQCAtMjg4LDkgKzI4NSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fcGF0dGVybi5yZXNldCgpOwogICAgICAgICBtX2NoYXJhY3RlckNsYXNzQ29uc3Ry
dWN0b3IucmVzZXQoKTsKIAotICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gbmV3IFBhdHRlcm5E
aXNqdW5jdGlvbigpOwotICAgICAgICBtX2FsdGVybmF0aXZlID0gbV9wYXR0ZXJuLm1fYm9keS0+
YWRkTmV3QWx0ZXJuYXRpdmUoKTsKLSAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFw
cGVuZChtX3BhdHRlcm4ubV9ib2R5KTsKKyAgICAgICAgT3duUHRyPFBhdHRlcm5EaXNqdW5jdGlv
bj4gYm9keSA9IGFkb3B0UHRyKG5ldyBQYXR0ZXJuRGlzanVuY3Rpb24pOworICAgICAgICBtX3Bh
dHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHkt
PmFkZE5ld0FsdGVybmF0aXZlKCk7CisgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5h
cHBlbmQoYm9keS5yZWxlYXNlKCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFzc2VydGlvbkJP
TCgpCkBAIC0zMjcsOSArMzI1LDkgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgbV9j
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnB1dFVuaWNvZGVJZ25vcmVDYXNlKGNoLCBpbmZvKTsK
LSAgICAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld0NoYXJhY3RlckNsYXNzID0gbV9jaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yLmNoYXJDbGFzcygpOwotICAgICAgICBtX3BhdHRlcm4ubV91c2VyQ2hh
cmFjdGVyQ2xhc3Nlcy5hcHBlbmQobmV3Q2hhcmFjdGVyQ2xhc3MpOwotICAgICAgICBtX2FsdGVy
bmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShuZXdDaGFyYWN0ZXJDbGFzcywgZmFs
c2UpKTsKKyAgICAgICAgT3duUHRyPENoYXJhY3RlckNsYXNzPiBuZXdDaGFyYWN0ZXJDbGFzcyA9
IG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5jaGFyQ2xhc3MoKTsKKyAgICAgICAgbV9hbHRl
cm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0obmV3Q2hhcmFjdGVyQ2xhc3MuZ2V0
KCksIGZhbHNlKSk7CisgICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFw
cGVuZChuZXdDaGFyYWN0ZXJDbGFzcy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHZvaWQgYXRv
bUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCBjbGFzc0lELCBi
b29sIGludmVydCkKQEAgLTM4OSw5ICszODcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0b21D
aGFyYWN0ZXJDbGFzc0VuZCgpCiAgICAgewotICAgICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3Q2hh
cmFjdGVyQ2xhc3MgPSBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IuY2hhckNsYXNzKCk7Ci0g
ICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChuZXdDaGFyYWN0
ZXJDbGFzcyk7CisgICAgICAgIE93blB0cjxDaGFyYWN0ZXJDbGFzcz4gbmV3Q2hhcmFjdGVyQ2xh
c3MgPSBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IuY2hhckNsYXNzKCk7CiAgICAgICAgIG1f
YWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKG5ld0NoYXJhY3RlckNsYXNz
LCBtX2ludmVydENoYXJhY3RlckNsYXNzKSk7CisgICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFy
YWN0ZXJDbGFzc2VzLmFwcGVuZChuZXdDaGFyYWN0ZXJDbGFzcy5yZWxlYXNlKCkpOwogICAgIH0K
IAogICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJvb2wgY2FwdHVyZSA9
IHRydWUpCkBAIC00MDAsMTggKzM5OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjYXB0dXJl
KQogICAgICAgICAgICAgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMrKzsKIAotICAgICAgICBQ
YXR0ZXJuRGlzanVuY3Rpb24qIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBuZXcgUGF0dGVybkRp
c2p1bmN0aW9uKG1fYWx0ZXJuYXRpdmUpOwotICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlv
bnMuYXBwZW5kKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pOwotICAgICAgICBtX2FsdGVybmF0aXZl
LT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2Vz
U3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLCBjYXB0dXJl
LCBmYWxzZSkpOworICAgICAgICBPd25QdHI8UGF0dGVybkRpc2p1bmN0aW9uPiBwYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EaXNqdW5jdGlvbihtX2FsdGVybmF0
aXZlKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJt
KFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1f
YWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgp
OworICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKHBhcmVudGhlc2VzRGlz
anVuY3Rpb24ucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIFBhdHRl
cm5EaXNqdW5jdGlvbiogcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG5ldyBQYXR0ZXJuRGlzanVu
Y3Rpb24obV9hbHRlcm5hdGl2ZSk7Ci0gICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5h
cHBlbmQocGFyZW50aGVzZXNEaXNqdW5jdGlvbik7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1f
dGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFz
c2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1
bmN0aW9uLCBmYWxzZSwgaW52ZXJ0KSk7CisgICAgICAgIE93blB0cjxQYXR0ZXJuRGlzanVuY3Rp
b24+IHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBhZG9wdFB0cihuZXcgUGF0dGVybkRpc2p1bmN0
aW9uKG1fYWx0ZXJuYXRpdmUpKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBl
bmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBt
X3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0
KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVudGhlc2Vz
RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CisgICAgICAgIG1fcGF0dGVybi5tX2Rp
c2p1bmN0aW9ucy5hcHBlbmQocGFyZW50aGVzZXNEaXNqdW5jdGlvbi5yZWxlYXNlKCkpOwogICAg
ICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZlcnQ7CiAgICAgfQogCkBA
IC00NzcsMTIgKzQ3NSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gc2tpcCBhbHRlcm5hdGl2ZXMgd2l0
aCBtX3N0YXJ0c1dpdGhCT0wgc2V0IHRydWUuCiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBjb3B5
RGlzanVuY3Rpb24oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgYm9vbCBmaWx0ZXJT
dGFydHNXaXRoQk9MID0gZmFsc2UpCiAgICAgewotICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24q
IG5ld0Rpc2p1bmN0aW9uID0gMDsKKyAgICAgICAgT3duUHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4g
bmV3RGlzanVuY3Rpb247CiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgZGlz
anVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKLSAgICAgICAgICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2
ZXNbYWx0XTsKKyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBk
aXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIGlmICgh
ZmlsdGVyU3RhcnRzV2l0aEJPTCB8fCAhYWx0ZXJuYXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewog
ICAgICAgICAgICAgICAgIGlmICghbmV3RGlzanVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAg
ICAgbmV3RGlzanVuY3Rpb24gPSBuZXcgUGF0dGVybkRpc2p1bmN0aW9uKCk7CisgICAgICAgICAg
ICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EaXNqdW5jdGlv
bigpKTsKICAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlz
anVuY3Rpb24tPm1fcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5l
d0FsdGVybmF0aXZlKCk7CkBAIC00OTAsMTAgKzQ4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIG5ld0FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChjb3B5VGVybShhbHRlcm5h
dGl2ZS0+bV90ZXJtc1tpXSwgZmlsdGVyU3RhcnRzV2l0aEJPTCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIAorICAgIAorICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIHJh
d05ld0Rpc2p1bmN0aW9uID0gbmV3RGlzanVuY3Rpb24uZ2V0KCk7CiAgICAgICAgIGlmIChuZXdE
aXNqdW5jdGlvbikKLSAgICAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQo
bmV3RGlzanVuY3Rpb24pOwotICAgICAgICByZXR1cm4gbmV3RGlzanVuY3Rpb247CisgICAgICAg
ICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKG5ld0Rpc2p1bmN0aW9uLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiByYXdOZXdEaXNqdW5jdGlvbjsKICAgICB9CiAgICAgCiAg
ICAgUGF0dGVyblRlcm0gY29weVRlcm0oUGF0dGVyblRlcm0mIHRlcm0sIGJvb2wgZmlsdGVyU3Rh
cnRzV2l0aEJPTCA9IGZhbHNlKQpAQCAtNjU1LDcgKzY1NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ym9vbCBoYXNGaXhlZFNpemUgPSB0cnVlOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0g
MDsgYWx0IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKLSAg
ICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+
bV9hbHRlcm5hdGl2ZXNbYWx0XTsKKyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0
ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS5nZXQoKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUgPSBzZXR1cEFs
dGVybmF0aXZlT2Zmc2V0cyhhbHRlcm5hdGl2ZSwgaW5pdGlhbENhbGxGcmFtZVNpemUsIGluaXRp
YWxJbnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAgIG1pbmltdW1JbnB1dFNpemUgPSBtaW4obWlu
aW11bUlucHV0U2l6ZSwgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwogICAgICAgICAgICAg
bWF4aW11bUNhbGxGcmFtZVNpemUgPSBtYXgobWF4aW11bUNhbGxGcmFtZVNpemUsIGN1cnJlbnRB
bHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUpOwpAQCAtNjkwLDcgKzY4OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFZlY3RvcjxQYXR0ZXJuQWx0ZXJuYXRpdmUqPiYgYWx0ZXJuYXRpdmVzID0g
bV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxPd25QdHI8
UGF0dGVybkFsdGVybmF0aXZlPiA+JiBhbHRlcm5hdGl2ZXMgPSBtX3BhdHRlcm4ubV9ib2R5LT5t
X2FsdGVybmF0aXZlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbHRlcm5hdGl2
ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1z
ID0gYWx0ZXJuYXRpdmVzW2ldLT5tX3Rlcm1zOwogICAgICAgICAgICAgaWYgKHRlcm1zLnNpemUo
KSkgewpAQCAtNzIzLDEwICs3MjIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaXNqdW5jdGlv
bi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS0+c2V0T25jZVRocm91Z2goKTsKIAogICAgICAgICBpZiAo
bG9vcERpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAvLyBNb3ZlIGFsdGVybmF0aXZlcyBmcm9t
IGxvb3BEaXNqdW5jdGlvbiB0byBkaXNqdW5jdGlvbgotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBhbHQgPSAwOyBhbHQgPCBsb29wRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsg
KythbHQpCi0gICAgICAgICAgICAgICAgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLmFwcGVu
ZChsb29wRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0pOwotICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gTW92ZSBhbHRlcm5hdGl2ZXMgZnJvbSBsb29wRGlzanVuY3Rpb24g
dG8gZGlzanVuY3Rpb24uCisgICAgICAgICAgICBhcHBlbmRSZWxlYXNlZEVsZW1lbnRzKGRpc2p1
bmN0aW9uLT5tX2FsdGVybmF0aXZlcywgbG9vcERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcyk7
CiAgICAgICAgICAgICBsb29wRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLmNsZWFyKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03NDQsNyArNzQxLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
aWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybikg
ewogICAgICAgICAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24g
PSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYWx0ID0gMDsgYWx0IDwgbmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNp
emUoKTsgKythbHQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zQ2FwdHVyaW5n
VGVybXMobmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0sIDAsIG5lc3RlZERp
c2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLT5tX3Rlcm1zLnNpemUoKSAtIDEpKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoY29udGFpbnNDYXB0dXJpbmdUZXJtcyhuZXN0ZWREaXNqdW5j
dGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS5nZXQoKSwgMCwgbmVzdGVkRGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzW2FsdF0tPm1fdGVybXMuc2l6ZSgpIC0gMSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC03NjAsMTEgKzc1NywxMSBAQCBwdWJsaWM6CiAgICAgLy8gYmVnaW5uaW5nIGFuZCB0aGUgZW5k
IG9mIHRoZSBtYXRjaC4KICAgICB2b2lkIG9wdGltaXplRG90U3RhcldyYXBwZWRFeHByZXNzaW9u
cygpCiAgICAgewotICAgICAgICBWZWN0b3I8UGF0dGVybkFsdGVybmF0aXZlKj4mIGFsdGVybmF0
aXZlcyA9IG1fcGF0dGVybi5tX2JvZHktPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBWZWN0b3I8
T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2ZT4gPiYgYWx0ZXJuYXRpdmVzID0gbV9wYXR0ZXJuLm1f
Ym9keS0+bV9hbHRlcm5hdGl2ZXM7CiAgICAgICAgIGlmIChhbHRlcm5hdGl2ZXMuc2l6ZSgpICE9
IDEpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBh
bHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1swXTsKKyAgICAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1swXS5nZXQoKTsKICAgICAgICAgVmVjdG9yPFBh
dHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZS0+bV90ZXJtczsKICAgICAgICAgaWYgKHRl
cm1zLnNpemUoKSA+PSAzKSB7CiAgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhCT0wgPSBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNp
b24gMTE5NzI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8cnVudGltZS9VU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CkBAIC0yNzUsMTkg
KzI3NiwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICB+UGF0dGVybkRpc2p1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2FsdGVybmF0aXZlcyk7
Ci0gICAgfQotCiAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAg
ICAgewotICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gbmV3IFBhdHRl
cm5BbHRlcm5hdGl2ZSh0aGlzKTsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKGFsdGVy
bmF0aXZlKTsKLSAgICAgICAgcmV0dXJuIGFsdGVybmF0aXZlOworICAgICAgICBPd25QdHI8UGF0
dGVybkFsdGVybmF0aXZlPiBhbHRlcm5hdGl2ZSA9IGFkb3B0UHRyKG5ldyBQYXR0ZXJuQWx0ZXJu
YXRpdmUodGhpcykpOworICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIHJhd0FsdGVybmF0aXZl
ID0gYWx0ZXJuYXRpdmUuZ2V0KCk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChhbHRl
cm5hdGl2ZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gcmF3QWx0ZXJuYXRpdmU7CiAgICAg
fQogCi0gICAgVmVjdG9yPFBhdHRlcm5BbHRlcm5hdGl2ZSo+IG1fYWx0ZXJuYXRpdmVzOworICAg
IFZlY3RvcjxPd25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiA+IG1fYWx0ZXJuYXRpdmVzOwogICAg
IFBhdHRlcm5BbHRlcm5hdGl2ZSogbV9wYXJlbnQ7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2l6
ZTsKICAgICB1bnNpZ25lZCBtX2NhbGxGcmFtZVNpemU7CkBAIC0yOTgsMTMgKzI5NSwxMyBAQCBw
dWJsaWM6CiAvLyAocGxlYXNlIHRvIGJlIGNhbGxpbmcgbmV3bGluZUNoYXJhY3RlckNsYXNzKCkg
ZXQgYWwgb24geW91cgogLy8gZnJpZW5kbHkgbmVpZ2hib3Job29kIFlhcnJQYXR0ZXJuIGluc3Rh
bmNlIHRvIGdldCBuaWNlbHkKIC8vIGNhY2hlZCBjb3BpZXMpLgotQ2hhcmFjdGVyQ2xhc3MqIG5l
d2xpbmVDcmVhdGUoKTsKLUNoYXJhY3RlckNsYXNzKiBkaWdpdHNDcmVhdGUoKTsKLUNoYXJhY3Rl
ckNsYXNzKiBzcGFjZXNDcmVhdGUoKTsKLUNoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNyZWF0ZSgp
OwotQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NyZWF0ZSgpOwotQ2hhcmFjdGVyQ2xhc3MqIG5v
bnNwYWNlc0NyZWF0ZSgpOwotQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRjaGFyQ3JlYXRlKCk7CitQ
YXNzT3duUHRyPENoYXJhY3RlckNsYXNzPiBuZXdsaW5lQ3JlYXRlKCk7CitQYXNzT3duUHRyPENo
YXJhY3RlckNsYXNzPiBkaWdpdHNDcmVhdGUoKTsKK1Bhc3NPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+
IHNwYWNlc0NyZWF0ZSgpOworUGFzc093blB0cjxDaGFyYWN0ZXJDbGFzcz4gd29yZGNoYXJDcmVh
dGUoKTsKK1Bhc3NPd25QdHI8Q2hhcmFjdGVyQ2xhc3M+IG5vbmRpZ2l0c0NyZWF0ZSgpOworUGFz
c093blB0cjxDaGFyYWN0ZXJDbGFzcz4gbm9uc3BhY2VzQ3JlYXRlKCk7CitQYXNzT3duUHRyPENo
YXJhY3RlckNsYXNzPiBub253b3JkY2hhckNyZWF0ZSgpOwogCiBzdHJ1Y3QgVGVybUNoYWluIHsK
ICAgICBUZXJtQ2hhaW4oUGF0dGVyblRlcm0gdGVybSkKQEAgLTMxOCwxMiArMzE1LDYgQEAgc3Ry
dWN0IFRlcm1DaGFpbiB7CiBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwg
Ym9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKLSAgICB+WWFyclBhdHRlcm4o
KQotICAgIHsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZGlzanVuY3Rpb25zKTsKLSAgICAg
ICAgZGVsZXRlQWxsVmFsdWVzKG1fdXNlckNoYXJhY3RlckNsYXNzZXMpOwotICAgIH0KLQogICAg
IHZvaWQgcmVzZXQoKQogICAgIHsKICAgICAgICAgbV9udW1TdWJwYXR0ZXJucyA9IDA7CkBAIC0z
NDAsOSArMzMxLDcgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAgICAgbm9uc3BhY2VzQ2Fj
aGVkID0gMDsKICAgICAgICAgbm9ud29yZGNoYXJDYWNoZWQgPSAwOwogCi0gICAgICAgIGRlbGV0
ZUFsbFZhbHVlcyhtX2Rpc2p1bmN0aW9ucyk7CiAgICAgICAgIG1fZGlzanVuY3Rpb25zLmNsZWFy
KCk7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzKTsKICAg
ICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5jbGVhcigpOwogICAgIH0KIApAQCAtMzUxLDQ2
ICszNDAsNTAgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAgICAgcmV0dXJuIG1fbWF4QmFj
a1JlZmVyZW5jZSA+IG1fbnVtU3VicGF0dGVybnM7CiAgICAgfQogCitwcml2YXRlOgorICAgIHZv
aWQgY2FjaGVDaGFyYWN0ZXJDbGFzcyhDaGFyYWN0ZXJDbGFzcyomIGNhY2hlLCBQYXNzT3duUHRy
PENoYXJhY3RlckNsYXNzPiBjcmVhdGlvbkZ1bmN0aW9uKCkpCisgICAgeworICAgICAgICBpZiAo
Y2FjaGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE93blB0cjxDaGFyYWN0ZXJDbGFz
cz4gY2hhcmFjdGVyQ2xhc3MgPSBjcmVhdGlvbkZ1bmN0aW9uKCk7CisgICAgICAgIGNhY2hlID0g
Y2hhcmFjdGVyQ2xhc3MuZ2V0KCk7CisgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBw
ZW5kKGNoYXJhY3RlckNsYXNzLnJlbGVhc2UoKSk7CisgICAgfQorCitwdWJsaWM6CiAgICAgQ2hh
cmFjdGVyQ2xhc3MqIG5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAgICBpZiAo
IW5ld2xpbmVDYWNoZWQpCi0gICAgICAgICAgICBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVu
ZChuZXdsaW5lQ2FjaGVkID0gbmV3bGluZUNyZWF0ZSgpKTsKKyAgICAgICAgY2FjaGVDaGFyYWN0
ZXJDbGFzcyhuZXdsaW5lQ2FjaGVkLCBuZXdsaW5lQ3JlYXRlKTsKICAgICAgICAgcmV0dXJuIG5l
d2xpbmVDYWNoZWQ7CiAgICAgfQogICAgIENoYXJhY3RlckNsYXNzKiBkaWdpdHNDaGFyYWN0ZXJD
bGFzcygpCiAgICAgewotICAgICAgICBpZiAoIWRpZ2l0c0NhY2hlZCkKLSAgICAgICAgICAgIG1f
dXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKGRpZ2l0c0NhY2hlZCA9IGRpZ2l0c0NyZWF0ZSgp
KTsKKyAgICAgICAgY2FjaGVDaGFyYWN0ZXJDbGFzcyhkaWdpdHNDYWNoZWQsIGRpZ2l0c0NyZWF0
ZSk7CiAgICAgICAgIHJldHVybiBkaWdpdHNDYWNoZWQ7CiAgICAgfQogICAgIENoYXJhY3RlckNs
YXNzKiBzcGFjZXNDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAgICBpZiAoIXNwYWNlc0Nh
Y2hlZCkKLSAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKHNwYWNlc0Nh
Y2hlZCA9IHNwYWNlc0NyZWF0ZSgpKTsKKyAgICAgICAgY2FjaGVDaGFyYWN0ZXJDbGFzcyhzcGFj
ZXNDYWNoZWQsIHNwYWNlc0NyZWF0ZSk7CiAgICAgICAgIHJldHVybiBzcGFjZXNDYWNoZWQ7CiAg
ICAgfQogICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNsYXNzKCkKICAgICB7
Ci0gICAgICAgIGlmICghd29yZGNoYXJDYWNoZWQpCi0gICAgICAgICAgICBtX3VzZXJDaGFyYWN0
ZXJDbGFzc2VzLmFwcGVuZCh3b3JkY2hhckNhY2hlZCA9IHdvcmRjaGFyQ3JlYXRlKCkpOworICAg
ICAgICBjYWNoZUNoYXJhY3RlckNsYXNzKHdvcmRjaGFyQ2FjaGVkLCB3b3JkY2hhckNyZWF0ZSk7
CiAgICAgICAgIHJldHVybiB3b3JkY2hhckNhY2hlZDsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xh
c3MqIG5vbmRpZ2l0c0NoYXJhY3RlckNsYXNzKCkKICAgICB7Ci0gICAgICAgIGlmICghbm9uZGln
aXRzQ2FjaGVkKQotICAgICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQobm9u
ZGlnaXRzQ2FjaGVkID0gbm9uZGlnaXRzQ3JlYXRlKCkpOworICAgICAgICBjYWNoZUNoYXJhY3Rl
ckNsYXNzKG5vbmRpZ2l0c0NhY2hlZCwgbm9uZGlnaXRzQ3JlYXRlKTsKICAgICAgICAgcmV0dXJu
IG5vbmRpZ2l0c0NhY2hlZDsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0No
YXJhY3RlckNsYXNzKCkKICAgICB7Ci0gICAgICAgIGlmICghbm9uc3BhY2VzQ2FjaGVkKQotICAg
ICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQobm9uc3BhY2VzQ2FjaGVkID0g
bm9uc3BhY2VzQ3JlYXRlKCkpOworICAgICAgICBjYWNoZUNoYXJhY3RlckNsYXNzKG5vbnNwYWNl
c0NhY2hlZCwgbm9uc3BhY2VzQ3JlYXRlKTsKICAgICAgICAgcmV0dXJuIG5vbnNwYWNlc0NhY2hl
ZDsKICAgICB9CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRjaGFyQ2hhcmFjdGVyQ2xhc3Mo
KQogICAgIHsKLSAgICAgICAgaWYgKCFub253b3JkY2hhckNhY2hlZCkKLSAgICAgICAgICAgIG1f
dXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKG5vbndvcmRjaGFyQ2FjaGVkID0gbm9ud29yZGNo
YXJDcmVhdGUoKSk7CisgICAgICAgIGNhY2hlQ2hhcmFjdGVyQ2xhc3Mobm9ud29yZGNoYXJDYWNo
ZWQsIG5vbndvcmRjaGFyQ3JlYXRlKTsKICAgICAgICAgcmV0dXJuIG5vbndvcmRjaGFyQ2FjaGVk
OwogICAgIH0KIApAQCAtNDAxLDggKzM5NCw4IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAg
dW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKICAgICB1bnNpZ25lZCBtX21heEJhY2tSZWZlcmVu
Y2U7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX2JvZHk7Ci0gICAgVmVjdG9yPFBhdHRlcm5E
aXNqdW5jdGlvbiosIDQ+IG1fZGlzanVuY3Rpb25zOwotICAgIFZlY3RvcjxDaGFyYWN0ZXJDbGFz
cyo+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CisgICAgVmVjdG9yPE93blB0cjxQYXR0ZXJuRGlz
anVuY3Rpb24+LCA0PiBtX2Rpc2p1bmN0aW9uczsKKyAgICBWZWN0b3I8T3duUHRyPENoYXJhY3Rl
ckNsYXNzPiA+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
Y2hhciogY29tcGlsZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>