<?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>70384</bug_id>
          
          <creation_ts>2011-10-18 16:48:08 -0700</creation_ts>
          <short_desc>Support CanvasPixelArray in the DFG</short_desc>
          <delta_ts>2011-10-19 14:24:23 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>486432</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-18 16:48:08 -0700</bug_when>
    <thetext>Support CanvasPixelArray in the DFG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486458</commentid>
    <comment_count>1</comment_count>
      <attachid>111534</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-18 17:17:02 -0700</bug_when>
    <thetext>Created attachment 111534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486460</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-18 17:19:49 -0700</bug_when>
    <thetext>Attachment 111534 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1090:  movb_rm is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486465</commentid>
    <comment_count>3</comment_count>
      <attachid>111534</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-18 17:28:21 -0700</bug_when>
    <thetext>Comment on attachment 111534
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:344
&gt; +            filter = PredictByteArray;

That&apos;s wrong, since you didn&apos;t implement the equivalent case in SpeculativeJIT.  This case for Array is here because SpeculativeJIT::compare() may filter on arrays.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1330
&gt; +        if (at(node.child1()).prediction() == PredictByteArray) {

Call isByteArrayPrediction

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1392
&gt; +        if (at(node.child1()).prediction() &amp; PredictByteArray) {

Does the abstract state do the same thing?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1462
&gt; +        if (at(node.child1()).prediction() &amp; PredictByteArray) {

Does the abstract state do the same thing?

&gt; Source/JavaScriptCore/wtf/ByteArray.cpp:28
&gt; +

kill!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486490</commentid>
    <comment_count>4</comment_count>
      <attachid>111544</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-18 18:18:04 -0700</bug_when>
    <thetext>Created attachment 111544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486491</commentid>
    <comment_count>5</comment_count>
      <attachid>111544</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-18 18:19:18 -0700</bug_when>
    <thetext>Comment on attachment 111544
Patch

Marking r- based on Phil&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486494</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-18 18:20:11 -0700</bug_when>
    <thetext>Attachment 111544 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1090:  movb_rm is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486495</commentid>
    <comment_count>7</comment_count>
      <attachid>111544</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-18 18:20:52 -0700</bug_when>
    <thetext>Comment on attachment 111544
Patch

Oops! I was behind. Unreviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486916</commentid>
    <comment_count>8</comment_count>
      <attachid>111544</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-19 12:22:37 -0700</bug_when>
    <thetext>Comment on attachment 111544
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:533
&gt; +        m_assembler.movb_rm(src, address.offset, address.base, address.index, address.scale);

I believe this is unsafe on 32-bit x86.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486926</commentid>
    <comment_count>9</comment_count>
      <attachid>111659</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-19 12:41:58 -0700</bug_when>
    <thetext>Created attachment 111659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486988</commentid>
    <comment_count>10</comment_count>
      <attachid>111659</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-19 14:05:00 -0700</bug_when>
    <thetext>Comment on attachment 111659
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487005</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-19 14:24:23 -0700</bug_when>
    <thetext>Committed r97876: &lt;http://trac.webkit.org/changeset/97876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111534</attachid>
            <date>2011-10-18 17:17:02 -0700</date>
            <delta_ts>2011-10-18 18:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70384-20111018171701.patch</filename>
            <type>text/plain</type>
            <size>35757</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4MDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAz
NmNhNmU2MGIzMTllOThlYjNmZjNlODZjYTM4NmIyYjBiMjE5OTYuLjdiMTRiM2VjMmYyN2FlYmFl
ZTI4YmQzYzJiYTIwZjM1NTJiMzY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDExLTEwLTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBDYW52YXNQaXhlbEFycmF5IGluIHRoZSBERkcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBv
bGQgQ2FudmFzUGl4ZWxBcnJheSBvcHRpbWlzYXRpb25zIHRvIHRoZQorICAgICAgICBERkcuICBU
aGlzIHJlbW92ZXMgdGhlIHJlZ3Jlc3Npb24gc2VlbiBpbiB0aGUgREZHIHdoZW4gdXNpbmcKKyAg
ICAgICAgYSBDUEEuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZURvdWJsZVRvSW50
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wOCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAg
ICAgIChKU0M6OnByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVkaWN0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQnl0ZUFycmF5UHJlZGljdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZHUHJv
cGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9k
ZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBp
bGVDbGFtcERvdWJsZVRvQnl0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgor
ICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKToKKyAgICAgICAgKiB3
dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6CisgICAgICAgIChX
VEY6OkJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKFdURjo6Qnl0ZUFycmF5Ojpv
ZmZzZXRPZkRhdGEpOgorCiAyMDExLTEwLTE4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBBcnJheS5wcm90b3R5cGUgbWV0aG9kcyBtaXNzaW5n
IGV4Y2VwdGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4N2RlODI4YWRjYmIxNDE1MTYyNTRiY2Yw
NjliMDc4ZTI0MmU3MGM2Li5lYzFhNWQ2OTk1Mjg4YTFkZjVkM2MxMTUyNzg3Y2MyZTJmNTIzMTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTggIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IENhbnZhc1BpeGVsQXJyYXkgaW4g
dGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzAzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIENhbnZhc1BpeGVsQXJyYXkgaW5oZXJpdCBmcm9tIEJ5dGVBcnJheSdzIENsYXNzSW5mbyBz
bworICAgICAgICBjYW4gaWRlbnRpZnkgaXQgbW9yZSBzZW5zaWJseS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorCiAyMDExLTEwLTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKSBmcm9t
IHRoZSB0cmVlLCB0aGlzIGlzIGNvbnRyb2xsZWQgYnkgYSBydW50aW1lIHNldHRpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAppbmRleCBlY2E3OGM0ZmQ2MzQxMzU4MGQ1OGI0ODM4NDdmZWJiM2U2YjgwYjM1
Li5kYzU5NGE2M2Y4ODViNTJmN2RhY2Q0OTQxOGI3NGFjN2VmY2FiZjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCkBAIC01MjcsNiArNTI3LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKC0xMjgg
PD0gaW1tLm1fdmFsdWUgJiYgaW1tLm1fdmFsdWUgPCAxMjgpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZiX2k4bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmU4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CiAKIAogICAgIC8vIEZsb2F0aW5nLXBvaW50
IG9wZXJhdGlvbjoKQEAgLTY5MSw2ICs2OTYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoMzIoYnJhbmNoVHlwZSA/IE5vdEVxdWFsIDogRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0z
MigweDgwMDAwMDAwKSk7CiAgICAgfQogCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIs
IGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBp
cyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1h
eSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAz
MiBiaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAppbmRleCBlMDQ5YTJlNmQ1ZmE4MmQ0MTBlYmNhOWM1ZWYxMWI1ZmVjYjk1NmNiLi5kMmMwMmNi
YjNhZWYzMjgwZGZlZDI1OTg2NmI0NGExY2VmYWJlOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwcml2
YXRlOgogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAg
ICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUsCiAgICAgICAgIE9Q
X1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAorICAgICAgICBPUF9NT1ZfRWJH
YiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1BfTU9WX0V2R3YgICAgICAg
ICAgICAgICAgICAgICA9IDB4ODksCiAgICAgICAgIE9QX01PVl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgPSAweDhCLAogICAgICAgICBPUF9MRUEgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MHg4RCwKQEAgLTEwODUsNiArMTA4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBtb3ZiX3JtKGludCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQogCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9pZCogYWRkcikKICAg
ICB7CkBAIC0xOTQzLDYgKzE5NDksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlZ2lzdGVy
TW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7CisgICAgICAgICAgICBlbWl0
UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgpIHx8
IHJlZ1JlcXVpcmVzUmV4KGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIG1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgcmVnLCBS
ZWdpc3RlcklEIHJtKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWRpY3RlZFR5cGUuY3BwCmluZGV4IDc5ZDFhYTNlYjQ2Zjc0MmU5ZjMyMTMxYWUzNDli
ZTUyZTMwNjBlZWUuLjczNDcxOGE3ZmYxOTZhNWE4ODc0M2QyMzBiMzIxOTJmMGJiODNmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVkaWN0
ZWRUeXBlLmgiCiAKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRlci5oPgogCkBAIC02Niw2
ICs2NywxMSBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkVHlwZSB2
YWx1ZSkKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCisgICAgaWYgKHZh
bHVlICYgUHJlZGljdEJ5dGVBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgiQnl0ZUFycmF5Iik7
CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAogICAgIGlmICh2YWx1ZSAm
IFByZWRpY3RTdHJpbmcpCiAgICAgICAgIHB0ci5zdHJjYXQoIlN0cmluZyIpOwogICAgIGVsc2UK
QEAgLTExMCw2ICsxMTYsOSBAQCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZv
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0g
JkpTU3RyaW5nOjpzX2luZm8pCiAgICAgICAgIHJldHVybiBQcmVkaWN0U3RyaW5nOworCisgICAg
aWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKCZKU0J5dGVBcnJheTo6c19pbmZvKSkKKyAgICAg
ICAgcmV0dXJuIFByZWRpY3RCeXRlQXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNT
dWJDbGFzc09mKCZKU09iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIFByZWRpY3RPYmpl
Y3RPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlw
ZS5oCmluZGV4IGVlYjhjZmI0NjAxY2YwNDdlZThkYjAxM2I2OTRjMTVjODJlNDVkNTcuLmM3YTA4
MjZhMzdmZjBlYzdlY2RlMzEyMDY3MWI5OTc4OTc0OTM0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaApAQCAtMzksNiArMzksNyBAQCB0eXBl
ZGVmIHVpbnQxNl90IFByZWRpY3RlZFR5cGU7CiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Tm9uZSAgICAgICAgICA9IDB4MDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyB5
ZXQuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmluYWxPYmplY3QgICA9IDB4
MDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KIHN0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSAgICAgICAgID0gMHgwMDAyOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEJ5dGVB
cnJheSAgICAgPSAweDAwMDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQnl0ZUFycmF5Lgogc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVjdE90aGVyICAgPSAweDAwMTA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJy
YXkuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T2JqZWN0TWFzayAgICA9IDB4
MDAzZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3Qg
cHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RTdHJpbmcgICAg
ICAgID0gMHgwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KQEAgLTgzLDYgKzg0
LDExIEBAIGlubGluZSBib29sIGlzQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgaXNC
eXRlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZh
bHVlID09IFByZWRpY3RCeXRlQXJyYXk7Cit9CisKIGlubGluZSBib29sIGlzQXJyYXlPck90aGVy
UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAm
IChQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKSAmJiAhKHZhbHVlICYgfihQcmVkaWN0QXJy
YXkgfCBQcmVkaWN0T3RoZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCmluZGV4IDQ2MTc5ODIxYTA2ODNjMzllYjAzYmU1Y2I0MmY2YjVkNTg1
ZmViMmMuLmVkNDA0ODU4ODZlOTk5MTYyODgxOTQ5YzI2ODZlMTI4ZWRjYjY3MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMTA1LDYg
KzEwNSw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCiAg
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQz
Mik7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQogICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0QXJyYXkp
OworICAgICAgICBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisg
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RCeXRl
QXJyYXkpOwogICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0
Qm9vbGVhbik7CiAgICAgICAgIGVsc2UKQEAgLTE4MSw2ICsxODMsOCBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAgIGVsc2UgaWYgKGlz
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNCeXRl
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CiAgICAgICAgIGVsc2UgaWYgKGlz
Qm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIApAQCAtMzM2LDYg
KzM0MCw4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgICAgICAgICAgZmlsdGVyID0gUHJlZGljdEZpbmFsT2JqZWN0OwogICAgICAgICBlbHNl
IGlmIChub2RlLm9wID09IENvbXBhcmVFcSAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheShs
ZWZ0LCByaWdodCkpCiAgICAgICAgICAgICBmaWx0ZXIgPSBQcmVkaWN0QXJyYXk7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJ5
dGVBcnJheShsZWZ0LCByaWdodCkpCisgICAgICAgICAgICBmaWx0ZXIgPSBQcmVkaWN0Qnl0ZUFy
cmF5OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RUb3A7CiAg
ICAgICAgICAgICBjbG9iYmVyU3RydWN0dXJlcyhub2RlSW5kZXgpOwpAQCAtMzc1LDYgKzM4MSwx
MiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdFN0cmluZyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdEJ5dGVBcnJheSkgeworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKQEAgLTM4OSw2ICs0
MDEsMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBub2RlSW5kZXgp
CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJl
ZGljdGlvbigpID09IFByZWRpY3RCeXRlQXJyYXkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKICAgICAgICAgYnJlYWs7CkBAIC01NDAsMTEgKzU1OCwxNiBAQCBib29sIEFic3Ry
YWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAor
CiAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdldEJ5
dGVBcnJheUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdEJ5dGVBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdElu
dDMyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRo
ZSBzdHJ1Y3R1cmUgc2V0cyBvZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGY5MjNmMDI0ZmZmN2I1Zjk1YjYyZjk1ZTkyNDhl
M2E2ZmUzOGNkY2QuLmY5ZmMxYmYzMjljZjE0MTZjYmU4Y2Q3OWI5MzhkYzcwNmE5ZjBmYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yNjcsNiArMjY3LDcgQEAgc3RhdGlj
IGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKEFyaXRoTm9kZUZsYWdz
IGZsYWdzKQogICAgIG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMy
KSBcCiAgICAgbWFjcm8oR2V0U3RyaW5nTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBt
YWNybyhHZXRCeXRlQXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdl
dE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENo
ZWNrTWV0aG9kLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0U2NvcGVDaGFpbiwgTm9kZVJlc3VsdEpTKSBcCkBAIC05NDIsNiArOTQzLDExIEBAIHN0cnVj
dCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzQXJyYXlPck90aGVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwpA
QCAtOTc5LDYgKzk4NSwxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICB8fCAob3AxLnNo
b3VsZFNwZWN1bGF0ZU9iamVjdCgpICYmIG9wMi5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKICAg
ICB9CiAgICAgCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KE5vZGUm
IG9wMSwgTm9kZSYgb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChvcDEuc2hvdWxkU3BlY3Vs
YXRlQnl0ZUFycmF5KCkgJiYgb3AyLnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKQorICAgICAgICB8
fCAob3AxLnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpICYmIG9wMi5zaG91bGRTcGVjdWxhdGVCeXRl
QXJyYXkoKSk7CisgICAgfQorICAgIAogICAgIGJvb2wgY2FuU3BlY3VsYXRlSW50ZWdlcigpCiAg
ICAgewogICAgICAgICByZXR1cm4gbm9kZUNhblNwZWN1bGF0ZUludGVnZXIoYXJpdGhOb2RlRmxh
Z3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAppbmRl
eCBlNWQ3ZWExMmYwMzUxYzViOGIzOWE0NTAzYTlmNWUyNGJmZTVmN2QyLi44MDIzMTI5ODYzYmRm
MjRlYTQ1NWJjZjJkZGIyMjUyZWRhODFlOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvcGFnYXRvci5jcHAKQEAgLTU2MSw2ICs1NjEsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgVmFsdWVUb0RvdWJsZToKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2Ug
R2V0U3RyaW5nTGVuZ3RoOiB7CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVy
IGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAg
ICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KQEAg
LTczNCwxNyArNzM1LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDogewogICAg
ICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlzU3Ry
aW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7Ci0gICAg
ICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nKQotICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgYm9vbCBpc0J5dGVBcnJheSA9IGlzQnl0ZUFycmF5UHJlZGljdGlvbiht
X2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBpZiAoIWlz
SW50MzJQcmVkaWN0aW9uKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3Ry
aW5nICYmICFpc0J5dGVBcnJheSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGlmIChtX2NvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0g
bV9nbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKICAgICAgICAgICAgIHByaW50ZigiICBAJXUgLT4gJXMiLCBtX2NvbXBpbGVJbmRleCwgaXNB
cnJheSA/ICJHZXRBcnJheUxlbmd0aCIgOiAiR2V0U3RyaW5nTGVuZ3RoIik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIG5vZGUub3AgPSBpc0FycmF5ID8gR2V0QXJyYXlMZW5ndGggOiBHZXRTdHJpbmdM
ZW5ndGg7CisgICAgICAgICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAgICAgICAgICBub2RlLm9w
ID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZykKKyAgICAg
ICAgICAgICAgICBub2RlLm9wID0gR2V0U3RyaW5nTGVuZ3RoOworICAgICAgICAgICAgZWxzZSBp
ZiAoaXNCeXRlQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEJ5dGVBcnJheUxl
bmd0aDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTEz
MTAsNiArMTMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhNaW46CiAgICAgICAg
IGNhc2UgQXJpdGhNYXg6CiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OgorICAgICAgICBjYXNlIEdl
dEJ5dGVBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAgIGNhc2Ug
R2V0U3RyaW5nTGVuZ3RoOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlMDcwYmQy
ZjBjZTQyOGUwYzlmODU1N2ZlMTIyNjdiYWUzNTFmYi4uNjUxZmEwNjUyYWE5MTQ2MDllMTYxZjNl
NDZkYmVlNWVkYzMxYjhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXku
aCIKIAogI2lmIEVOQUJMRShERkdfSklUKQogCkBAIC0zODMsNiArMzg0LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQ
dHIpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5j
aFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwpAQCAtMzk4LDYgKzQwNCwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoKQogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAu
Z3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Fy
cmF5VlB0cikpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAgICAg
ICAgfSAvLyBGSVhNRTogbmVlZCBib29sZWFuIHByZWRpY3Rpb25zLCBidXQgd2UgY3VycmVudGx5
IGRvbid0IGhhdmUgdGhhdCBzdXBwb3J0LgogI2VuZGlmCiAgICAgfQpAQCAtNjQwLDYgKzY1Miwx
MjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlJiBub2Rl
KQogICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZv
cm1hdCgpKTsKIH0KIAorc3RhdGljIHZvaWQgY29tcGlsZUNsYW1wRG91YmxlVG9CeXRlKEpJVENv
bXBpbGVyJiBqaXQsIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBzb3VyY2UsIEZQUlJlZyBzY3JhdGNo
KQoreworICAgIC8vIFVub3JkZXJlZCBjb21wYXJlIHNvIHdlIHBpY2sgdXAgTmFOCisgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGJ5dGVN
YXggPSAyNTU7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmID0gMC41OworICAgIGppdC5s
b2FkRG91YmxlKCZ6ZXJvLCBzY3JhdGNoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29T
bWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOworICAgIGppdC5sb2FkRG91YmxlKCZi
eXRlTWF4LCBzY3JhdGNoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBqaXQu
YnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiwgc291cmNlLCBz
Y3JhdGNoKTsKKyAgICAKKyAgICBqaXQubG9hZERvdWJsZSgmaGFsZiwgc2NyYXRjaCk7CisgICAg
aml0LmFkZERvdWJsZShzb3VyY2UsIHNjcmF0Y2gpOworICAgIGppdC50cnVuY2F0ZURvdWJsZVRv
SW50MzIoc2NyYXRjaCwgcmVzdWx0KTsgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0cnVu
Y2F0ZWRJbnQgPSBqaXQuanVtcCgpOworICAgIAorICAgIHRvb1NtYWxsLmxpbmsoJmppdCk7Cisg
ICAgaml0LnhvclB0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
emVyb2VkID0gaml0Lmp1bXAoKTsKKyAgICAKKyAgICB0b29CaWcubGluaygmaml0KTsKKyAgICBq
aXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDI1NSksIHJlc3VsdCk7CisgICAgCisg
ICAgdHJ1bmNhdGVkSW50LmxpbmsoJmppdCk7CisgICAgemVyb2VkLmxpbmsoJmppdCk7CisKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KEdQUlJl
ZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUmIG5vZGUpCit7CisgICAgTm9kZUluZGV4IGJh
c2VJbmRleCA9IG5vZGUuY2hpbGQxKCk7CisgICAgTm9kZUluZGV4IHZhbHVlSW5kZXggPSBub2Rl
LmNoaWxkMygpOworICAgIAorICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShiYXNlSW5kZXgpLm1fdHlwZSkpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgIEdQUlRlbXBvcmFyeSB2YWx1ZTsKKyAgICBH
UFJSZWcgdmFsdWVHUFI7CisKKyAgICBpZiAoYXQodmFsdWVJbmRleCkuaXNDb25zdGFudCgpKSB7
CisgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KHZhbHVlSW5kZXgp
OworICAgICAgICBpZiAoIWpzVmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkb3VibGUg
ZCA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKKyAgICAgICAgZCArPSAwLjU7CisgICAgICAgIGlmICgh
KGQgPiAwKSkKKyAgICAgICAgICAgIGQgPSAwOworICAgICAgICBlbHNlIGlmIChkID4gMjU1KQor
ICAgICAgICAgICAgZCA9IDI1NTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9q
aXQubW92ZShJbW0zMigoaW50KWQpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgdmFsdWUuYWRvcHQo
c2NyYXRjaCk7CisgICAgICAgIHZhbHVlR1BSID0gc2NyYXRjaFJlZzsKKyAgICB9IGVsc2UgaWYg
KCFhdCh2YWx1ZUluZGV4KS5zaG91bGROb3RTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAg
U3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZUluZGV4KTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVn
ID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZSh2YWx1ZU9wLmdwcigpLCBzY3Jh
dGNoUmVnKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBzY3JhdGNoUmVnLCBUcnVzdGVk
SW1tMzIoMHhmZikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4sIHNjcmF0Y2hSZWcsIFRydXN0
ZWRJbW0zMigweGZmKSk7CisgICAgICAgIG1faml0LnhvclB0cihzY3JhdGNoUmVnLCBzY3JhdGNo
UmVnKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2xhbXBlZCA9IG1faml0Lmp1bXAo
KTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMjU1KSwgc2NyYXRjaFJlZyk7Cisg
ICAgICAgIGNsYW1wZWQubGluaygmbV9qaXQpOworICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2pp
dCk7CisgICAgICAgIHZhbHVlLmFkb3B0KHNjcmF0Y2gpOworICAgICAgICB2YWx1ZUdQUiA9IHNj
cmF0Y2hSZWc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2
YWx1ZU9wKHRoaXMsIHZhbHVlSW5kZXgpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICBGUFJUZW1wb3JhcnkgZmxvYXRTY3JhdGNoKHRoaXMpOworICAgICAgICBG
UFJSZWcgZnByID0gdmFsdWVPcC5mcHIoKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgY29tcGlsZUNsYW1wRG91YmxlVG9CeXRlKG1faml0LCBncHIsIGZwciwg
ZmxvYXRTY3JhdGNoLmZwcigpKTsKKyAgICAgICAgdmFsdWUuYWRvcHQocmVzdWx0KTsKKyAgICAg
ICAgdmFsdWVHUFIgPSBncHI7CisgICAgfQorICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBwcm9wZXJ0
eSk7CisgICAgQVNTRVJUKHZhbHVlR1BSICE9IGJhc2UpOworICAgIEdQUlRlbXBvcmFyeSBzdG9y
YWdlKHRoaXMpOworICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBB
U1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCBz
dG9yYWdlUmVnKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSk7
CisgICAgbV9qaXQuc3RvcmU4KHZhbHVlLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VSZWcsIHByb3BlcnR5LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUsIEJ5dGVBcnJh
eTo6b2Zmc2V0T2ZEYXRhKCkpKTsKKyAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAg
bm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWxPbkJ5dGVBcnJheShOb2RlJiBub2RlKQoreworICAgIEFTU0VSVChub2RlLmNo
aWxkMygpID09IE5vTm9kZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHko
dGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgCisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdw
cigpOworICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIAorICAg
IGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFy
cmF5VlB0cikpKTsKKworICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0Y2hSZWcK
KyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcgc3RvcmFnZVJlZyA9
IHN0b3JhZ2UuZ3ByKCk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCBzdG9yYWdlUmVnKTsK
KyAgICAKKyAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBmaWx0ZXIgb3V0IG5l
Z2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCisgICAgc3BlY3Vs
YXRpb25DaGVjayhtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnl0ZUFycmF5
OjpvZmZzZXRPZlNpemUoKSkpKTsKKworICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09u
ZSwgQnl0ZUFycmF5OjpvZmZzZXRPZkRhdGEoKSksIHN0b3JhZ2VSZWcpOworICAgIGludGVnZXJS
ZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDBhOTkxN2MyYzkwYmIwMGQ5NWE2MjkyMDVlNDNjMzE1OGMxZDg1
YzUuLjZhZDhjODVhN2I3Yzc1MzYzMTNmZjdlYmFhZmMzYzNjNTQxZGQ0OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTQ0OSw2ICs0NDks
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUdldENoYXJDb2RlQXQoTm9kZSYpOwogICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVZh
bHVlVG9JbnQzMihOb2RlJik7CisgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkJ5dGVBcnJheShO
b2RlJik7CisgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYpOwogICAgIAogICAgIC8vIEl0IGlzIGFjY2VwdGFibGUg
dG8gaGF2ZSBzdHJ1Y3R1cmUgYmUgZXF1YWwgdG8gc2NyYXRjaCwgc28gbG9uZyBhcyB5b3UncmUg
ZmluZQogICAgIC8vIHdpdGggdGhlIHN0cnVjdHVyZSBHUFIgYmVpbmcgY2xvYmJlcmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggYzcyMTA1ODkxMjBkNjkwYjIzNWJkYTJkYTQ4YzllNmQ5NzczM2QyYi4uMDM0ZjVk
MTY0Njc1YTc0NjNiZTgyNzAwZGJmY2ZhODk3ZTBkYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkpTQnl0ZUFycmF5Lmgi
CiAjaW5jbHVkZSAiREZHSklUQ29tcGlsZXJJbmxpbmVNZXRob2RzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTc0Nyw2ICs3NDgsMTMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0
cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAg
ICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0J5
dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJS
ZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CisgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsK
KyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjpwYXlsb2Fk
Rm9yKG5vZGUubG9jYWwoKSkpOworICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgp
OwogICAgICAgICB9IGVsc2UgeyAvLyBGSVhNRTogQWRkIEJvb2xlYW5QcmVkaWN0aW9uIGhhbmRs
aW5nCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUucGF5bG9hZEdQUigpLCBKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKQEAgLTEzMTgsNiArMTMyNiwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdEJ5dGVBcnJheSkg
eworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXkobm9kZSk7CisgICAgICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQobm9k
ZS5jaGlsZDMoKSA9PSBOb05vZGUpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpAQCAtMTM3NCw2ICsxMzg5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIGlmIChh
dChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgJiBQcmVkaWN0Qnl0ZUFycmF5KSB7CisgICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwgcHJvcGVydHku
Z3ByKCksIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKQEAgLTE0MzgsNiArMTQ1OCwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2Rl
LmNoaWxkMigpKTsKKworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigp
ICYgUHJlZGljdEJ5dGVBcnJheSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yQnl0
ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMsIGJhc2UpOwog
ICAgICAgICAKQEAgLTE5OTksNiArMjAyNSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0Qnl0
ZUFycmF5TGVuZ3RoOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIAorICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlzQnl0
ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRy
KSkpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
Qnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7CisgICAgICAgIAorICAgICAg
ICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rp
b24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUuZnVuY3Rpb24oKSkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGFhNWU4NGM1YTIxNWE3NmVjMDIyY2VmZmZhZjcwMWExZjU5MTVjMmMuLjVkMDAzMmM1
NmUyYWVlMDhhZTQ3Y2YyYWMwMGQ3MWI0ZjZmNzgyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAKKyNp
bmNsdWRlICJKU0J5dGVBcnJheS5oIgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTg3Myw2ICs4NzUsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKICAg
ICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgfSBlbHNlIGlmIChp
c0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBH
UFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CisgICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikp
KTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKG5vZGUubG9jYWwoKSkpOworICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5k
ZXgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIGJvb2xlYW4odGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihib29sZWFuLmdwcigp
LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKQEAgLTE0NDYsNiArMTQ1
NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5w
cmVkaWN0aW9uKCkgPT0gUHJlZGljdEJ5dGVBcnJheSkgeworICAgICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25CeXRlQXJyYXkobm9kZSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQobm9kZS5jaGlsZDMoKSA9PSBOb05vZGUpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5j
aGlsZDIoKSk7CkBAIC0xNDk4LDYgKzE1MTQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnByZWRpY3Rpb24oKSAmIFByZWRpY3RCeXRlQXJyYXkpIHsKKyAgICAgICAgICAgIGNvbXBp
bGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKIApAQCAtMTUwOSw3ICsxNTMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQog
ICAgICAgICAgICAgcmV0dXJuOwotCisgICAgICAgIAogICAgICAgICB3cml0ZUJhcnJpZXIoYmFz
ZVJlZywgdmFsdWUuZ3ByKCksIG5vZGUuY2hpbGQzKCksIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzLCBzY3JhdGNoUmVnKTsKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4g
YXJyYXksIGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwg
bV92ZWN0b3JMZW5ndGgpLgpAQCAtMTU2Myw2ICsxNTg0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgJiBQcmVkaWN0Qnl0ZUFycmF5KSB7
CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwgcHJv
cGVydHkuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIApAQCAtMjA4Miw2ICsyMTA4LDI0
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgaW50
ZWdlclJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCisgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQnl0ZUFycmF5OjpvZmZzZXRP
ZlN0b3JhZ2UoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSwgcmVzdWx0
R1BSKTsKKworICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUu
ZnVuY3Rpb24oKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5oCmluZGV4IDY2MmM5YzcwMDg2ZjhiZDVlNWZhNDMyOTg5MWIyNzNjNTVlMjJhNmIuLjEzNzc3
MmMwZWE2ZGQ4YjRhYThjOTU4N2EyNDZjNjRjNjA5ZWFkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMTEwLDYgKzExMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5KU0J5dGVBcnJheSgpOwogI2VuZGlmCiAKKyAgICAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNCeXRlQXJyYXksIG1fc3RvcmFnZSk7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuY3BwCmluZGV4IDkx
MGFmNTk4YThjYzRhMWMxMmRkMTliYjdmMGFiODFiYzA3MjJlODQuLmE2MTA1ODBlY2ZmNzYwZjdh
YTE5Njc3OGY2Njg5YmJiOWI4NGM1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVB
cnJheS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJ5dGVBcnJheS5oIgorCiAjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAKIG5hbWVzcGFj
ZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKaW5kZXggNzAwMjA5NmNl
YTg3MDIzMmQwMzg1M2JlMjljM2IyNjgxM2U2OTdmNS4uMDA5ZWM1ODUwY2ZlNTg0MGI4MzFmYzRi
ZjhlYWIzOTY3M2M3ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9C
eXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAgICAgY2xhc3MgQnl0ZUFycmF5
IDogcHVibGljIFJlZkNvdW50ZWRCYXNlIHsKQEAgLTg0LDYgKzg1LDkgQEAgbmFtZXNwYWNlIFdU
RiB7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90
IHNpemUpOwogCisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEJ5dGVBcnJheSwgbV9zaXplKTsgfQorICAgICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeXRlQXJyYXksIG1f
ZGF0YSk7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkK
ICAgICAgICAgICAgIDogbV9zaXplKHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggOWFlNDlmMTc3ZjM3MTI1OTI4MjQ5OTZh
ZGViNzIyZmJlMGFlMDdjZC4uMGY4OWU5MDU5YWFlYjU2ZDljMTAyMDI4ODNhYzkwMTgzM2FlNzlj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIAogICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbWFnZURh
dGEsIGltYWdlRGF0YSk7CiAgICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOwot
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2FudmFzUGl4ZWxB
cnJheSIsICZKU0J5dGVBcnJheTo6QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTQnl0ZUFycmF5KSB9OworICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJ
bmZvID0geyAiQ2FudmFzUGl4ZWxBcnJheSIsICZKU0J5dGVBcnJheTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQnl0ZUFycmF5KSB9OwogICAgIFN0cnVjdHVyZSogY3BhU3Ry
dWN0dXJlID0gZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgJmNwYUNsYXNzSW5m
byk7CiAgICAgaWYgKCFjcGFTdHJ1Y3R1cmUpCiAgICAgICAgIGNwYVN0cnVjdHVyZSA9IGNhY2hl
RE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwganNOdWxsKCksICZjcGFDbGFzc0luZm8p
LCAmY3BhQ2xhc3NJbmZvKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111544</attachid>
            <date>2011-10-18 18:18:04 -0700</date>
            <delta_ts>2011-10-19 12:41:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70384-20111018181803.patch</filename>
            <type>text/plain</type>
            <size>34790</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4MDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAz
NmNhNmU2MGIzMTllOThlYjNmZjNlODZjYTM4NmIyYjBiMjE5OTYuLjdiMTRiM2VjMmYyN2FlYmFl
ZTI4YmQzYzJiYTIwZjM1NTJiMzY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDExLTEwLTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBDYW52YXNQaXhlbEFycmF5IGluIHRoZSBERkcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBv
bGQgQ2FudmFzUGl4ZWxBcnJheSBvcHRpbWlzYXRpb25zIHRvIHRoZQorICAgICAgICBERkcuICBU
aGlzIHJlbW92ZXMgdGhlIHJlZ3Jlc3Npb24gc2VlbiBpbiB0aGUgREZHIHdoZW4gdXNpbmcKKyAg
ICAgICAgYSBDUEEuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZURvdWJsZVRvSW50
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wOCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAg
ICAgIChKU0M6OnByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVkaWN0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQnl0ZUFycmF5UHJlZGljdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZHUHJv
cGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9k
ZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBp
bGVDbGFtcERvdWJsZVRvQnl0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgor
ICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKToKKyAgICAgICAgKiB3
dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6CisgICAgICAgIChX
VEY6OkJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKFdURjo6Qnl0ZUFycmF5Ojpv
ZmZzZXRPZkRhdGEpOgorCiAyMDExLTEwLTE4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBBcnJheS5wcm90b3R5cGUgbWV0aG9kcyBtaXNzaW5n
IGV4Y2VwdGlvbiBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4N2RlODI4YWRjYmIxNDE1MTYyNTRiY2Yw
NjliMDc4ZTI0MmU3MGM2Li5lYzFhNWQ2OTk1Mjg4YTFkZjVkM2MxMTUyNzg3Y2MyZTJmNTIzMTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTAtMTggIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IENhbnZhc1BpeGVsQXJyYXkgaW4g
dGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzAzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIENhbnZhc1BpeGVsQXJyYXkgaW5oZXJpdCBmcm9tIEJ5dGVBcnJheSdzIENsYXNzSW5mbyBz
bworICAgICAgICBjYW4gaWRlbnRpZnkgaXQgbW9yZSBzZW5zaWJseS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorCiAyMDExLTEwLTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgVVNFKFRIUkVBREVEX0NPTVBPU0lUSU5HKSBmcm9t
IHRoZSB0cmVlLCB0aGlzIGlzIGNvbnRyb2xsZWQgYnkgYSBydW50aW1lIHNldHRpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAppbmRleCBlY2E3OGM0ZmQ2MzQxMzU4MGQ1OGI0ODM4NDdmZWJiM2U2YjgwYjM1
Li5kYzU5NGE2M2Y4ODViNTJmN2RhY2Q0OTQxOGI3NGFjN2VmY2FiZjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCkBAIC01MjcsNiArNTI3LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKC0xMjgg
PD0gaW1tLm1fdmFsdWUgJiYgaW1tLm1fdmFsdWUgPCAxMjgpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZiX2k4bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmU4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CiAKIAogICAgIC8vIEZsb2F0aW5nLXBvaW50
IG9wZXJhdGlvbjoKQEAgLTY5MSw2ICs2OTYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoMzIoYnJhbmNoVHlwZSA/IE5vdEVxdWFsIDogRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0z
MigweDgwMDAwMDAwKSk7CiAgICAgfQogCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIs
IGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBp
cyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1h
eSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAz
MiBiaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAppbmRleCBlMDQ5YTJlNmQ1ZmE4MmQ0MTBlYmNhOWM1ZWYxMWI1ZmVjYjk1NmNiLi5kMmMwMmNi
YjNhZWYzMjgwZGZlZDI1OTg2NmI0NGExY2VmYWJlOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwcml2
YXRlOgogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAg
ICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUsCiAgICAgICAgIE9Q
X1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAorICAgICAgICBPUF9NT1ZfRWJH
YiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1BfTU9WX0V2R3YgICAgICAg
ICAgICAgICAgICAgICA9IDB4ODksCiAgICAgICAgIE9QX01PVl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgPSAweDhCLAogICAgICAgICBPUF9MRUEgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MHg4RCwKQEAgLTEwODUsNiArMTA4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBtb3ZiX3JtKGludCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQogCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9pZCogYWRkcikKICAg
ICB7CkBAIC0xOTQzLDYgKzE5NDksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlZ2lzdGVy
TW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7CisgICAgICAgICAgICBlbWl0
UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgpIHx8
IHJlZ1JlcXVpcmVzUmV4KGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIG1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgcmVnLCBS
ZWdpc3RlcklEIHJtKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWRpY3RlZFR5cGUuY3BwCmluZGV4IDc5ZDFhYTNlYjQ2Zjc0MmU5ZjMyMTMxYWUzNDli
ZTUyZTMwNjBlZWUuLjczNDcxOGE3ZmYxOTZhNWE4ODc0M2QyMzBiMzIxOTJmMGJiODNmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVkaWN0
ZWRUeXBlLmgiCiAKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRlci5oPgogCkBAIC02Niw2
ICs2NywxMSBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkVHlwZSB2
YWx1ZSkKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCisgICAgaWYgKHZh
bHVlICYgUHJlZGljdEJ5dGVBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgiQnl0ZUFycmF5Iik7
CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAogICAgIGlmICh2YWx1ZSAm
IFByZWRpY3RTdHJpbmcpCiAgICAgICAgIHB0ci5zdHJjYXQoIlN0cmluZyIpOwogICAgIGVsc2UK
QEAgLTExMCw2ICsxMTYsOSBAQCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZv
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0g
JkpTU3RyaW5nOjpzX2luZm8pCiAgICAgICAgIHJldHVybiBQcmVkaWN0U3RyaW5nOworCisgICAg
aWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKCZKU0J5dGVBcnJheTo6c19pbmZvKSkKKyAgICAg
ICAgcmV0dXJuIFByZWRpY3RCeXRlQXJyYXk7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mby0+aXNT
dWJDbGFzc09mKCZKU09iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIFByZWRpY3RPYmpl
Y3RPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlw
ZS5oCmluZGV4IGVlYjhjZmI0NjAxY2YwNDdlZThkYjAxM2I2OTRjMTVjODJlNDVkNTcuLmM3YTA4
MjZhMzdmZjBlYzdlY2RlMzEyMDY3MWI5OTc4OTc0OTM0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaApAQCAtMzksNiArMzksNyBAQCB0eXBl
ZGVmIHVpbnQxNl90IFByZWRpY3RlZFR5cGU7CiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Tm9uZSAgICAgICAgICA9IDB4MDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyB5
ZXQuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmluYWxPYmplY3QgICA9IDB4
MDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KIHN0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSAgICAgICAgID0gMHgwMDAyOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEJ5dGVB
cnJheSAgICAgPSAweDAwMDQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQnl0ZUFycmF5Lgogc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVjdE90aGVyICAgPSAweDAwMTA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJy
YXkuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T2JqZWN0TWFzayAgICA9IDB4
MDAzZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3Qg
cHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RTdHJpbmcgICAg
ICAgID0gMHgwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KQEAgLTgzLDYgKzg0
LDExIEBAIGlubGluZSBib29sIGlzQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgaXNC
eXRlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZh
bHVlID09IFByZWRpY3RCeXRlQXJyYXk7Cit9CisKIGlubGluZSBib29sIGlzQXJyYXlPck90aGVy
UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhISh2YWx1ZSAm
IChQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKSAmJiAhKHZhbHVlICYgfihQcmVkaWN0QXJy
YXkgfCBQcmVkaWN0T3RoZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCmluZGV4IDQ2MTc5ODIxYTA2ODNjMzllYjAzYmU1Y2I0MmY2YjVkNTg1
ZmViMmMuLjEzZDg2N2FiY2FkNzc5NzJmMTJmY2Q1Y2IxZDNlMDhmNzJjODI3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMTA1LDYg
KzEwNSw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCiAg
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQz
Mik7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQogICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0QXJyYXkp
OworICAgICAgICBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisg
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RCeXRl
QXJyYXkpOwogICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0
Qm9vbGVhbik7CiAgICAgICAgIGVsc2UKQEAgLTE4MSw2ICsxODMsOCBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAgIGVsc2UgaWYgKGlz
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNCeXRl
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CiAgICAgICAgIGVsc2UgaWYgKGlz
Qm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIApAQCAtMzc1LDYg
KzM3OSwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRl
eCkKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdFN0cmluZyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKQEAgLTM4OSw2ICsz
OTksMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBub2RlSW5kZXgp
CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hv
dWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFy
cmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMy
KTsKICAgICAgICAgYnJlYWs7CkBAIC01NDAsMTEgKzU1NiwxNiBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0SW50MzIpOwogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCiAgICAg
Y2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RTdHJpbmcpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdldEJ5dGVBcnJh
eUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5
dGVBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1
Y3R1cmUgc2V0cyBvZiBjb25zdGFudHMgKGkuZS4gcHJvdG90eXBlcykuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCmluZGV4IGY5MjNmMDI0ZmZmN2I1Zjk1YjYyZjk1ZTkyNDhlM2E2ZmUz
OGNkY2QuLjk2ZmMyMGRmYjBlZDE2YzIzZDJiYTRmMzJkMWRjM2NmMWZkNDhmNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yNjcsNiArMjY3LDcgQEAgc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKEFyaXRoTm9kZUZsYWdzIGZsYWdz
KQogICAgIG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJz
V29ybGQpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAg
ICAgbWFjcm8oR2V0U3RyaW5nTGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhH
ZXRCeXRlQXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldE1ldGhv
ZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrTWV0
aG9kLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0U2Nv
cGVDaGFpbiwgTm9kZVJlc3VsdEpTKSBcCkBAIC05NDIsNiArOTQzLDExIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAg
fQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIShwcmVkaWN0aW9uKCkgJiBQcmVkaWN0Qnl0ZUFycmF5KTsKKyAgICB9Cisg
ICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGlzQXJyYXlPck90aGVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKaW5kZXggZTVkN2VhMTJmMDM1
MWM1YjhiMzlhNDUwM2E5ZjVlMjRiZmU1ZjdkMi4uNjExNjk4NjE1YWFkMzJhMTVlMzc2YjkzZTg2
ZTA0YmE5MTY0YjdmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9wYWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0
b3IuY3BwCkBAIC01NjEsNiArNTYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIFZhbHVlVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CisgICAg
ICAgIGNhc2UgR2V0Qnl0ZUFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0
aDogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0
IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRl
ZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkBAIC03MzQsMTcgKzczNSwy
NSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgICAgIGJvb2wg
aXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpKTsKICAgICAgICAgICAgIGJvb2wgaXNTdHJpbmcgPSBpc1N0cmluZ1ByZWRpY3Rpb24o
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgaWYgKCFp
c0FycmF5ICYmICFpc1N0cmluZykKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGJvb2wgaXNCeXRlQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0
ZUJ5dGVBcnJheSgpOwogICAgICAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbihtX2dyYXBo
W21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgaWYgKCFpc0FycmF5ICYmICFpc1N0cmluZyAmJiAhaXNCeXRlQXJyYXkpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlkZW50
aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpICE9IG1fZ2xvYmFsRGF0YS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICBwcmludGYo
IiAgQCV1IC0+ICVzIiwgbV9jb21waWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJyYXlMZW5ndGgi
IDogIkdldFN0cmluZ0xlbmd0aCIpOwogI2VuZGlmCi0gICAgICAgICAgICBub2RlLm9wID0gaXNB
cnJheSA/IEdldEFycmF5TGVuZ3RoIDogR2V0U3RyaW5nTGVuZ3RoOworICAgICAgICAgICAgaWYg
KGlzQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOworICAg
ICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdl
dFN0cmluZ0xlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5KQorICAgICAg
ICAgICAgICAgIG5vZGUub3AgPSBHZXRCeXRlQXJyYXlMZW5ndGg7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xMzEwLDYgKzEzMTksNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEFyaXRoTWluOgogICAgICAgICBjYXNlIEFyaXRoTWF4OgogICAgICAg
ICBjYXNlIEFyaXRoU3FydDoKKyAgICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAg
ICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDAyZTA3MGJkMmYwY2U0MjhlMGM5Zjg1NTdmZTEyMjY3
YmFlMzUxZmIuLjY1MWZhMDY1MmFhOTE0NjA5ZTE2MWYzZTQ2ZGJlZTVlZGMzMWI4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJERkdTcGVjdWxh
dGl2ZUpJVC5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIApAQCAtMzgzLDYgKzM4NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3Vt
ZW50VHlwZXMoKQogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2sobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVt
cC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICB9IGVsc2Ug
aWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKQEAgLTM5OCw2ICs0MDQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tB
cmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CiAgICAgICAgIH0gLy8gRklYTUU6IG5lZWQgYm9v
bGVhbiBwcmVkaWN0aW9ucywgYnV0IHdlIGN1cnJlbnRseSBkb24ndCBoYXZlIHRoYXQgc3VwcG9y
dC4KICNlbmRpZgogICAgIH0KQEAgLTY0MCw2ICs2NTIsMTIyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSYgbm9kZSkKICAgICBpbnRlZ2VyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIG9wMS5mb3JtYXQoKSk7CiB9CiAKK3N0YXRpYyB2
b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVz
dWx0LCBGUFJSZWcgc291cmNlLCBGUFJSZWcgc2NyYXRjaCkKK3sKKyAgICAvLyBVbm9yZGVyZWQg
Y29tcGFyZSBzbyB3ZSBwaWNrIHVwIE5hTgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgemVybyA9
IDA7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBieXRlTWF4ID0gMjU1OworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgaGFsZiA9IDAuNTsKKyAgICBqaXQubG9hZERvdWJsZSgmemVybywgc2NyYXRj
aCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgdG9vU21hbGwgPSBqaXQuYnJhbmNoRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgc291cmNl
LCBzY3JhdGNoKTsKKyAgICBqaXQubG9hZERvdWJsZSgmYnl0ZU1heCwgc2NyYXRjaCk7CisgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgdG9vQmlnID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlR3JlYXRlclRoYW4sIHNvdXJjZSwgc2NyYXRjaCk7CisgICAgCisgICAgaml0
LmxvYWREb3VibGUoJmhhbGYsIHNjcmF0Y2gpOworICAgIGppdC5hZGREb3VibGUoc291cmNlLCBz
Y3JhdGNoKTsKKyAgICBqaXQudHJ1bmNhdGVEb3VibGVUb0ludDMyKHNjcmF0Y2gsIHJlc3VsdCk7
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgdHJ1bmNhdGVkSW50ID0gaml0Lmp1bXAoKTsK
KyAgICAKKyAgICB0b29TbWFsbC5saW5rKCZqaXQpOworICAgIGppdC54b3JQdHIocmVzdWx0LCBy
ZXN1bHQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHplcm9lZCA9IGppdC5qdW1wKCk7Cisg
ICAgCisgICAgdG9vQmlnLmxpbmsoJmppdCk7CisgICAgaml0Lm1vdmUoSklUQ29tcGlsZXI6OlRy
dXN0ZWRJbW0zMigyNTUpLCByZXN1bHQpOworICAgIAorICAgIHRydW5jYXRlZEludC5saW5rKCZq
aXQpOworICAgIHplcm9lZC5saW5rKCZqaXQpOworCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5
LCBOb2RlJiBub2RlKQoreworICAgIE5vZGVJbmRleCBiYXNlSW5kZXggPSBub2RlLmNoaWxkMSgp
OworICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKKyAgICAKKyAgICBp
ZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoYmFzZUluZGV4KS5tX3R5
cGUpKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikp
KTsKKyAgICBHUFJUZW1wb3JhcnkgdmFsdWU7CisgICAgR1BSUmVnIHZhbHVlR1BSOworCisgICAg
aWYgKGF0KHZhbHVlSW5kZXgpLmlzQ29uc3RhbnQoKSkgeworICAgICAgICBKU1ZhbHVlIGpzVmFs
dWUgPSB2YWx1ZU9mSlNDb25zdGFudCh2YWx1ZUluZGV4KTsKKyAgICAgICAgaWYgKCFqc1ZhbHVl
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KCk7CisgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIGQgPSBqc1ZhbHVlLmFzTnVtYmVyKCk7
CisgICAgICAgIGQgKz0gMC41OworICAgICAgICBpZiAoIShkID4gMCkpCisgICAgICAgICAgICBk
ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoZCA+IDI1NSkKKyAgICAgICAgICAgIGQgPSAyNTU7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRj
aFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoSW1tMzIoKGludClkKSwg
c2NyYXRjaFJlZyk7CisgICAgICAgIHZhbHVlLmFkb3B0KHNjcmF0Y2gpOworICAgICAgICB2YWx1
ZUdQUiA9IHNjcmF0Y2hSZWc7CisgICAgfSBlbHNlIGlmICghYXQodmFsdWVJbmRleCkuc2hvdWxk
Tm90U3BlY3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5k
IHZhbHVlT3AodGhpcywgdmFsdWVJbmRleCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAg
ICAgIG1faml0Lm1vdmUodmFsdWVPcC5ncHIoKSwgc2NyYXRjaFJlZyk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93T3JFcXVhbCwgc2NyYXRjaFJlZywgVHJ1c3RlZEltbTMyKDB4ZmYpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgdG9vQmlnID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1tMzIoMHhmZikpOworICAgICAg
ICBtX2ppdC54b3JQdHIoc2NyYXRjaFJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGNsYW1wZWQgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDI1NSksIHNjcmF0Y2hSZWcpOworICAgICAgICBjbGFtcGVkLmxpbmsoJm1f
aml0KTsKKyAgICAgICAgaW5Cb3VuZHMubGluaygmbV9qaXQpOworICAgICAgICB2YWx1ZS5hZG9w
dChzY3JhdGNoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBzY3JhdGNoUmVnOworICAgIH0gZWxzZSB7
CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZUluZGV4
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgRlBSVGVtcG9y
YXJ5IGZsb2F0U2NyYXRjaCh0aGlzKTsKKyAgICAgICAgRlBSUmVnIGZwciA9IHZhbHVlT3AuZnBy
KCk7CisgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGNvbXBpbGVD
bGFtcERvdWJsZVRvQnl0ZShtX2ppdCwgZ3ByLCBmcHIsIGZsb2F0U2NyYXRjaC5mcHIoKSk7Cisg
ICAgICAgIHZhbHVlLmFkb3B0KHJlc3VsdCk7CisgICAgICAgIHZhbHVlR1BSID0gZ3ByOworICAg
IH0KKyAgICBBU1NFUlQodmFsdWVHUFIgIT0gcHJvcGVydHkpOworICAgIEFTU0VSVCh2YWx1ZUdQ
UiAhPSBiYXNlKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcg
c3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3Jh
Z2VSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwg
SlNCeXRlQXJyYXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgc3RvcmFnZVJlZyk7CisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZVJlZywgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSkpOworICAgIG1faml0LnN0b3JlOCh2YWx1
ZS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eSwg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCBCeXRlQXJyYXk6Om9mZnNldE9mRGF0YSgpKSk7Cisg
ICAgb3V0T2ZCb3VuZHMubGluaygmbV9qaXQpOworICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4
KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXko
Tm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS5jaGlsZDMoKSA9PSBOb05vZGUpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgIAorICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgcHJvcGVy
dHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAKKyAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisKKyAgICAvLyBM
b2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCisgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CisgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNCeXRlQXJyYXk6
Om9mZnNldE9mU3RvcmFnZSgpKSwgc3RvcmFnZVJlZyk7CisgICAgCisgICAgLy8gdW5zaWduZWQg
Y29tcGFyaXNvbiBzbyB3ZSBjYW4gZmlsdGVyIG91dCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRp
Y2VzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKCkpKSk7CisK
KyAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNPbmUsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZE
YXRhKCkpLCBzdG9yYWdlUmVnKTsKKyAgICBpbnRlZ2VyUmVzdWx0KHN0b3JhZ2VSZWcsIG1fY29t
cGlsZUluZGV4KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAwYTk5
MTdjMmM5MGJiMDBkOTVhNjI5MjA1ZTQzYzMxNThjMWQ4NWM1Li42YWQ4Yzg1YTdiN2M3NTM2MzEz
ZmY3ZWJhYWZjM2MzYzU0MWRkNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC00NDksNiArNDQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXBpbGVHZXRDaGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSYpOworICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXkoTm9kZSYpOworICAgIHZvaWQgY29tcGls
ZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUm
KTsKICAgICAKICAgICAvLyBJdCBpcyBhY2NlcHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVx
dWFsIHRvIHNjcmF0Y2gsIHNvIGxvbmcgYXMgeW91J3JlIGZpbmUKICAgICAvLyB3aXRoIHRoZSBz
dHJ1Y3R1cmUgR1BSIGJlaW5nIGNsb2JiZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGM3MjEwNTg5MTIwZDY5
MGIyMzViZGEyZGE0OGM5ZTZkOTc3MzNkMmIuLjRlN2I5ZTI2MmNkNzI4MWM2YzczZGI0Njk2MmU5
NzBjMWFlMzYyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIkRGR0pJVENvbXBp
bGVySW5saW5lTWV0aG9kcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBA
IC03NDcsNiArNzQ4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlW
UHRyKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6
OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigp
OworICAgICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKKyAg
ICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgfSBlbHNlIHsgLy8g
RklYTUU6IEFkZCBCb29sZWFuUHJlZGljdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHZhbHVlLnBheWxvYWRHUFIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5s
b2NhbCgpKSk7CkBAIC0xMzE4LDYgKzEzMjYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uQnl0ZUFycmF5KG5vZGUpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAg
ICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5vZGUuY2hpbGQzKCkgPT0gTm9Ob2RlKTsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKQEAgLTEz
NzQsNiArMTM4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5v
ZGUuY2hpbGQyKCkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJh
eShiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hp
bGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIApAQCAtMTQzOCw2
ICsxNDU4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVy
YW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworCisgICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMsIGJhc2UpOwogICAgICAgICAKQEAgLTE5OTksNiArMjAyNSwyMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgR2V0Qnl0ZUFycmF5TGVuZ3RoOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAor
ICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9y
YWdlKCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSksIHJlc3VsdEdQUik7
CisgICAgICAgIAorICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5v
ZGUuZnVuY3Rpb24oKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGFhNWU4NGM1YTIxNWE3NmVjMDIyY2VmZmZhZjcwMWEx
ZjU5MTVjMmMuLjYzN2U1OWJiMDU2YzRmZDdiZDMyYjkwOGM1YzA0ZjgyZjNkMjIxZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1
bGF0aXZlSklULmgiCiAKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTg3Myw2ICs4NzUs
MTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CiAgICAg
ICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihu
b2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEo
KSk7CisgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CisgICAgICAgICAg
ICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIs
IEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOworICAgICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRp
Y3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVy
YW5kIGJvb2xlYW4odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9y
ZVB0cihib29sZWFuLmdwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkp
KTsKQEAgLTE0NDYsNiArMTQ1NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAgICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXkobm9kZSk7CisgICAgICAgICAgICBpZiAoIW1f
Y29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQobm9kZS5jaGlsZDMoKSA9
PSBOb05vZGUpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHko
dGhpcywgbm9kZS5jaGlsZDIoKSk7CkBAIC0xNDk4LDYgKzE1MTQsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCks
IG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAKQEAgLTE1MDksNyArMTUzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIGlmICghbV9jb21waWxl
T2theSkKICAgICAgICAgICAgIHJldHVybjsKLQorICAgICAgICAKICAgICAgICAgd3JpdGVCYXJy
aWVyKGJhc2VSZWcsIHZhbHVlLmdwcigpLCBub2RlLmNoaWxkMygpLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJlZyk7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
IGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0aGluIG1fdmVj
dG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KQEAgLTE1NjMsNiArMTU4NCwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkp
IHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBw
cm9wZXJ0eS5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCkBAIC0yMDgyLDYgKzIxMDgs
MjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBp
bnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIEdldEJ5dGVBcnJheUxlbmd0aDogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgCisgICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNCeXRlQXJyYXk6Om9mZnNl
dE9mU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKCkpLCByZXN1
bHRHUFIpOworCisgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRl
eCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobm9k
ZS5mdW5jdGlvbigpKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmgKaW5kZXggNjYyYzljNzAwODZmOGJkNWU1ZmE0MzI5ODkxYjI3M2M1NWUyMmE2Yi4uMTM3
NzcyYzBlYTZkZDhiNGFhOGM5NTg3YTI0NmM2NGM2MDllYWQwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCkBAIC0xMTAsNiArMTEwLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgfkpTQnl0ZUFycmF5KCk7CiAjZW5kaWYKIAorICAg
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU3RvcmFnZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0J5dGVBcnJheSwgbV9zdG9yYWdlKTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVB
cnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5jcHAKaW5kZXgg
OTEwYWY1OThhOGNjNGExYzEyZGQxOWJiN2YwYWI4MWJjMDcyMmU4NC4uYTYxMDU4MGVjZmY3NjBm
N2FhMTk2Nzc4ZjY2ODliYmI5Yjg0YzUwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9CeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0
ZUFycmF5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQnl0ZUFycmF5LmgiCisKICNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKIAogbmFtZXNw
YWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAppbmRleCA3MDAyMDk2
Y2VhODcwMjMyZDAzODUzYmUyOWMzYjI2ODEzZTY5N2Y1Li4wMDllYzU4NTBjZmU1ODQwYjgzMWZj
NGJmOGVhYjM5NjczYzdlNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKICAgICBjbGFzcyBCeXRlQXJy
YXkgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UgewpAQCAtODQsNiArODUsOSBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXpl
X3Qgc2l6ZSk7CiAKKyAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQnl0ZUFycmF5LCBtX3NpemUpOyB9CisgICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5dGVBcnJheSwg
bV9kYXRhKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXpl
KQogICAgICAgICAgICAgOiBtX3NpemUoc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAppbmRleCA5YWU0OWYxNzdmMzcxMjU5MjgyNDk5
NmFkZWI3MjJmYmUwYWUwN2NkLi4wZjg5ZTkwNTlhYWViNTZkOWMxMDIwMjg4M2FjOTAxODMzYWU3
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAgICAgCiAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEltYWdl
RGF0YSwgaW1hZ2VEYXRhKTsKICAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7
Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBjcGFDbGFzc0luZm8gPSB7ICJDYW52YXNQaXhl
bEFycmF5IiwgJkpTQnl0ZUFycmF5OjpCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNCeXRlQXJyYXkpIH07CisgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBjcGFDbGFz
c0luZm8gPSB7ICJDYW52YXNQaXhlbEFycmF5IiwgJkpTQnl0ZUFycmF5OjpzX2luZm8sIDAsIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNCeXRlQXJyYXkpIH07CiAgICAgU3RydWN0dXJlKiBjcGFT
dHJ1Y3R1cmUgPSBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCAmY3BhQ2xhc3NJ
bmZvKTsKICAgICBpZiAoIWNwYVN0cnVjdHVyZSkKICAgICAgICAgY3BhU3RydWN0dXJlID0gY2Fj
aGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgJmNwYUNsYXNzSW5m
byksICZjcGFDbGFzc0luZm8pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111659</attachid>
            <date>2011-10-19 12:41:58 -0700</date>
            <delta_ts>2011-10-19 14:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70384-20111019124157.patch</filename>
            <type>text/plain</type>
            <size>35346</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDYx
ZThhMGFlMDgxNWRmMjdkNWFjODVhNzA1MzRjMzIxNjMzYWFlOWMuLmY0MTZhYTA0MjI2YzhlY2Zm
NTE3OWZkMWQ2OTU4MWY5YTdmOTk5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDExLTEwLTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBDYW52YXNQaXhlbEFycmF5IGluIHRoZSBERkcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBv
bGQgQ2FudmFzUGl4ZWxBcnJheSBvcHRpbWlzYXRpb25zIHRvIHRoZQorICAgICAgICBERkcuICBU
aGlzIHJlbW92ZXMgdGhlIHJlZ3Jlc3Npb24gc2VlbiBpbiB0aGUgREZHIHdoZW4gdXNpbmcKKyAg
ICAgICAgYSBDUEEuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZURvdWJsZVRvSW50
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wOCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAg
ICAgIChKU0M6OnByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVkaWN0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQnl0ZUFycmF5UHJlZGljdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZHUHJv
cGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9k
ZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBp
bGVDbGFtcERvdWJsZVRvQnl0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgor
ICAgICAgICAoSlNDOjpKU0J5dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKToKKyAgICAgICAgKiB3
dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6CisgICAgICAgIChX
VEY6OkJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKFdURjo6Qnl0ZUFycmF5Ojpv
ZmZzZXRPZkRhdGEpOgorCiAyMDExLTEwLTE5ICBSYWZhZWwgQW50b2dub2xsaSAgPGFudG9nbm9s
bGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gRml4IERTTyBsaW5rYWdlIG9mIGpz
Y19lZmwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDdlODNkMWJmNTg3MjI4YTVmZGQyMjllYTEzMTBhMzE3
NmM5OC4uMjA3MjAyMDRkNWFkZjExYjc1YjIyOTQ0MzAwNWI4ZTM3YzNlM2I3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBDYW52YXNQaXhlbEFycmF5IGluIHRoZSBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBDYW52YXNQ
aXhlbEFycmF5IGluaGVyaXQgZnJvbSBCeXRlQXJyYXkncyBDbGFzc0luZm8gc28KKyAgICAgICAg
Y2FuIGlkZW50aWZ5IGl0IG1vcmUgc2Vuc2libHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKwogMjAxMS0x
MC0xOSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI5Nzg2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlY2E3OGM0ZmQ2
MzQxMzU4MGQ1OGI0ODM4NDdmZWJiM2U2YjgwYjM1Li5kYzU5NGE2M2Y4ODViNTJmN2RhY2Q0OTQx
OGI3NGFjN2VmY2FiZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC01MjcsNiArNTI3LDExIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKC0xMjggPD0gaW1tLm1fdmFsdWUgJiYgaW1tLm1fdmFs
dWUgPCAxMjgpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CiAKIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKQEAgLTY5MSw2ICs2OTYs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA/IE5vdEVx
dWFsIDogRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDgwMDAwMDAwKSk7CiAgICAgfQogCisg
ICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICAv
LyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAn
ZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMy
IGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1
ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBlMDQ5YTJlNmQ1ZmE4MmQ0MTBl
YmNhOWM1ZWYxMWI1ZmVjYjk1NmNiLi4zMTY5NTY0NDlkNzAzOTAxNTVlNzEyNDg3MDJlMzljYTgz
MjU0N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgICAgICBPUF9URVNUX0ViR2Ig
ICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAg
ICAgICAgICAgICA9IDB4ODUsCiAgICAgICAgIE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAg
ICAgPSAweDg3LAorICAgICAgICBPUF9NT1ZfRWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4
OCwKICAgICAgICAgT1BfTU9WX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4ODksCiAgICAg
ICAgIE9QX01PVl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDhCLAogICAgICAgICBPUF9M
RUEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg4RCwKQEAgLTEwODUsNiArMTA4NiwyOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SWIs
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9CisgICAgCisgICAgdm9pZCBtb3ZiX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8gT24gMzItYml0
IHg4NiB3ZSBjYW4gb25seSBzZXQgdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOworICAgICAgICAvLyBl
c3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQorICAgICAgICBpZiAoc3Jj
ID49IDQpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgb3JpZ2luYWxTcmMgPSBzcmM7CisgICAg
ICAgICAgICB4Y2hnbF9ycihzcmMsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIGlm
IChiYXNlID09IFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAgICAgICAgIGJhc2UgPSBzcmM7
CisgICAgICAgICAgICBlbHNlIGlmIChpbmRleCA9PSBYODZSZWdpc3RlcnM6OmVheCkKKyAgICAg
ICAgICAgICAgICBpbmRleCA9IHNyYzsKKyAgICAgICAgICAgIHNyYyA9IFg4NlJlZ2lzdGVyczo6
ZWF4OworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9Q
X01PVl9FYkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKworICAgICAgICAg
ICAgeGNoZ2xfcnIob3JpZ2luYWxTcmMsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDgoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
IAogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtMTk0Myw2
ICsxOTY3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0p
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBv
cGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOworICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4KSB8fCByZWdSZXF1aXJlc1Jl
eChiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9w
OChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBybSkK
ICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rp
b25TaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRU
eXBlLmNwcAppbmRleCA3OWQxYWEzZWI0NmY3NDJlOWYzMjEzMWFlMzQ5YmU1MmUzMDYwZWVlLi43
MzQ3MThhN2ZmMTk2YTVhODg3NDNkMjMwYjMyMTkyZjBiYjgzZmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgogCisj
aW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNs
dWRlIDx3dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIuaD4KIApAQCAtNjYsNiArNjcsMTEgQEAgY29u
c3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpCiAgICAgZWxz
ZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RC
eXRlQXJyYXkpCisgICAgICAgIHB0ci5zdHJjYXQoIkJ5dGVBcnJheSIpOworICAgIGVsc2UKKyAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKICAgICBpZiAodmFsdWUgJiBQcmVkaWN0U3RyaW5n
KQogICAgICAgICBwdHIuc3RyY2F0KCJTdHJpbmciKTsKICAgICBlbHNlCkBAIC0xMTAsNiArMTE2
LDkgQEAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbykKICAgICAKICAgICBpZiAoY2xhc3NJbmZvID09ICZKU1N0cmluZzo6c19p
bmZvKQogICAgICAgICByZXR1cm4gUHJlZGljdFN0cmluZzsKKworICAgIGlmIChjbGFzc0luZm8t
PmlzU3ViQ2xhc3NPZigmSlNCeXRlQXJyYXk6OnNfaW5mbykpCisgICAgICAgIHJldHVybiBQcmVk
aWN0Qnl0ZUFycmF5OwogICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZigmSlNP
YmplY3Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBQcmVkaWN0T2JqZWN0T3RoZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAppbmRleCBlZWI4
Y2ZiNDYwMWNmMDQ3ZWU4ZGIwMTNiNjk0YzE1YzgyZTQ1ZDU3Li5jN2EwODI2YTM3ZmYwZWM3ZWNk
ZTMxMjA2NzFiOTk3ODk3NDkzNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVkaWN0ZWRUeXBlLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiB1aW50MTZfdCBQ
cmVkaWN0ZWRUeXBlOwogc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE5vbmUgICAg
ICAgICAgPSAweDAwMDA7IC8vIFdlIGRvbid0IGtub3cgYW55dGhpbmcgeWV0Lgogc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZpbmFsT2JqZWN0ICAgPSAweDAwMDE7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRmluYWxPYmplY3QuCiBzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0QXJyYXkgICAgICAgICA9IDB4MDAwMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJh
eS4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RCeXRlQXJyYXkgICAgID0gMHgw
MDA0OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0J5dGVBcnJheS4KIHN0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RPYmplY3RPdGhlciAgID0gMHgwMDEwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5Lgogc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVjdE1hc2sgICAgPSAweDAwM2Y7IC8vIEJpdG1h
c2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBz
dGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0U3RyaW5nICAgICAgICA9IDB4MDA0MDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCkBAIC04Myw2ICs4NCwxMSBAQCBpbmxpbmUg
Ym9vbCBpc0FycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2
YWx1ZSA9PSBQcmVkaWN0QXJyYXk7CiB9CiAKK2lubGluZSBib29sIGlzQnl0ZUFycmF5UHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0
Qnl0ZUFycmF5OworfQorCiBpbmxpbmUgYm9vbCBpc0FycmF5T3JPdGhlclByZWRpY3Rpb24oUHJl
ZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISEodmFsdWUgJiAoUHJlZGljdEFycmF5
IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdEFycmF5IHwgUHJlZGljdE90
aGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAppbmRleCA0NjE3OTgyMWEwNjgzYzM5ZWIwM2JlNWNiNDJmNmI1ZDU4NWZlYjJjLi4xM2Q4Njdh
YmNhZDc3OTcyZjEyZmNkNWNiMWQzZTA4ZjcyYzgyNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTEwNSw2ICsxMDUsOCBAQCB2b2lk
IEFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MzIpOwogICAgICAgICBl
bHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEFycmF5KTsKKyAgICAgICAgZWxz
ZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0Qnl0ZUFycmF5KTsKICAgICAg
ICAgZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAg
IHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEJvb2xlYW4pOwogICAg
ICAgICBlbHNlCkBAIC0xODEsNiArMTgzLDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RCeXRlQXJyYXkpOwogICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoUHJlZGljdEJvb2xlYW4pOwogICAgICAgICAKQEAgLTM3NSw2ICszNzksMTIgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RTdHJpbmcpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7CiAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CkBAIC0zODksNiArMzk5LDEyIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUJ5
dGVBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0Qnl0ZUFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmls
dGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZp
bHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7CiAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJy
ZWFrOwpAQCAtNTQwLDExICs1NTYsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RBcnJheSk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdElu
dDMyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgR2V0U3RyaW5n
TGVuZ3RoOgogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3Ry
aW5nKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwogICAg
ICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CisgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOworICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgc3RydWN0dXJlIHNldHMgb2Yg
Y29uc3RhbnRzIChpLmUuIHByb3RvdHlwZXMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCBmOTIzZjAyNGZmZjdiNWY5NWI2MmY5NWU5MjQ4ZTNhNmZlMzhjZGNkLi45NmZjMjBk
ZmIwZWQxNmMyM2QyYmE0ZjMyZDFkYzNjZjFmZDQ4ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtMjY3LDYgKzI2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciog
YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhBcml0aE5vZGVGbGFncyBmbGFncykKICAgICBtYWNybyhQ
dXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAg
bWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFN0
cmluZ0xlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCisgICAgbWFjcm8oR2V0Qnl0ZUFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRNZXRob2QsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja01ldGhvZCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFNjb3BlQ2hhaW4sIE5vZGVS
ZXN1bHRKUykgXApAQCAtOTQyLDYgKzk0MywxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJl
dHVybiBpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKKyAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpCisgICAgeworICAgICAgICByZXR1cm4gISEo
cHJlZGljdGlvbigpICYgUHJlZGljdEJ5dGVBcnJheSk7CisgICAgfQorICAgIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0Fy
cmF5T3JPdGhlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCmluZGV4IGU1ZDdlYTEyZjAzNTFjNWI4YjM5YTQ1MDNh
OWY1ZTI0YmZlNWY3ZDIuLjYxMTY5ODYxNWFhZDMyYTE1ZTM3NmI5M2U4NmUwNGJhOTE2NGI3Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcApAQCAtNTYx
LDYgKzU2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYWx1ZVRv
RG91YmxlOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEJ5
dGVBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6IHsKICAgICAgICAg
ICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9m
IGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwg
d2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpAQCAtNzM0LDE3ICs3MzUsMjUgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBib29sIGlzQXJyYXkgPSBpc0Fy
cmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGlmICghaXNBcnJheSAmJiAhaXNT
dHJpbmcpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBib29sIGlzQnl0ZUFy
cmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKTsK
ICAgICAgICAgICAgIGlmICghaXNJbnQzMlByZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJbmRl
eF0ucHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlm
ICghaXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5KQorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKG5vZGUuaWRl
bnRpZmllck51bWJlcigpKSAhPSBtX2dsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICAgICAgcHJpbnRmKCIgIEAldSAtPiAlcyIs
IG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6ICJHZXRTdHJpbmdM
ZW5ndGgiKTsKICNlbmRpZgotICAgICAgICAgICAgbm9kZS5vcCA9IGlzQXJyYXkgPyBHZXRBcnJh
eUxlbmd0aCA6IEdldFN0cmluZ0xlbmd0aDsKKyAgICAgICAgICAgIGlmIChpc0FycmF5KQorICAg
ICAgICAgICAgICAgIG5vZGUub3AgPSBHZXRBcnJheUxlbmd0aDsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGlzU3RyaW5nKQorICAgICAgICAgICAgICAgIG5vZGUub3AgPSBHZXRTdHJpbmdMZW5ndGg7
CisgICAgICAgICAgICBlbHNlIGlmIChpc0J5dGVBcnJheSkKKyAgICAgICAgICAgICAgICBub2Rl
Lm9wID0gR2V0Qnl0ZUFycmF5TGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMTMxMCw2ICsxMzE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0aE1heDoKICAgICAgICAgY2FzZSBBcml0aFNx
cnQ6CisgICAgICAgIGNhc2UgR2V0Qnl0ZUFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldENh
bGxlZToKICAgICAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCAwMmUwNzBiZDJmMGNlNDI4ZTBjOWY4NTU3ZmUxMjI2N2JhZTM1MWZiLi42NTFm
YTA2NTJhYTkxNDYwOWUxNjFmM2U0NmRiZWU1ZWRjMzFiOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKKyNp
bmNsdWRlICJKU0J5dGVBcnJheS5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTM4Myw2
ICszODQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2sobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVt
cC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAgICAgICAgfSBl
bHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CkBAIC0z
OTgsNiArNDA0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygp
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICB9IGVsc2UgaWYgKGlzQnl0
ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRh
Z0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2sobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRl
QXJyYXlWUHRyKSkpOwogICAgICAgICB9IC8vIEZJWE1FOiBuZWVkIGJvb2xlYW4gcHJlZGljdGlv
bnMsIGJ1dCB3ZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSB0aGF0IHN1cHBvcnQuCiAjZW5kaWYKICAg
ICB9CkBAIC02NDAsNiArNjUyLDEyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVUb0ludDMyKE5vZGUmIG5vZGUpCiAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1f
Y29tcGlsZUluZGV4LCBvcDEuZm9ybWF0KCkpOwogfQogCitzdGF0aWMgdm9pZCBjb21waWxlQ2xh
bXBEb3VibGVUb0J5dGUoSklUQ29tcGlsZXImIGppdCwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHNv
dXJjZSwgRlBSUmVnIHNjcmF0Y2gpCit7CisgICAgLy8gVW5vcmRlcmVkIGNvbXBhcmUgc28gd2Ug
cGljayB1cCBOYU4KKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAwOworICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgYnl0ZU1heCA9IDI1NTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGhh
bGYgPSAwLjU7CisgICAgaml0LmxvYWREb3VibGUoJnplcm8sIHNjcmF0Y2gpOworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHRvb1NtYWxsID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIHNvdXJjZSwgc2NyYXRjaCk7Cisg
ICAgaml0LmxvYWREb3VibGUoJmJ5dGVNYXgsIHNjcmF0Y2gpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHRvb0JpZyA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdy
ZWF0ZXJUaGFuLCBzb3VyY2UsIHNjcmF0Y2gpOworICAgIAorICAgIGppdC5sb2FkRG91YmxlKCZo
YWxmLCBzY3JhdGNoKTsKKyAgICBqaXQuYWRkRG91YmxlKHNvdXJjZSwgc2NyYXRjaCk7CisgICAg
aml0LnRydW5jYXRlRG91YmxlVG9JbnQzMihzY3JhdGNoLCByZXN1bHQpOyAgIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHRydW5jYXRlZEludCA9IGppdC5qdW1wKCk7CisgICAgCisgICAgdG9v
U21hbGwubGluaygmaml0KTsKKyAgICBqaXQueG9yUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCB6ZXJvZWQgPSBqaXQuanVtcCgpOworICAgIAorICAgIHRvb0Jp
Zy5saW5rKCZqaXQpOworICAgIGppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMjU1
KSwgcmVzdWx0KTsKKyAgICAKKyAgICB0cnVuY2F0ZWRJbnQubGluaygmaml0KTsKKyAgICB6ZXJv
ZWQubGluaygmaml0KTsKKworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYgbm9kZSkK
K3sKKyAgICBOb2RlSW5kZXggYmFzZUluZGV4ID0gbm9kZS5jaGlsZDEoKTsKKyAgICBOb2RlSW5k
ZXggdmFsdWVJbmRleCA9IG5vZGUuY2hpbGQzKCk7CisgICAgCisgICAgaWYgKCFpc0J5dGVBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGJhc2VJbmRleCkubV90eXBlKSkKKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgR1BSVGVt
cG9yYXJ5IHZhbHVlOworICAgIEdQUlJlZyB2YWx1ZUdQUjsKKworICAgIGlmIChhdCh2YWx1ZUlu
ZGV4KS5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpT
Q29uc3RhbnQodmFsdWVJbmRleCk7CisgICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKSB7
CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbigpOworICAgICAgICAg
ICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGRvdWJsZSBkID0ganNWYWx1ZS5hc051bWJlcigpOworICAgICAgICBkICs9
IDAuNTsKKyAgICAgICAgaWYgKCEoZCA+IDApKQorICAgICAgICAgICAgZCA9IDA7CisgICAgICAg
IGVsc2UgaWYgKGQgPiAyNTUpCisgICAgICAgICAgICBkID0gMjU1OworICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNo
LmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKChpbnQpZCksIHNjcmF0Y2hSZWcpOwor
ICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBzY3JhdGNo
UmVnOworICAgIH0gZWxzZSBpZiAoIWF0KHZhbHVlSW5kZXgpLnNob3VsZE5vdFNwZWN1bGF0ZUlu
dGVnZXIoKSkgeworICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCB2YWx1ZU9wKHRoaXMs
IHZhbHVlSW5kZXgpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBtX2ppdC5tb3Zl
KHZhbHVlT3AuZ3ByKCksIHNjcmF0Y2hSZWcpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWws
IHNjcmF0Y2hSZWcsIFRydXN0ZWRJbW0zMigweGZmKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHRvb0JpZyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhh
biwgc2NyYXRjaFJlZywgVHJ1c3RlZEltbTMyKDB4ZmYpKTsKKyAgICAgICAgbV9qaXQueG9yUHRy
KHNjcmF0Y2hSZWcsIHNjcmF0Y2hSZWcpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBj
bGFtcGVkID0gbV9qaXQuanVtcCgpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigy
NTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgY2xhbXBlZC5saW5rKCZtX2ppdCk7CisgICAgICAg
IGluQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgdmFsdWUuYWRvcHQoc2NyYXRjaCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gc2NyYXRjaFJlZzsKKyAgICB9IGVsc2UgeworICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVJbmRleCk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEZQUlRlbXBvcmFyeSBmbG9hdFNjcmF0
Y2godGhpcyk7CisgICAgICAgIEZQUlJlZyBmcHIgPSB2YWx1ZU9wLmZwcigpOworICAgICAgICBH
UFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOworICAgICAgICBjb21waWxlQ2xhbXBEb3VibGVUb0J5
dGUobV9qaXQsIGdwciwgZnByLCBmbG9hdFNjcmF0Y2guZnByKCkpOworICAgICAgICB2YWx1ZS5h
ZG9wdChyZXN1bHQpOworICAgICAgICB2YWx1ZUdQUiA9IGdwcjsKKyAgICB9CisgICAgQVNTRVJU
KHZhbHVlR1BSICE9IHByb3BlcnR5KTsKKyAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBz
dG9yYWdlLmdwcigpOworICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBzdG9yYWdlUmVnKTsKKyAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQnl0ZUFycmF5Ojpv
ZmZzZXRPZlN0b3JhZ2UoKSksIHN0b3JhZ2VSZWcpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG91dE9mQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ5dGVBcnJh
eTo6b2Zmc2V0T2ZTaXplKCkpKTsKKyAgICBtX2ppdC5zdG9yZTgodmFsdWUuZ3ByKCksIE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHksIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc09uZSwgQnl0ZUFycmF5OjpvZmZzZXRPZkRhdGEoKSkpOworICAgIG91dE9mQm91bmRz
LmxpbmsoJm1faml0KTsKKyAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFycmF5KE5vZGUmIG5vZGUpCit7
CisgICAgQVNTRVJUKG5vZGUuY2hpbGQzKCkgPT0gTm9Ob2RlKTsKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAKKyAgICBHUFJS
ZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgCisgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOworCisgICAgLy8gTG9hZCB0aGUgY2hhcmFj
dGVyIGludG8gc2NyYXRjaFJlZworICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAg
IEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQnl0ZUFycmF5OjpvZmZzZXRPZlN0b3Jh
Z2UoKSksIHN0b3JhZ2VSZWcpOworICAgIAorICAgIC8vIHVuc2lnbmVkIGNvbXBhcmlzb24gc28g
d2UgY2FuIGZpbHRlciBvdXQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgaW5kaWNlcyB0aGF0IGFyZSB0
b28gbGFyZ2UKKyAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSkpOworCisgICAgbV9qaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzT25lLCBCeXRlQXJyYXk6Om9mZnNldE9mRGF0YSgpKSwgc3RvcmFn
ZVJlZyk7CisgICAgaW50ZWdlclJlc3VsdChzdG9yYWdlUmVnLCBtX2NvbXBpbGVJbmRleCk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMGE5OTE3YzJjOTBiYjAwZDk1
YTYyOTIwNWU0M2MzMTU4YzFkODVjNS4uNmFkOGM4NWE3YjdjNzUzNjMxM2ZmN2ViYWFmYzNjM2M1
NDFkZDQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtNDQ5LDYgKzQ0OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0Q2hh
ckNvZGVBdChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlJik7
CiAgICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVH
ZXRCeVZhbE9uQnl0ZUFycmF5KE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckJ5
dGVBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlJik7CiAgICAgCiAgICAg
Ly8gSXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIHN0cnVjdHVyZSBiZSBlcXVhbCB0byBzY3JhdGNo
LCBzbyBsb25nIGFzIHlvdSdyZSBmaW5lCiAgICAgLy8gd2l0aCB0aGUgc3RydWN0dXJlIEdQUiBi
ZWluZyBjbG9iYmVyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBjNzIxMDU4OTEyMGQ2OTBiMjM1YmRhMmRhNDhj
OWU2ZDk3NzMzZDJiLi40ZTdiOWUyNjJjZDcyODFjNmM3M2RiNDY5NjJlOTcwYzFhZTM2MmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiSlNCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJERkdKSVRDb21waWxlcklubGluZU1ldGhv
ZHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNzQ3LDYgKzc0OCwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKICAgICAg
ICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5v
ZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAg
ICAgICB9IGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewor
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKKyAgICAgICAgICAg
IGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Vs
bEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwg
SklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSB7IC8vIEZJWE1FOiBBZGQgQm9v
bGVhblByZWRpY3Rpb24gaGFuZGxpbmcKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5w
YXlsb2FkR1BSKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwpAQCAt
MTMxOCw2ICsxMzI2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUJ5dGVBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkJ5dGVBcnJheShu
b2RlKTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChub2RlLmNoaWxkMygpID09IE5vTm9kZSk7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CkBAIC0xMzc0LDYgKzEzODksMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsK
KyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgp
KSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwg
cHJvcGVydHkuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKQEAgLTE0MzgsNiArMTQ1OCwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5j
aGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBub2RlLmNoaWxkMigpKTsKKworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZv
ckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzLCBiYXNl
KTsKICAgICAgICAgCkBAIC0xOTk5LDYgKzIwMjUsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEJ5dGVBcnJheUxlbmd0aDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICAKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgaWYgKCFp
c0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5
VlB0cikpKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNCeXRlQXJyYXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXplKCkpLCByZXN1bHRHUFIpOworICAgICAgICAKKyAg
ICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGZ1
bmN0aW9uLmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihub2RlLmZ1bmN0aW9uKCkp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCBhYTVlODRjNWEyMTVhNzZlYzAyMmNlZmZmYWY3MDFhMWY1OTE1YzJjLi42Mzdl
NTliYjA1NmM0ZmQ3YmQzMmI5MDhjNWMwNGY4MmYzZDIyMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI2LDYgKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgog
CisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKwogI2lmIEVOQUJMRShERkdfSklUKQogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC04NzMsNiArODc1LDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7
CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAg
ICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOworICAgICAgICAgICAgaWYgKCFpc0J5dGVB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQ
dHIpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKICAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBib29sZWFuKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYm9vbGVhbi5n
cHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CkBAIC0xNDQ2LDYg
KzE0NTUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbE9uQnl0ZUFycmF5KG5vZGUpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAor
ICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKG5vZGUuY2hpbGQzKCkgPT0gTm9Ob2RlKTsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hp
bGQyKCkpOwpAQCAtMTQ5OCw2ICsxNTE0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJv
cGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5
VmFsRm9yQnl0ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwogCkBAIC0xNTA5LDcgKzE1MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0KKyAgICAgICAgCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlUmVnLCB2
YWx1ZS5ncHIoKSwgbm9kZS5jaGlsZDMoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3Ms
IHNjcmF0Y2hSZWcpOwogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwg
YW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rv
ckxlbmd0aCkuCkBAIC0xNTYzLDYgKzE1ODQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCks
IG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIApAQCAtMjA4Miw2ICsyMTA4LDI0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgaW50ZWdlclJlc3VsdChy
ZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAg
Y2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghaXNCeXRlQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5
dGVBcnJheVZQdHIpKSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQnl0ZUFycmF5OjpvZmZzZXRPZlN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSwgcmVzdWx0R1BSKTsKKworICAg
ICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVu
Y3Rpb24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUuZnVuY3Rpb24oKSkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IDAy
YzVhODk2YjJlNDc4NDc5MmU3ZGQzMTk0YTIwZGY5MzBhOGExNDEuLjMzNzA0MTA3YjkzYTgxYWEz
ODUyZDdjYmE3OTM0MWMwOWVkODE3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCeXRlQXJyYXkuaApAQCAtMTEwLDYgKzExMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIH5KU0J5dGVBcnJheSgpOwogI2VuZGlmCiAKKyAgICAgICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCeXRlQXJy
YXksIG1fc3RvcmFnZSk7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuY3BwCmluZGV4IDkxMGFmNTk4YThjYzRh
MWMxMmRkMTliYjdmMGFiODFiYzA3MjJlODQuLmE2MTA1ODBlY2ZmNzYwZjdhYTE5Njc3OGY2Njg5
YmJiOWI4NGM1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVBcnJh
eS5oIgorCiAjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKaW5kZXggNzAwMjA5NmNlYTg3MDIzMmQwMzg1
M2JlMjljM2IyNjgxM2U2OTdmNS4uMDA5ZWM1ODUwY2ZlNTg0MGI4MzFmYzRiZjhlYWIzOTY3M2M3
ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAgICAgY2xhc3MgQnl0ZUFycmF5IDogcHVibGljIFJl
ZkNvdW50ZWRCYXNlIHsKQEAgLTg0LDYgKzg1LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCisg
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEJ5dGVBcnJheSwgbV9zaXplKTsgfQorICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
RGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeXRlQXJyYXksIG1fZGF0YSk7IH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkKICAgICAgICAgICAg
IDogbV9zaXplKHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
RGF0YUN1c3RvbS5jcHAKaW5kZXggOWFlNDlmMTc3ZjM3MTI1OTI4MjQ5OTZhZGViNzIyZmJlMGFl
MDdjZC4uMGY4OWU5MDU5YWFlYjU2ZDljMTAyMDI4ODNhYzkwMTgzM2FlNzljYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEqIGltYWdlRAogICAgIAogICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBJbWFnZURhdGEsIGltYWdlRGF0
YSk7CiAgICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCAiZGF0YSIpOwotICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2FudmFzUGl4ZWxBcnJheSIsICZKU0J5
dGVBcnJheTo6QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQnl0ZUFy
cmF5KSB9OworICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gY3BhQ2xhc3NJbmZvID0geyAiQ2Fu
dmFzUGl4ZWxBcnJheSIsICZKU0J5dGVBcnJheTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTQnl0ZUFycmF5KSB9OwogICAgIFN0cnVjdHVyZSogY3BhU3RydWN0dXJlID0gZ2V0
Q2FjaGVkRE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgJmNwYUNsYXNzSW5mbyk7CiAgICAgaWYg
KCFjcGFTdHJ1Y3R1cmUpCiAgICAgICAgIGNwYVN0cnVjdHVyZSA9IGNhY2hlRE9NU3RydWN0dXJl
KGdsb2JhbE9iamVjdCwgSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwganNOdWxsKCksICZjcGFDbGFzc0luZm8pLCAmY3BhQ2xhc3NJ
bmZvKTsK
</data>
<flag name="review"
          id="109544"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>