<?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>91337</bug_id>
          
          <creation_ts>2012-07-15 00:06:21 -0700</creation_ts>
          <short_desc>DFG PutById transition should handle storage allocation, and inline it</short_desc>
          <delta_ts>2012-07-16 15:18:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669935</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-15 00:06:21 -0700</bug_when>
    <thetext>Work in progress patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669936</commentid>
    <comment_count>1</comment_count>
      <attachid>152452</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-15 00:12:12 -0700</bug_when>
    <thetext>Created attachment 152452
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670019</commentid>
    <comment_count>2</comment_count>
      <attachid>152465</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-15 15:33:30 -0700</bug_when>
    <thetext>Created attachment 152465
more!

Most likely doesn&apos;t compile at this point.  The scaffolding is mostly done.  Now it&apos;s time to actually write the fast paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670026</commentid>
    <comment_count>3</comment_count>
      <attachid>152467</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-15 17:59:03 -0700</bug_when>
    <thetext>Created attachment 152467
it&apos;s starting to work

It works for very simple programs.  Haven&apos;t tried the bigger ones yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670129</commentid>
    <comment_count>4</comment_count>
      <attachid>152487</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-15 23:57:27 -0700</bug_when>
    <thetext>Created attachment 152487
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670133</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 00:01:45 -0700</bug_when>
    <thetext>Attachment 152487 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/dfg/DFGGPRInfo.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGRegisterSet.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 19 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>670136</commentid>
    <comment_count>6</comment_count>
      <attachid>152489</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-16 00:07:39 -0700</bug_when>
    <thetext>Created attachment 152489
the patch

Fixed style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670156</commentid>
    <comment_count>7</comment_count>
      <attachid>152489</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-16 00:30:32 -0700</bug_when>
    <thetext>Comment on attachment 152489
the patch

Attachment 152489 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13253196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670157</commentid>
    <comment_count>8</comment_count>
      <attachid>152489</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-16 00:32:19 -0700</bug_when>
    <thetext>Comment on attachment 152489
the patch

Attachment 152489 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13253198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670161</commentid>
    <comment_count>9</comment_count>
      <attachid>152489</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-16 00:37:48 -0700</bug_when>
    <thetext>Comment on attachment 152489
the patch

Attachment 152489 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13238862</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670538</commentid>
    <comment_count>10</comment_count>
      <attachid>152580</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-16 12:01:52 -0700</bug_when>
    <thetext>Created attachment 152580
the patch

Fix build on gcc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670701</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-16 15:08:44 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/122768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670703</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-16 15:12:39 -0700</bug_when>
    <thetext>This patch broke builds:
http://build.webkit.org/builders/Apple%20SnowLeopard%20Debug%20%28Build%29/builds/1455/steps/compile-webkit/logs/stdio
In file included from /Volumes/Data/slave/snowleopard-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.h:65:
In file included from /Volumes/Data/slave/snowleopard-debug/build/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:28:
/Volumes/Data/slave/snowleopard-debug/build/Source/JavaScriptCore/bytecode/StructureStubInfo.h:34:10: fatal error: &apos;DFGRegisterSet.h&apos; file not found [2]
 #include &quot;DFGRegisterSet.h&quot;
          ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670704</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-16 15:13:21 -0700</bug_when>
    <thetext>Qt
http://build.webkit.org/builders/Qt%20Windows%2032-bit%20Debug/builds/46297/steps/compile-webkit/logs/stdio
In file included from /home/webkitbuildbot/slaves/windowsCrossDebug/buildslave/qt-windows-32bit-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.h:65:0,
                 from /home/webkitbuildbot/slaves/windowsCrossDebug/buildslave/qt-windows-32bit-debug/build/Source/JavaScriptCore/API/JSCallbackFunction.cpp:31:
/home/webkitbuildbot/slaves/windowsCrossDebug/buildslave/qt-windows-32bit-debug/build/Source/JavaScriptCore/bytecode/StructureStubInfo.h:34:28: fatal error: DFGRegisterSet.h: No such file or directory
compilation terminated.

GTK:
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release/builds/26527/steps/compile-webkit/logs/stdio

make: *** No rule to make target `Source/JavaScriptCore/dfg/DFGRegisterSet.h&apos;, needed by `DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h&apos;.  Stop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670706</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-16 15:14:19 -0700</bug_when>
    <thetext>It appears that you forgot svn add DFGRegisterSet.h and DFGScratchRegisterAllocator.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670711</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-16 15:18:01 -0700</bug_when>
    <thetext>Added forgotten files in http://trac.webkit.org/changeset/122771</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152452</attachid>
            <date>2012-07-15 00:12:12 -0700</date>
            <delta_ts>2012-07-15 15:33:30 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>dfgtransition_patch_1.diff</filename>
            <type>text/plain</type>
            <size>26480</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTA3LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFB1dEJ5SWQgdHJhbnNpdGlvbiBzaG91bGQgaGFuZGxlIHN0b3JhZ2UgYWxsb2NhdGlvbiwg
YW5kIGlubGluZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTEzMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLiBTbyBmYXIgSSBqdXN0IGltcGxlbWVudGVkIHRoZSBzY2Fm
Zm9sZGluZyBmb3IgYmVpbmcgYWJsZQorICAgICAgICB0byBlbWl0IHNsb3cgcGF0aCBjYWxscyBm
cm9tIHN0dWJzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAg
ICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgor
ICAgICAgICAoUHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3Rl
ckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OmlzSW5Vc2UpOgorICAg
ICAgICAoUmVnaXN0ZXJCYW5rKToKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJTZXQuaDogQWRk
ZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAoUmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlND
OjpERkc6OlJlZ2lzdGVyU2V0OjpSZWdpc3RlclNldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVn
aXN0ZXJTZXQ6OmFzUE9EKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6c2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlJlZ2lzdGVyU2V0OjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0Ojpn
ZXRHUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0RnJlZUdQ
Uik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmdldEZQUkJ5SW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldFJlZ2lzdGVycyk6CisgICAg
ICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEJpdCk6CisgICAgICAgIChKU0M6OkRGRzo6
UmVnaXN0ZXJTZXQ6OmNsZWFyQml0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6
Z2V0Qml0KToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5
Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToK
KyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpE
Rkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnVzZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0w
Ny0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBQdXRC
eVZhbCBvcGNvZGVzIHNob3VsZCBhY2NlcHQgbW9yZSB0aGFuIDMgb3BlcmFuZHMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjI2Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDYgKzIxNiw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVkdW5kYW50UGhpRWxpbWluYXRpb25QaGFzZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVkdW5kYW50UGhpRWxpbWluYXRp
b25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0LmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUmVwYXRjaC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nj
b3JlQm9hcmQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsNyBAQAogCQkw
Rjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzMxNUFF
MjUzNTAwOEYzNjNFIC8qIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc2NkQzODE1QUU0QTFDMDA4
RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4RjM2
M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGNzY2
RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNzE1
QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzY2RDQ0MTVC
MkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1Jl
Z2lzdGVyU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5MTE0MDJG
RjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY3QjI5NEExNEMz
Q0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERGR0ND
YWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJD
MkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk1LDYgKzg5Niw3IEBACiAJCTBGNzY2RDMzMTVB
RTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyU2V0Lmg7IHBhdGgg
PSBkZmcvREZHUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3
NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNE
QjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NDYWxsSGVscGVycy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMwNCw2ICsyMzA2LDcgQEAKIAkJCQkwQTQzMzdCQTE1
MDYyMTg4MDA5OTFDOTUgLyogREZHUmVkdW5kYW50UGhpRWxpbWluYXRpb25QaGFzZS5jcHAgKi8s
CiAJCQkJMEE0MzM3QkQxNTA2MjE5QjAwOTkxQzk1IC8qIERGR1JlZHVuZGFudFBoaUVsaW1pbmF0
aW9uUGhhc2UuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0
ZXJCYW5rLmggKi8sCisJCQkJMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVy
U2V0LmggKi8sCiAJCQkJODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3Bw
ICovLAogCQkJCTg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi8sCiAJ
CQkJODZFQ0EzRjkxMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLywKQEAgLTI4
NTAsNiArMjg1Myw3IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyog
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzkx
NUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCkBAIC0yMTIsNyArMjEzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAg
ICAgaW50OF90IHZhbHVlVGFnR1BSOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgaW50OF90IHZh
bHVlR1BSOwotICAgICAgICAgICAgICAgIGludDhfdCBzY3JhdGNoR1BSOworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0UE9EIHVzZWRSZWdpc3RlcnM7Cisj
ZW5kaWYKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvRG9uZTsKICAgICAgICAg
ICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQ7CiAgICAgICAgICAgICAgICAg
aW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTIgQEAK
ICNpZm5kZWYgREZHR1BSSW5mb19oCiAjZGVmaW5lIERGR0dQUkluZm9faAogCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgPGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oPgotI2luY2x1ZGUgPGRmZy9ERkdSZWdpc3RlckJhbmsuaD4K
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyQmFuay5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0IKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3Byb3BlcnR5
QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVH
UFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKICNlbmRpZgotICAgICAgICBp
bmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fc2NyYXRj
aEdQUjsKKyAgICAgICAgaW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyA9IG1fcHJvcGVydHlB
Y2Nlc3Nlc1tpXS5tX3VzZWRSZWdpc3RlcnMuYXNQT0QoKTsKICAgICAgICAgaW5mby5wYXRjaC5k
ZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lzdGVyTW9k
ZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdHUFJJbmZv
LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIK
KyNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKQEAgLTE2Nyw5
ICsxNjgsOSBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsQ29tcGFjdCBsb2FkT3JTdG9yZSwKICAgICAgICAgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoR2VuZXJhdG9yLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgZG9uZSwKLSAgICAgICAgaW50OF90IGJhc2VHUFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQ
UiwKICAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVn
aXN0ZXJzSW5Vc2UpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIFByb3BlcnR5QWNjZXNz
UmVjb3JkKApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7
CiAgICAgICAgIGludDhfdCBiYXNlR1BSLAogICAgICAgICBpbnQ4X3QgdmFsdWVUYWdHUFIsCiAg
ICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAg
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1v
ZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZW5kaWYKICAgICAgICAgOiBtX2Nv
ZGVPcmlnaW4oY29kZU9yaWdpbikKQEAgLTIwNCw3ICsyMDUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQgewogICAgICAgICAsIG1fdmFsdWVUYWdHUFIodmFsdWVUYWdHUFIpCiAjZW5k
aWYKICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQotICAgICAgICAsIG1fc2NyYXRjaEdQ
UihzY3JhdGNoR1BSKQorICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQog
ICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkKICAgICB7CiAgICAgfQpAQCAt
MjI2LDcgKzIyNyw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgaW50OF90
IG1fdmFsdWVUYWdHUFI7CiAjZW5kaWYKICAgICBpbnQ4X3QgbV92YWx1ZUdQUjsKLSAgICBpbnQ4
X3QgbV9zY3JhdGNoR1BSOworICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBS
ZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyNiw2ICsyMjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFtZUF0SW5kZXgoQmFu
a0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNJblVzZShSZWdJ
RCByZWcpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNMb2NrZWRBdEluZGV4KHJlZykg
fHwgbmFtZShyZWcpICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXI7CisgICAgfQorICAgIAogI2lm
bmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgREZHUmVnaXN0ZXJTZXRfaAorI2RlZmluZSBERkdSZWdpc3RlclNldF9oCisKKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAi
REZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkRGR0ZQUkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvQml0
bWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMgPQorICAgIEdQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7CisKK3R5cGVkZWYgdWludDhf
dCBSZWdpc3RlclNldFBPRFt0b3RhbE51bWJlck9mUmVnaXN0ZXJzXTsKKworY2xhc3MgUmVnaXN0
ZXJTZXQgeworcHVibGljOgorICAgIFJlZ2lzdGVyU2V0KCkKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspCisgICAgICAgICAgICBt
X3NldFtpXSA9IDA7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVyU2V0KGNvbnN0IFJlZ2lzdGVy
U2V0UE9EJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc2V0ID0gb3RoZXI7CisgICAgfQorICAg
IAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0UE9EJiBhc1BPRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
OyB9CisgICAgCisgICAgdm9pZCBzZXQoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIHNldEJp
dChHUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKEdQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBjbGVhckJpdChHUFJJbmZvOjp0b0luZGV4KHJlZykp
OworICAgIH0KKyAgICAKKyAgICBib29sIGdldChHUFJSZWcgcmVnKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdldEJpdChHUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAK
KyAgICBib29sIGdldEdQUkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaW5kZXggPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAg
IHJldHVybiBnZXRCaXQoaW5kZXgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ2V0RnJlZUdQ
UigpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZwOjpudW1i
ZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKGdldEdQUkJ5SW5kZXgoaSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorICAgIAorICAgIHZvaWQg
c2V0KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNsZWFyKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBjbGVhckJpdChHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyArIEZQUkluZm86OnRvSW5kZXgocmVnKSk7CisgICAgfQorICAgIAorICAg
IGJvb2wgZ2V0KEZQUlJlZyByZWcpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0Qml0
KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBnZXRGUFJCeUluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMp
OworICAgICAgICByZXR1cm4gZ2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaW5k
ZXgpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNv
bnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB0b3RhbE51Ym1lck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBp
ZiAoIWdldEJpdChpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJl
c3VsdCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICB2b2lkIHNldEJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSB8
PSAoMSA8PCAoaSAmIDcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhckJpdCh1bnNpZ25l
ZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsK
KyAgICAgICAgbV9zZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7CisgICAgfQorICAgIAor
ICAgIGJvb2wgZ2V0Qml0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
aSA8IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gISEobV9zZXRbaSA+
PiAzXSAmICgxIDw8IChpICYgNykpKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXRQT0Qg
bV9zZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1JlZ2lzdGVyU2V0X2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1
YgogICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZv
LnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
c3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcu
c2NyYXRjaEdQUik7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5m
by5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRv
UmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAKICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7CkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRC
eUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNo
LmRmZy52YWx1ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8
R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7CisgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMp
LmdldEZyZWVHUFIoKTsKICAgICAgICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNl
OwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKQEAgLTM4NCw3ICsz
ODQsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAg
IEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNo
LmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0
YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRm
Zy5zY3JhdGNoR1BSKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChz
dHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUikuZ2V0RnJlZUdQUigpOwogICAgICAgICAKICAg
ICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAg
ICAgCkBAIC02MjksNyArNjI5LDcgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAog
ICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0
Y2guZGZnLnZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnNjcmF0
Y2hHUFIpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0
Y2guZGZnLnNjcmF0Y2hHUFIpLmdldEZyZWVHUFIoKTsKICAgICBib29sIG5lZWRUb1Jlc3RvcmVT
Y3JhdGNoID0gZmFsc2U7CiAjaWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JBUlJJRVJf
UFJPRklMSU5HKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSMjsKQEAgLTcyMiw3ICs3MjIsNyBAQCBz
dGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BS
ID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwog
I2VuZGlmCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUikuZ2V0
RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAg
ICAgICAgIAogICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IGJhc2VHUFIpOwpAQCAtNzYwLDYgKzc2
MCwyNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgU3BlY3VsYXRp
dmVKSVQ6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogICAgIHN0dWJKaXQucG9wKHNjcmF0
Y2gyKTsKICNlbmRpZgorICAgIAorICAgIC8vIFdhbnQgdG8gZW1pdCBjb2RlIHRvIGFsbG9jYXRl
IHByb3BlcnR5IHN0b3JhZ2UuIFRyeSBzb21lIGZhc3QgcGF0aCBmaXJzdC4gSWYgdGhhdAorICAg
IC8vIGZhaWxzLCBiYWlsIGFsbCB0aGUgd2F5IHRvIHRoZSBvcmlnaW5hbCBzbG93IHBhdGgsIHNp
bmNlIHRoYXQga25vd3MgaG93IHRvIHNhdmUKKyAgICAvLyBhbmQgcmVzdG9yZSByZWdpc3RlcnMu
IElkZWFsbHkgd2Ugd2FudCB0bzoKKyAgICAvLyAxKSBMb2FkIGJ1bXAgcG9pbnRlcgorICAgIC8v
IDIpIEFkZCBzb21ldGhpbmcgdG8gaXQKKyAgICAvLyAzKSBDb21wYXJlIGFnYWluc3QgdGhlIGxp
bWl0CisgICAgLy8gNCkgU3VidHJhY3QgYmFjayBkb3duCisgICAgLy8gNSkgU3RvcmUgaXQgdG8g
dGhlIG9iamVjdC4KKyAgICAvLworICAgIC8vIEJ1dCB0aGF0IG1lYW5zOgorICAgIC8vIEEpIEkg
bmVlZCBhIGxpbWl0LgorICAgIC8vIEIpIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgYmxvY2sg
d29uJ3QgYmUgdGhlIGxhc3Qgb25lIGluIG1lbW9yeS4KKyAgICAvLworICAgIC8vIE9yIEkgY291
bGQgdXNlIERhbmllbCdzIGFsZ29yaXRobS4gVGhlIGJ1bXAgaXMgdGhlIHJlbWFpbmluZyBtZW1v
cnkuIFRoZW46CisgICAgLy8gMSkgTG9hZCBidW1wIGxpbWl0CisgICAgLy8gMikgU3VidHJhY3Qg
d2hhdCBJIHdhbnQKKyAgICAvLyAzKSBGYWlsIGlmIG5lZ2F0aXZlCisgICAgLy8gNCkgU3RvcmUg
aXQgYmFjaworICAgIC8vIDUpIFN1YnRyYWN0IGl0IGZyb20gdGhlIGJsb2NrIGJhc2UKKyAgICAv
LyA2KSBBZGQgd2hhdCBJIHdhbnQgcGx1cyBibG9jayBzaXplCiAKICAgICBzdHViSml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTIsNyArNDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50Mwog
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6
UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwpAQCAt
NTIwLDEzICs1MjAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVP
CiAgICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwg
c3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwg
bG9hZFdpdGhQYXRjaCwKICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNh
ZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKLSAg
ICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzKCksCiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6
UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJl
bGVhc2UoKSk7Ci0KLQotICAgIGlmIChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNo
R1BSICE9IEludmFsaWRHUFJSZWcgJiYgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsKQotICAgICAg
ICB1bmxvY2soc2NyYXRjaEdQUik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVl
R1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCkKQEAgLTU2OCwxMSArNTY0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU8KICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9S
ZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlm
aWVyTnVtYmVyKSk7CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3Rl
cnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVhcihz
Y3JhdGNoR1BSKTsKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVy
dHlBY2Nlc3NSZWNvcmQoCiAgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQ
YXRoLmdldCgpLCBkb25lTGFiZWwsCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNo
R1BSKSkpOworICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8
aW50OF90Pih2YWx1ZUdQUiksIGN1cnJlbnRseVVzZWRSZWdpc3RlcnMpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkBAIC0zMzE5LDE2ICszMzE3
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVzdWx0R1BSID09IGJh
c2VHUFIpCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdEdQUjsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlm
aWVyTnVtYmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTMzMzksMTggKzMzMzEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZXN1
bHRHUFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSB0cnlBbGxvY2F0ZSgp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAg
ICAgICAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJv
LCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgc2NyYXRj
aEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZp
ZXJOdW1iZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDIyIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHVzZShub2RlVXNlLmluZGV4KCkpOwogICAgIH0KKyAgICAK
KyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVy
U2V0IHJlc3VsdDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpOworICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0luVXNlKGdwcikpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LnNldChncHIpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBG
UFJSZWcgZnByID0gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgIGlmIChtX2Zw
cnMuaXNJblVzZShmcHIpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoZnByKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIG1h
cmtDZWxsQ2FyZChNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0
Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIpOwogICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmll
cihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBH
UFJSZWcgc2NyYXRjaEdQUjIsIFdyaXRlQmFycmllclVzZUtpbmQpOwpAQCAtOTQyLDExICs5NTgs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVVSW50MzJUb051bWJlcihOb2Rl
Jik7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3Bp
bGwpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZSwgR1BS
UmVnIHZhbHVlLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVk
UHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZSwgR1BSUmVnIHZhbHVlLCBFZGdlIHZhbHVl
VXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VU
YWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBp
bGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKLSAgICB2b2lk
IGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcg
dmFsdWVUYWdHUFIsIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIsIEVkZ2UgdmFsdWVVc2UsIEdQUlJl
ZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZv
aWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BS
UmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBO
ZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJSZWcgdmFsdWVQYXlsb2FkR1BS
LCBFZGdlIHZhbHVlVXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbChFZGdl
IG9wZXJhbmQsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152465</attachid>
            <date>2012-07-15 15:33:30 -0700</date>
            <delta_ts>2012-07-15 17:59:03 -0700</delta_ts>
            <desc>more!</desc>
            <filename>dfgtransition_patch_2.diff</filename>
            <type>text/plain</type>
            <size>47524</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEyLTA3LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFB1dEJ5SWQgdHJhbnNpdGlvbiBzaG91bGQgaGFuZGxlIHN0b3JhZ2UgYWxsb2NhdGlvbiwg
YW5kIGlubGluZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTEzMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLiBTbyBmYXIgSSBqdXN0IGltcGxlbWVudGVkIHRoZSBzY2Fm
Zm9sZGluZyBmb3IgYmVpbmcgYWJsZQorICAgICAgICB0byBlbWl0IHNsb3cgcGF0aCBjYWxscyBm
cm9tIHN0dWJzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAg
ICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVydHlBY2Nlc3NSZWNvcmQpOgor
ICAgICAgICAoUHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3Rl
ckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OmlzSW5Vc2UpOgorICAg
ICAgICAoUmVnaXN0ZXJCYW5rKToKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJTZXQuaDogQWRk
ZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAoUmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlND
OjpERkc6OlJlZ2lzdGVyU2V0OjpSZWdpc3RlclNldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVn
aXN0ZXJTZXQ6OmFzUE9EKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y29weUlu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpzZXQpOgorICAgICAgICAoSlND
OjpERkc6OlJlZ2lzdGVyU2V0OjpzZXRHUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXQp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXRHUFJCeUluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0RnJlZUdQUik6CisgICAgICAgIChKU0M6OkRG
Rzo6UmVnaXN0ZXJTZXQ6OnNldEZQUkJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lz
dGVyU2V0OjpnZXRGUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6
c2V0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmdldEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEdQUnMpOgorICAg
ICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldEZQUnMpOgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJPZlNldFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEJpdCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0
ZXJTZXQ6OmNsZWFyQml0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0Qml0
KToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2Vu
ZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVH
ZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVt
aXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgICogZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEdQUik6CisgICAgICAgIChKU0M6
OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2hGUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6ZGlkUmV1c2VSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2Vy
dmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyk6CisgICAg
ICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkZXNpcmVkU2NyYXRjaEJ1
ZmZlclNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6
cHJlc2VydmVVc2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVVc2VkUmVnaXN0ZXJzRnJvbVNjcmF0
Y2hCdWZmZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2Vk
UmVnaXN0ZXJzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTItMDctMTQgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgUHV0QnlWYWwgb3Bjb2RlcyBzaG91
bGQgYWNjZXB0IG1vcmUgdGhhbiAzIG9wZXJhbmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw5ICsy
MTYsMTEgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw4IEBACiAJCTBGNzY2RDM1MTVBRTI1M0Iw
MDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzMzE1QUUyNTM1MDA4RjM2M0UgLyog
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKIAkJMEY3NjZEMzkxNUFFNEExRjAwOEYz
NjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8q
IERGR1JlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQ0MjE1QjJBM0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc2NkQ0NjE1
QjM3MDFGMDA4RjM2M0UgLyogREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4
RjM2M0UgLyogREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmNwcCAqLzsgfTsKIAkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5
NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RC
MSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk1
LDYgKzg5Nyw4IEBACiAJCTBGNzY2RDMzMTVBRTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1l
bnRXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBs
YWNlbWVudFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZE
MzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3
MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZENDIxNUIyQTNCRDAw
OEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1JlZ2lzdGVyU2V0Lmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJTZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUx
NDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyog
REZHQ0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ND
YWxsSGVscGVycy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjMwNCw5ICsyMzA4LDExIEBACiAJCQkJMEE0MzM3QkExNTA2MjE4
ODAwOTkxQzk1IC8qIERGR1JlZHVuZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuY3BwICovLAogCQkJ
CTBBNDMzN0JEMTUwNjIxOUIwMDk5MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBo
YXNlLmggKi8sCiAJCQkJODZFQzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFu
ay5oICovLAorCQkJCTBGNzY2RDQyMTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
ICovLAogCQkJCTg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLywK
IAkJCQk4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovLAogCQkJCTg2
RUNBM0Y5MTMyREYyNUEwMDJCMkFENyAvKiBERkdTY29yZUJvYXJkLmggKi8sCisJCQkJMEY3NjZE
NDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAog
CQkJCTBGMUUzQTY1MTUzQTIxREYwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFu
LmggKi8sCiAJCQkJMEYxRTNBNTAxNTM3QzJDQjAwMEY5NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJh
dG9yLmggKi8sCiAJCQkJODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZl
SklULmNwcCAqLywKQEAgLTI4NTAsNiArMjg1Niw4IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzNTE1
QUUyNTNCMDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYz
RSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NjZENDYxNUIzNzAx
RjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUg
IkRGR1JlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJK
SVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCkBAIC0yMTIsNyAr
MjEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW50OF90IHZhbHVlVGFn
R1BSOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgaW50OF90IHZhbHVlR1BSOwotICAgICAgICAg
ICAgICAgIGludDhfdCBzY3JhdGNoR1BSOworICAgICAgICAgICAgICAgIERGRzo6UmVnaXN0ZXJT
ZXRQT0QgdXNlZFJlZ2lzdGVyczsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRv
RG9uZTsKICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQ7CiAg
ICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0cnVjdENoZWNrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMCArMjYsMTIgQEAKICNpZm5kZWYgREZHR1BSSW5mb19oCiAjZGVmaW5lIERGR0dQUkluZm9f
aAogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAot
I2luY2x1ZGUgPGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oPgotI2luY2x1ZGUgPGRmZy9ERkdS
ZWdpc3RlckJhbmsuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkRG
R1JlZ2lzdGVyQmFuay5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdH
UFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKICAgICAgICAgaW5mby5w
YXRjaC5kZmcudmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKICNl
bmRpZgotICAgICAgICBpbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSID0gbV9wcm9wZXJ0eUFjY2Vz
c2VzW2ldLm1fc2NyYXRjaEdQUjsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNl
ZFJlZ2lzdGVycy5jb3B5SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKICAgICAg
ICAgaW5mby5wYXRjaC5kZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX3JlZ2lzdGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hl
ZDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJERkdHUFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdS
ZWdpc3RlckJhbmsuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkpJ
VENvZGUuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKQEAgLTE2OSw3ICsxNzAsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKICAgICAgICAgaW50OF90IGJhc2VH
UFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIs
CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdp
c3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0
cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIGludDhfdCBiYXNlR1BSLAogICAg
ICAgICBpbnQ4X3QgdmFsdWVUYWdHUFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAg
ICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5V
c2UpCiAjZW5kaWYKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKQEAgLTIwNCw3
ICsyMDUsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICAsIG1fdmFs
dWVUYWdHUFIodmFsdWVUYWdHUFIpCiAjZW5kaWYKICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVl
R1BSKQotICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQorICAgICAgICAsIG1fdXNl
ZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQogICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lz
dGVyTW9kZSkKICAgICB7CiAgICAgfQpAQCAtMjI2LDcgKzIyNyw3IEBAIHN0cnVjdCBQcm9wZXJ0
eUFjY2Vzc1JlY29yZCB7CiAgICAgaW50OF90IG1fdmFsdWVUYWdHUFI7CiAjZW5kaWYKICAgICBp
bnQ4X3QgbV92YWx1ZUdQUjsKLSAgICBpbnQ4X3QgbV9zY3JhdGNoR1BSOworICAgIFJlZ2lzdGVy
U2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBSZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJ
KHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0
ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbmFtZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaXNJblVzZShSZWdJRCByZWcpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gaXNMb2NrZWQocmVnKSB8fCBuYW1lKHJlZykgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3Rl
cjsKKyAgICB9CisgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdSZWdpc3RlclNldF9oCisjZGVmaW5lIERGR1Jl
Z2lzdGVyU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKKyNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHRlBSSW5mby5o
IgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyA9Cisg
ICAgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
czsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnl0ZXNJblJlZ2lzdGVyU2V0ID0K
KyAgICAodG90YWxOdW1iZXJPZlJlZ2lzdGVycyArIDcpID4+IDM7CisKK3R5cGVkZWYgdWludDhf
dCBSZWdpc3RlclNldFBPRFtudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldF07CisKK2NsYXNzIFJl
Z2lzdGVyU2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlclNldCgpCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldDsgaS0tOykKKyAgICAg
ICAgICAgIG1fc2V0W2ldID0gMDsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXQoY29uc3Qg
UmVnaXN0ZXJTZXRQT0QmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtYmVyT2ZCeXRlc0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBtX3NldFtpXSA9
IG90aGVyW2ldOworICAgIH0KKyAgICAKKyAgICBjb25zdCBSZWdpc3RlclNldFBPRCYgYXNQT0Qo
KSBjb25zdCB7IHJldHVybiBtX3NldDsgfQorICAgIAorICAgIHZvaWQgY29weUluZm8oUmVnaXN0
ZXJTZXRQT0QmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtYmVyT2ZCeXRlc0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBvdGhlcltpXSA9
IG1fc2V0W2ldOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChHUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgc2V0Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgc2V0R1BSQnlJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpbmRleCA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc2V0Qml0KGlu
ZGV4KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhcihHUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgY2xlYXJCaXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBnZXQoR1BSUmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQo
R1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXRHUFJCeUlu
ZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwg
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gZ2V0Qml0KGluZGV4
KTsKKyAgICB9CisgICAgCisgICAgLy8gUmV0dXJuIHRoZSBpbmRleCd0aCBmcmVlIEdQUi4KKyAg
ICBHUFJSZWcgZ2V0RnJlZUdQUih1bnNpZ25lZCBpbmRleCA9IDApIGNvbnN0CisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykg
eworICAgICAgICAgICAgaWYgKCFnZXRHUFJCeUluZGV4KGkpICYmICFpbmRleC0tKQorICAgICAg
ICAgICAgICAgIHJldHVybiBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChGUFJS
ZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRGUFJC
eUluZGV4KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoRlBSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIGNsZWFyQml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoRlBS
UmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAg
ICBib29sIGdldEZQUkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaW5kZXggPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJl
dHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgorICAgIHZvaWQgc2V0QnlJbmRl
eCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHNldChCYW5rSW5mbzo6dG9SZWdpc3Rl
cihpbmRleCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4K
KyAgICBib29sIGdldEJ5SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1
cm4gZ2V0KEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGluZGV4KSk7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIG51bWJlck9mU2V0R1BScygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKCFnZXRCaXQoaSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldEZQ
UnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAg
ICAgICAgICAgIGlmICghZ2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0b3RhbE51bWJlck9mUmVnaXN0ZXJzOyBp
LS07KSB7CisgICAgICAgICAgICBpZiAoIWdldEJpdChpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIHNldEJpdCh1bnNpZ25lZCBp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAg
ICAgICAgbV9zZXRbaSA+PiAzXSB8PSAoMSA8PCAoaSAmIDcpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBjbGVhckJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3Rh
bE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkg
JiA3KSk7CisgICAgfQorICAgIAorICAgIGJvb2wgZ2V0Qml0KHVuc2lnbmVkIGkpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoaSA8IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAg
ICByZXR1cm4gISEobV9zZXRbaSA+PiAzXSAmICgxIDw8IChpICYgNykpKTsKKyAgICB9CisgICAg
CisgICAgUmVnaXN0ZXJTZXRQT0QgbV9zZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCisKKyNlbHNlIC8vIEVOQUJMRShERkdfSklUKSAtPiBzbyBpZiBERkcgaXMgZGlzYWJsZWQK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBEZWZpbmUgUmVnaXN0ZXJT
ZXRQT0QgdG8gc29tZXRoaW5nIHRoYXQgaXMgYSBQT0QsIGJ1dCBpcyBvdGhlcndpc2UgdXNlbGVz
cywKKy8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlZmVyIHRvIHRoaXMgdHlwZSBpbiBjb2RlIHRo
YXQgaXMgbm90IERGRy1zcGVjaWZpYy4KKworc3RydWN0IFJlZ2lzdGVyU2V0UE9EIHsgfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
KyNlbmRpZiAvLyBERkdSZWdpc3RlclNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisj
aW5jbHVkZSAiREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHU3Bl
Y3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKICNpbmNsdWRlICJHQ0F3YXJl
SklUU3R1YlJvdXRpbmUuaCIKQEAgLTE2MSw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAg
IEdQUlJlZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRm
Zy52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+
KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BS
KCk7CiAgICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogICAgIAogICAgIGlm
IChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcpIHsKQEAgLTIzMSw3ICsyMzIsNyBAQCBzdGF0
aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIEdQUlJlZyByZXN1
bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRh
Z0dQUik7CiAjZW5kaWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BS
KTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRj
aC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgICAgICBib29sIG5lZWRUb1Jl
c3RvcmVTY3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlciBz
dHViSml0OwpAQCAtMzg0LDcgKzM4NSw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExp
c3QoRXhlY1N0YXQKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRpY19jYXN0PEdQUlJl
Zz4oc3R1YkluZm8ucGF0Y2guZGZnLnNjcmF0Y2hHUFIpOworICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRG
cmVlR1BSKCk7CiAgICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxE
YXRhLCBjb2RlQmxvY2spOwogICAgICAgICAKQEAgLTYyOSw3ICs2MzAsNyBAQCBzdGF0aWMgdm9p
ZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAg
R1BSUmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihz
dHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBS
ZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigp
OwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICNpZiBFTkFCTEUoR0dD
KSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIyOwpAQCAtNzA1LDcgKzcwNiw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigK
IHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICBFeGVjU3RhdGUqIGV4ZWMs
CiAgICAgSlNWYWx1ZSwKLSAgICBjb25zdCBJZGVudGlmaWVyJiwKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLAogICAgIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgUHV0S2luZCBwdXRLaW5kLApAQCAtNzIy
LDgzICs3MjMsMTU5IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICBH
UFJSZWcgdmFsdWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRm
Zy52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKICAgICBHUFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BS
KTsKLSAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7Ci0gICAgICAgICAgICAK
LSAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBiYXNlR1BSKTsKKyAgICAKKyAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJz
KTsKKyAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlVGFnR1BSKTsKKyNlbmRpZgorICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRh
KTsKICAgICAgICAgICAgIAotICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIxID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgIEFTU0VS
VChzY3JhdGNoR1BSMSAhPSBiYXNlR1BSKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjEgIT0gdmFs
dWVHUFIpOworICAgIAorICAgIGJvb2wgbmVlZFNlY29uZFNjcmF0Y2ggPSBmYWxzZTsKKyNpZiBF
TkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgbmVlZFNl
Y29uZFNjcmF0Y2ggPSB0cnVlOworI2VuZGlmCisgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAg
JiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICBuZWVkU2Vjb25k
U2NyYXRjaCA9IHRydWU7CisKKyAgICBHUFJSZWcgc2NyYXRjaEdQUjI7CisgICAgaWYgKG5lZWRT
ZWNvbmRTY3JhdGNoKSB7CisgICAgICAgIHNjcmF0Y2hHUFIyID0gYWxsb2NhdG9yLmFsbG9jYXRl
U2NyYXRjaEdQUigpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gYmFzZUdQUik7Cisg
ICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMiAhPSB2YWx1ZUdQUik7CisgICAgICAgIEFTU0VSVChz
Y3JhdGNoR1BSMiAhPSBzY3JhdGNoR1BSMSk7CisgICAgfSBlbHNlCisgICAgICAgIHNjcmF0Y2hH
UFIyID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgIAorICAgIGFsbG9jYXRvci5wcmVzZXJ2
ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhzdHViSml0KTsKKwogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgICAgICAKLSAgICBpZiAoc2NyYXRjaEdQ
UiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgIHNjcmF0Y2hHUFIgPSBTcGVjdWxhdGl2ZUpJ
VDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7Ci0gICAgICAgIHN0dWJKaXQu
cHVzaChzY3JhdGNoR1BSKTsKLSAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSB0cnVlOwot
ICAgIH0KLSAgICAKICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsKICAgICAKICAgICBhZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90
eXBlKCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVyZUNhc2Vz
LAotICAgICAgICBzY3JhdGNoR1BSKTsKKyAgICAgICAgc2NyYXRjaEdQUjEpOwogICAgICAgICAg
ICAgCiAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CiAgICAgICAgIGZvciAoV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gcHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsgKml0OyArK2l0
KSB7CiAgICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgICAg
ICAgICAgKCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBleGVjLT5jb2RlQmxvY2soKSwgc3R1Yklu
Zm8sIHN0dWJKaXQsIGZhaWx1cmVDYXNlcywKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBzY3JhdGNoR1BSMSk7CiAgICAgICAgIH0KICAgICB9CiAKICNpZiBF
TkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgQVNTRVJU
KG5lZWRTZWNvbmRTY3JhdGNoKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgLy8gTXVzdCBhbHdheXMgZW1pdCB0aGlzIHdyaXRlIGJhcnJpZXIgYXMgdGhl
IHN0cnVjdHVyZSB0cmFuc2l0aW9uIGl0c2VsZiByZXF1aXJlcyBpdAotICAgIEdQUlJlZyBzY3Jh
dGNoMiA9IFNwZWN1bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHZhbHVlR1BS
LCBzY3JhdGNoR1BSKTsKLSAgICBzdHViSml0LnB1c2goc2NyYXRjaDIpOwotICAgIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoc3R1YkppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRj
aDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKLSAgICBzdHViSml0LnBvcChzY3Jh
dGNoMik7CisgICAgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BS
LCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
KTsKICNlbmRpZgorICAgIAorICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
IT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIGlmICghb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBXYW50IHRvIGVtaXQgY29kZSB0byBh
bGxvY2F0ZSBwcm9wZXJ0eSBzdG9yYWdlLiBUcnkgc29tZSBmYXN0IHBhdGggZmlyc3QuIElmIHRo
YXQKKyAgICAvLyBmYWlscywgYmFpbCBhbGwgdGhlIHdheSB0byB0aGUgb3JpZ2luYWwgc2xvdyBw
YXRoLCBzaW5jZSB0aGF0IGtub3dzIGhvdyB0byBzYXZlCisgICAgLy8gYW5kIHJlc3RvcmUgcmVn
aXN0ZXJzLiBJZGVhbGx5IHdlIHdhbnQgdG86CisgICAgLy8gMSkgTG9hZCBidW1wIHBvaW50ZXIK
KyAgICAvLyAyKSBBZGQgc29tZXRoaW5nIHRvIGl0CisgICAgLy8gMykgQ29tcGFyZSBhZ2FpbnN0
IHRoZSBsaW1pdAorICAgIC8vIDQpIFN1YnRyYWN0IGJhY2sgZG93bgorICAgIC8vIDUpIFN0b3Jl
IGl0IHRvIHRoZSBvYmplY3QuCisgICAgLy8KKyAgICAvLyBCdXQgdGhhdCBtZWFuczoKKyAgICAv
LyBBKSBJIG5lZWQgYSBsaW1pdC4KKyAgICAvLyBCKSBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhl
IGJsb2NrIHdvbid0IGJlIHRoZSBsYXN0IG9uZSBpbiBtZW1vcnkuCisgICAgLy8KKyAgICAvLyBP
ciBJIGNvdWxkIHVzZSBEYW5pZWwncyBhbGdvcml0aG0uIFRoZSBidW1wIGlzIHRoZSByZW1haW5p
bmcgbWVtb3J5LiBUaGVuOgorICAgIC8vIDEpIExvYWQgYnVtcCBsaW1pdAorICAgIC8vIDIpIFN1
YnRyYWN0IHdoYXQgSSB3YW50CisgICAgLy8gMykgRmFpbCBpZiBuZWdhdGl2ZQorICAgIC8vIDQp
IFN0b3JlIGl0IGJhY2sKKyAgICAvLyA1KSBTdWJ0cmFjdCBpdCBmcm9tIHRoZSBibG9jayBiYXNl
CisgICAgLy8gNikgQWRkIHdoYXQgSSB3YW50IHBsdXMgYmxvY2sgc2l6ZQogCiAgICAgc3R1Ykpp
dC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShz
bG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBzdHViSml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMSwgb2Zm
c2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZh
bHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1YkppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRP
Zk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0b3Jl
MzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
KTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0
b3JhZ2UoKSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMSwgb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOworICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIxLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpKTsKICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3M7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFpbHVy
ZTsKICAgICAgICAgICAgIAotICAgIGlmIChuZWVkVG9SZXN0b3JlU2NyYXRjaCkgewotICAgICAg
ICBzdHViSml0LnBvcChzY3JhdGNoR1BSKTsKKyAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVn
aXN0ZXJzKCkpIHsKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBv
cHBpbmcoc3R1YkppdCk7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKIAogICAg
ICAgICBmYWlsdXJlQ2FzZXMubGluaygmc3R1YkppdCk7Ci0gICAgICAgIHN0dWJKaXQucG9wKHNj
cmF0Y2hHUFIpOworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9w
cGluZyhzdHViSml0KTsKICAgICAgICAgZmFpbHVyZSA9IHN0dWJKaXQuanVtcCgpOwogICAgIH0g
ZWxzZQogICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CisgICAgCisgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBo
YW5kbGVyQ2FsbDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aFN1Y2Nlc3M7Cisg
ICAgCisgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVz
ZWRSZWdpc3RlcnNCeVBvcHBpbmcoc3R1YkppdCk7CisgICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNj
cmF0Y2hCdWZmZXIgPSBnbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShhbGxvY2F0b3Iu
ZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkpOworICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVV
c2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyKHN0dWJKaXQsIHNjcmF0Y2hCdWZmZXIpOworI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgJmlkZW50aWZpZXIpOworI2Vs
c2UKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUodmFsdWVHUFIs
IGJhc2VHUFIsICZpZGVudGlmaWVyKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoZXhlYy0+Y29kZU9yaWdpbkluZGV4Rm9yREZHKCkpLCBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KFJlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgb3BlcmF0aW9uQ2FsbCA9IHN0dWJKaXQuY2Fs
bCgpOworICAgICAgICAKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVVc2VkUmVnaXN0ZXJzRnJv
bVNjcmF0Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1ZmZlcik7CisgICAgICAgIAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aFN1Y2Nlc3MgPSBzdHViSml0LmVtaXRFeGNl
cHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworICAgICAg
ICAKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmc3R1YkluZm8pKTsKKyAgICAgICAg
aGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKKyAgICAgICAgc3R1YkppdC5qdW1wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7CisgICAgfQogICAgICAgICAgICAgCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKLSAg
ICBpZiAobmVlZFRvUmVzdG9yZVNjcmF0Y2gpCisgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJl
Z2lzdGVycygpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1cmVMYWJl
bCk7CiAgICAgZWxzZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVDYXNlcywgZmFp
bHVyZUxhYmVsKTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBwYXRjaEJ1ZmZlci5s
aW5rKHNsb3dQYXRoU3VjY2Vzcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkpOworICAgICAgICBwYXRj
aEJ1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5j
dGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaGFuZGxlckNh
bGwsIGxvb3VwRXhjZXB0aW9uSGFuZGxlckluU3R1Yik7CisgICAgfQogICAgIAogICAgIHN0dWJS
b3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisjZGVmaW5lIERGR1NjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8v
IFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciB1
c2UgaW4gc3R1YnMuCisKK2NsYXNzIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciB7CitwdWJsaWM6
CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzKQorICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAg
ICAsIG1fZGlkUmV1c2VSZWdpc3RlcnMoZmFsc2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgbG9jayhUIHJlZykgeyBtX2xvY2tlZFJlZ2lz
dGVycy5zZXQocmVnKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgor
ICAgIHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgYWxsb2NhdGVTY3JhdGNoKCkKKyAg
ICB7CisgICAgICAgIC8vIEZpcnN0IHRyeSB0byBhbGxvY2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMg
dG90YWxseSBmcmVlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFua0luZm86
Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIHR5cGVuYW1lIEJhbmtJbmZv
OjpSZWdpc3RlclR5cGUgcmVnID0gQmFua0luZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAg
ICBpZiAoIW1fbG9ja2VkUmVnaXN0ZXJzLmdldChyZWcpCisgICAgICAgICAgICAgICAgJiYgIW1f
dXNlZFJlZ2lzdGVycy5nZXQocmVnKQorICAgICAgICAgICAgICAgICYmICFtX3NjcmF0Y2hSZWdp
c3RlcnMuZ2V0KHJlZykpIHsKKyAgICAgICAgICAgICAgICBtX3NjcmF0Y2hSZWdpc3RlcnMuc2V0
KHJlZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU2luY2UgdGhhdCBmYWlsZWQsIHRyeSB0byBhbGxv
Y2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMgbm90IHlldAorICAgICAgICAvLyBsb2NrZWQgb3IgdXNl
ZCBmb3Igc2NyYXRjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhbmtJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICB0eXBlbmFtZSBCYW5rSW5m
bzo6UmVnaXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICAg
ICAgaWYgKCFtX2xvY2tlZFJlZ2lzdGVycy5nZXQocmVnKSAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJz
LmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAgbV9zY3JhdGNoUmVnaXN0ZXJzLnNldChyZWcp
OworICAgICAgICAgICAgICAgIG1fZGlkUmV1c2VSZWdpc3RlcnMgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiByZWc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIFdlIGZhaWxlZC4KKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisgICAgCisgICAg
R1BSUmVnIGFsbG9jYXRlU2NyYXRjaEdQUigpIHsgcmV0dXJuIGFsbG9jYXRlU2NyYXRjaDxHUFJJ
bmZvPigpOyB9CisgICAgRlBSUmVnIGFsbG9jYXRlU2NyYXRjaEZQUigpIHsgcmV0dXJuIGFsbG9j
YXRlU2NyYXRjaDxGUFJJbmZvPigpOyB9CisgICAgCisgICAgYm9vbCBkaWRSZXVzZVJlZ2lzdGVy
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kaWRSZXVzZVJlZ2lzdGVyczsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhNYWNy
b0Fzc2VtYmxlciYgaml0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2RpZFJldXNlUmVnaXN0ZXJz
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSAmJiBtX3VzZWRSZWdpc3Rl
cnMuZ2V0RlBSQnlJbmRleChpKSkgeworICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdp
c3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fc2NyYXRjaFJl
Z2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4
KGkpKQorICAgICAgICAgICAgICAgIGppdC5wdXNoKEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5
UG9wcGluZyhNYWNyb0Fzc2VtYmxlciYgaml0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2RpZFJl
dXNlUmVnaXN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAg
ICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSAmJiBtX3VzZWRS
ZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqaXQucG9wKEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV9z
Y3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldEZQ
UkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAg
ICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4KSwg
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBkZXNpcmVkU2NyYXRjaEJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBtX3VzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMo
KTsgfQorICAgIAorICAgIHZvaWQgcHJlc2VydmVVc2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVy
KE1hY3JvQXNzZW1ibGVyJiBqaXQsIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIpCisgICAg
eworICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX3VzZWRSZWdpc3RlcnMu
Z2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6
dG9SZWdpc3RlcihpKSwgc2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpOworICAg
ICAgICAgICAgaWYgKCFtX2xvY2tlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmICFtX3Nj
cmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBzY3JhdGNo
R1BSID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
c2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
RlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX3Vz
ZWRSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSkgeworICAgICAgICAgICAgICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPm1fYnVmZmVyICsg
KGNvdW50KyspKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlRG91Ymxl
KEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChjb3VudCA9PSBkZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemUo
KSk7CisgICAgICAgIAorICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmc2NyYXRjaEJ1ZmZlci0+bV9hY3RpdmVMZW5ndGgpLCBzY3JhdGNoR1BSKTsKKyAgICAg
ICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0
PHNpemVfdD4oY291bnQpKSwgc2NyYXRjaEdQUik7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVz
dG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZlcihNYWNyb0Fzc2VtYmxlciYgaml0LCBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gRmluZCBhIHNj
cmF0Y2ggcmVnaXN0ZXIuCisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX2xvY2tlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4
KGkpIHx8IG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnRvUmVnaXN0
ZXIoaSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoc2Ny
YXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgCisgICAgICAgIGppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzY3JhdGNoQnVmZmVyLT5tX2FjdGl2ZUxlbmd0
aCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIpOworCisgICAgICAgIC8vIFJlc3RvcmUgZG91Ymxl
IHJlZ2lzdGVycyBmaXJzdC4KKyAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX3VzZWRSZWdpc3Rl
cnMubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0
ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5tX2J1ZmZlciArIChjb3VudCsr
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKHNjcmF0Y2hH
UFIsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2Vk
UmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIo
c2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKyksIEdQUkluZm86OnRvUmVnaXN0ZXIo
aSkpOworICAgICAgICB9CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBSZWdpc3RlclNldCBt
X3VzZWRSZWdpc3RlcnM7CisgICAgUmVnaXN0ZXJTZXQgbV9sb2NrZWRSZWdpc3RlcnM7CisgICAg
UmVnaXN0ZXJTZXQgbV9zY3JhdGNoUmVnaXN0ZXJzOworICAgIGJvb2wgbV9kaWRSZXVzZVJlZ2lz
dGVyczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNyArNDkyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50MwogICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVs
UHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBz
dHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwpAQCAtNTIwLDEzICs1MjAsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIFByb3Bl
cnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21w
YXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwK
ICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4o
YmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKLSAgICAgICAgICAgIHNhZmVD
YXN0PGludDhfdD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzKCksCiAg
ICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29y
ZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hl
ZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7Ci0KLQot
ICAgIGlmIChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcgJiYgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsKQotICAgICAgICB1bmxvY2soc2NyYXRj
aEdQUik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVl
VXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2lu
ZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkKQEAgLTU2OCwxMSAr
NTY0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BS
LCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAg
ICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0
ZXJzKCk7CisgICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoR1BSKTsKKyAg
ICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQUikpOworICAgIEFTU0VS
VChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZUdQUikpOwogICAgIG1faml0LmFkZFBy
b3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAgICAg
IGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5
U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChz
dG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAgICAg
ICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgICAgICAgICBzYWZlQ2Fz
dDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgY3VycmVudGx5
VXNlZFJlZ2lzdGVycykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVh
c2UoKSk7CiB9CiAKQEAgLTMzMTksMTYgKzMzMTksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFI7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChyZXN1bHRHUFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgICAgICBzY3Jh
dGNoR1BSID0gdHJ5QWxsb2NhdGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNl
LnVzZSgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29k
ZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJO
dW1iZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFz
ZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzMzOSwx
OCArMzMzMywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIAogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
OwotICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdEdQUiA9PSBiYXNlR1BSKQotICAgICAgICAg
ICAgc2NyYXRjaEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNjcmF0Y2hHUFIgPSByZXN1bHRHUFI7CiAgICAgICAgIAogICAgICAgICBiYXNlLnVzZSgpOwog
ICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5j
aFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdp
biwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIo
KSwgbm90Q2VsbCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNl
R1BSLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAg
ICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgCkBAIC0zMzcxLDEzICszMzU5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAg
IAogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKGJh
c2VHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNlKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCBy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxl
cjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNv
ZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIEpJ
VENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM4OSwxNCArMzM3NSwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgICAgIAotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNlbGVjdFNjcmF0Y2hH
UFIoYmFzZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7CiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywg
YmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2Rl
LmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3Miw2ICsyNzIsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdXNlKG5vZGVVc2UuaW5k
ZXgoKSk7CiAgICAgfQorICAgIAorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMoKQorICAg
IHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgR1BSUmVn
IGdwciA9IEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICBpZiAobV9ncHJzLmlz
SW5Vc2UoZ3ByKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGdwcik7CisgICAgICAgIH0K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGkt
LTspIHsKKyAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwor
ICAgICAgICAgICAgaWYgKG1fZnBycy5pc0luVXNlKGZwcikpCisgICAgICAgICAgICAgICAgcmVz
dWx0LnNldChmcHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQog
CiAgICAgc3RhdGljIHZvaWQgbWFya0NlbGxDYXJkKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93
bmVyR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMik7CiAgICAgc3Rh
dGljIHZvaWQgd3JpdGVCYXJyaWVyKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BSLCBH
UFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgV3JpdGVCYXJyaWVyVXNlS2lu
ZCk7CkBAIC05NDIsMTAgKzk1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxhdGl2
ZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lz
dGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hl
ZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJlZyB2YWx1ZSwgRWRnZSB2YWx1
ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtp
bmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAo
KSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBH
UFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHNjcmF0
Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVl
ZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BS
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJS
ZWcgdmFsdWVQYXlsb2FkR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152467</attachid>
            <date>2012-07-15 17:59:03 -0700</date>
            <delta_ts>2012-07-15 23:57:27 -0700</delta_ts>
            <desc>it&apos;s starting to work</desc>
            <filename>dfgtransition_patch_3.diff</filename>
            <type>text/plain</type>
            <size>57988</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEyLTA3LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFB1dEJ5SWQgdHJhbnNpdGlvbiBzaG91bGQgaGFuZGxlIHN0b3JhZ2UgYWxsb2NhdGlvbiwg
YW5kIGlubGluZSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTEzMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLiBJdCB3b3JrcyBmb3Igc2ltcGxlIHByb2dyYW1zIGJ1dCB0
aGF0J3MgcHJvYmFibHkgYWJvdXQKKyAgICAgICAgaXQgZm9yIG5vdy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
Lmg6CisgICAgICAgIChGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpG
dW5jdGlvblB0cik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAg
ICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxI
ZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoQ0NhbGxIZWxw
ZXJzKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OlByb3BlcnR5
QWNjZXNzUmVjb3JkOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZCk6CisgICAgICAgIChQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyQmFuay5oOgor
ICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFuazo6aXNJblVzZSk6CisgICAgICAgIChSZWdp
c3RlckJhbmspOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlclNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChSZWdpc3RlclNldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVn
aXN0ZXJTZXQ6OlJlZ2lzdGVyU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6
YXNQT0QpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0Ojpjb3B5SW5mbyk6CisgICAg
ICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVn
aXN0ZXJTZXQ6OnNldEdQUkJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0
OjpjbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmdldCk6CisgICAgICAg
IChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmdldEdQUkJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpE
Rkc6OlJlZ2lzdGVyU2V0OjpnZXRGcmVlR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3Rl
clNldDo6c2V0RlBSQnlJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6Omdl
dEZQUkJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpzZXRCeUluZGV4
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0QnlJbmRleCk6CisgICAgICAg
IChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0R1BScyk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0RlBScyk6CisgICAgICAgIChKU0M6OkRGRzo6
UmVnaXN0ZXJTZXQ6Om51bWJlck9mU2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlclNldDo6c2V0Qml0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y2xl
YXJCaXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXRCaXQpOgorICAgICAg
ICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpnZW5lcmF0ZVByb3Rv
Q2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZUdldEJ5SUQpOgor
ICAgICAgICAoSlNDOjpERkc6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFRyYW5z
aXRpb25TdHViKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERkc6OnRyeUJ1aWxkUHV0QnlJZExpc3QpOgorICAgICAgICAqIGRmZy9ERkdTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAo
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcik6CisgICAgICAgIChKU0M6
OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2hHUFIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3Jh
dGNoRlBSKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRp
ZFJldXNlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKToKKyAgICAgICAgKEpTQzo6
REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBv
cHBpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6ZGVz
aXJlZFNjcmF0Y2hCdWZmZXJTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlVXNlZFJlZ2lzdGVyc1RvU2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlVXNlZFJlZ2lz
dGVyc0Zyb21TY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6dXNlZFJlZ2lzdGVycyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhl
YXAvQ29waWVkQWxsb2NhdG9yLmg6CisgICAgICAgIChDb3BpZWRBbGxvY2F0b3IpOgorCiAyMDEy
LTA3LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIFB1
dEJ5VmFsIG9wY29kZXMgc2hvdWxkIGFjY2VwdCBtb3JlIHRoYW4gMyBvcGVyYW5kcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMjY3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTYsOSArMjE2LDExIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVkdW5kYW50UGhpRWxpbWluYXRpb25QaGFz
ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVkdW5kYW50UGhpRWxpbWlu
YXRpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFu
ay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Njb3JlQm9hcmQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOCBAQAog
CQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzMx
NUFFMjUzNTAwOEYzNjNFIC8qIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc2NkQzODE1QUU0QTFD
MDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4
RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBG
NzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQz
NzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzY2RDQ0
MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERG
R1JlZ2lzdGVyU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CiAJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RC
MSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGN0IyOTQ4MTRDM0NEMjMwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdC
Mjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQg
LyogREZHQ2FwYWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTg5NSw2ICs4OTcsOCBAQAogCQkwRjc2NkQzMzE1QUUyNTM1MDA4RjM2
M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNzY2RDQyMTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZWdpc3RlclNldC5oOyBwYXRoID0gZGZnL0RGR1Jl
Z2lzdGVyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzY2RDQ1MTVCMzcw
MUQwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHBhdGgg
PSBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ft
cGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QjI5NDgx
NEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdDQ2FsbEhlbHBl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMDQsOSArMjMwOCwxMSBAQAog
CQkJCTBBNDMzN0JBMTUwNjIxODgwMDk5MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlv
blBoYXNlLmNwcCAqLywKIAkJCQkwQTQzMzdCRDE1MDYyMTlCMDA5OTFDOTUgLyogREZHUmVkdW5k
YW50UGhpRWxpbWluYXRpb25QaGFzZS5oICovLAogCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFE
NyAvKiBERkdSZWdpc3RlckJhbmsuaCAqLywKKwkJCQkwRjc2NkQ0MjE1QjJBM0JEMDA4RjM2M0Ug
LyogREZHUmVnaXN0ZXJTZXQuaCAqLywKIAkJCQk4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5jcHAgKi8sCiAJCQkJODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1Jl
cGF0Y2guaCAqLywKIAkJCQk4NkVDQTNGOTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2Fy
ZC5oICovLAorCQkJCTBGNzY2RDQ1MTVCMzcwMUQwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCAqLywKIAkJCQkwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovLAogCQkJCTBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAv
KiBERkdTbG93UGF0aEdlbmVyYXRvci5oICovLAogCQkJCTg2RUM5REMyMTMyOERGODIwMDJCMkFE
NyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi8sCkBAIC0yODUwLDYgKzI4NTYsOCBAQAogCQkJ
CTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMzUxNUFFMjUzQjAwOEYzNjNFIC8qIEp1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc2
NkQ0NDE1QjJBM0MwMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNzY2RDQ2MTVCMzcwMUYwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAxMjI2Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFtZSBhcmdUeXBlMSwgdHlwZW5hbWUgYXJnVHlw
ZTIsIHR5cGVuYW1lIGFyZ1R5cGUzLCB0eXBlbmFtZSBhcmdUeXBlNCwgdHlwZW5hbWUgYXJnVHlw
ZTU+CisgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBl
MiwgYXJnVHlwZTMsIGFyZ1R5cGU0LCBhcmdUeXBlNSkpCisgICAgICAgIDogbV92YWx1ZSgodm9p
ZCopdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOworICAgIH0KKwogLy8gTVNWQyBkb2Vzbid0IHNlZW0gdG8gdHJlYXQgZnVuY3Rpb25zIHdp
dGggZGlmZmVyZW50IGNhbGxpbmcgY29udmVudGlvbnMgYXMKIC8vIGRpZmZlcmVudCB0eXBlczsg
dGhlc2UgbWV0aG9kcyBhbHJlYWR5IGRlZmluZWQgZm9yIGZhc3RjYWxsLCBiZWxvdy4KICNpZiBD
QUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTCAmJiAhT1MoV0lORE9XUykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShy
ZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJM
RShKSVQpCiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJT
ZXQuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKQEAgLTIxMiw3ICsyMTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVUYWdHUFI7CiAjZW5kaWYK
ICAgICAgICAgICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7Ci0gICAgICAgICAgICAgICAgaW50OF90
IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgREZHOjpSZWdpc3RlclNldFBPRCB1c2VkUmVn
aXN0ZXJzOwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOwogICAgICAg
ICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdG9yYWdlTG9hZDsKICAgICAgICAgICAgICAg
ICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyOSw2ICsyMjksMTUgQEAgcHVibGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7
CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7CkBAIC02NDIsNiArNjUxLDE5IEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsK
KyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
VHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIHBva2UoYXJnNSwgMSk7CisgICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsK
ICAgICAgICAgcG9rZShhcmc0KTsKQEAgLTcyMiw2ICs3NDQsMTYgQEAgcHVibGljOgogCiAjZW5k
aWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CiAKKyNpZiBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTID49IDUKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFy
Z3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjQ+KGFyZzEsIGFy
ZzQpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAg
IG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQog
ICAgIHsKICAgICAgICAgR1BSUmVnIHNyY0EgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCShyZXZpc2lvbiAxMjI2Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTAgKzI2LDEyIEBACiAjaWZuZGVmIERGR0dQUkluZm9faAogI2RlZmluZSBERkdH
UFJJbmZvX2gKIAorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKLSNpbmNsdWRlIDxhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaD4KLSNpbmNsdWRlIDxk
ZmcvREZHUmVnaXN0ZXJCYW5rLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNs
dWRlICJERkdSZWdpc3RlckJhbmsuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnZh
bHVlVGFnR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVUYWdHUFI7CiAgICAgICAg
IGluZm8ucGF0Y2guZGZnLnZhbHVlR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdmFsdWVH
UFI7CiAjZW5kaWYKLSAgICAgICAgaW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUiA9IG1fcHJvcGVy
dHlBY2Nlc3Nlc1tpXS5tX3NjcmF0Y2hHUFI7CisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3Nlc1tp
XS5tX3VzZWRSZWdpc3RlcnMuY29weUluZm8oaW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7
CiAgICAgICAgIGluZm8ucGF0Y2guZGZnLnJlZ2lzdGVyc0ZsdXNoZWQgPSBtX3Byb3BlcnR5QWNj
ZXNzZXNbaV0ubV9yZWdpc3Rlck1vZGUgPT0gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVy
c0ZsdXNoZWQ7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVk
ZSAiREZHUmVnaXN0ZXJCYW5rLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJTZXQuaCIKICNpbmNs
dWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCkBAIC0xNjksNyArMTcwLDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVj
b3JkIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmUsCiAgICAgICAgIGludDhf
dCBiYXNlR1BSLAogICAgICAgICBpbnQ4X3QgdmFsdWVHUFIsCi0gICAgICAgIGludDhfdCBzY3Jh
dGNoR1BSLAorICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICAg
ICAgUmVnaXN0ZXJNb2RlIHJlZ2lzdGVyTW9kZSA9IFJlZ2lzdGVyc0luVXNlKQogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKQEAgLTE4NCw3ICsxODUs
NyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBpbnQ4X3QgYmFzZUdQ
UiwKICAgICAgICAgaW50OF90IHZhbHVlVGFnR1BSLAogICAgICAgICBpbnQ4X3QgdmFsdWVHUFIs
Ci0gICAgICAgIGludDhfdCBzY3JhdGNoR1BSLAorICAgICAgICBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywKICAgICAgICAgUmVnaXN0ZXJNb2RlIHJlZ2lzdGVyTW9kZSA9IFJlZ2lz
dGVyc0luVXNlKQogI2VuZGlmCiAgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCkBA
IC0yMDQsNyArMjA1LDcgQEAgc3RydWN0IFByb3BlcnR5QWNjZXNzUmVjb3JkIHsKICAgICAgICAg
LCBtX3ZhbHVlVGFnR1BSKHZhbHVlVGFnR1BSKQogI2VuZGlmCiAgICAgICAgICwgbV92YWx1ZUdQ
Uih2YWx1ZUdQUikKLSAgICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRjaEdQUikKKyAgICAgICAg
LCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKICAgICAgICAgLCBtX3JlZ2lzdGVyTW9k
ZShyZWdpc3Rlck1vZGUpCiAgICAgewogICAgIH0KQEAgLTIyNiw3ICsyMjcsNyBAQCBzdHJ1Y3Qg
UHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgIGludDhfdCBtX3ZhbHVlVGFnR1BSOwogI2VuZGlm
CiAgICAgaW50OF90IG1fdmFsdWVHUFI7Ci0gICAgaW50OF90IG1fc2NyYXRjaEdQUjsKKyAgICBS
ZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJNb2RlIG1fcmVnaXN0ZXJN
b2RlOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDYgKzEyMzIsMTMgQEAgc2l6
ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbgogICAgIHJldHVybiBqc0lzRnVu
Y3Rpb25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCit2b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIGJhc2UtPnNldFN0cnVjdHVyZUFuZFJlYWxs
b2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICBiYXNl
LT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCBKU1ZhbHVlOjpkZWNvZGUodmFs
dWUpKTsKK30KKwogZG91YmxlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQz
Ml90IGEsIGludDMyX3QgYikKIHsKICAgICByZXR1cm4gZm1vZChhLCBiKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMjI2NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTgwLDYgKzE4MCw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGkKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCwg
aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uSXNP
YmplY3QoRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbklzRnVuY3Rpb24oRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVj
U3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGxvb2t1cCBh
biBleGNlcHRpb24gaGFuZGVyLCBrZXllZCBieSBmYXVsdExvY2F0aW9uLCB3aGljaCBpcwogLy8g
dGhlIHJldHVybiBsb2NhdGlvbiBmcm9tIG9uZSBvZiB0aGUgY2FsbHMgb3V0IHRvIG9uZSBvZiB0
aGUgaGVscGVyIG9wZXJhdGlvbnMgYWJvdmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2
ICsyMjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmFtZUF0SW5kZXgoQmFua0luZm86
OnRvSW5kZXgocmVnKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNJblVzZShSZWdJRCByZWcp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNMb2NrZWQocmVnKSB8fCBuYW1lKHJlZykg
IT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKKyAgICB9CisgICAgCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgZHVtcCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdSZWdp
c3RlclNldF9oCisjZGVmaW5lIERGR1JlZ2lzdGVyU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHUFJJbmZvLmgi
CisjaW5jbHVkZSAiREZHRlBSSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgdG90
YWxOdW1iZXJPZlJlZ2lzdGVycyA9CisgICAgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQnl0ZXNJblJlZ2lzdGVyU2V0ID0KKyAgICAodG90YWxOdW1iZXJPZlJlZ2lzdGVycyArIDcp
ID4+IDM7CisKK3R5cGVkZWYgdWludDhfdCBSZWdpc3RlclNldFBPRFtudW1iZXJPZkJ5dGVzSW5S
ZWdpc3RlclNldF07CisKK2NsYXNzIFJlZ2lzdGVyU2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3Rl
clNldCgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkJ5dGVzSW5S
ZWdpc3RlclNldDsgaS0tOykKKyAgICAgICAgICAgIG1fc2V0W2ldID0gMDsKKyAgICB9CisgICAg
CisgICAgUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXRQT0QmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRlc0luUmVnaXN0ZXJTZXQ7IGktLTsp
CisgICAgICAgICAgICBtX3NldFtpXSA9IG90aGVyW2ldOworICAgIH0KKyAgICAKKyAgICBjb25z
dCBSZWdpc3RlclNldFBPRCYgYXNQT0QoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQorICAgIAor
ICAgIHZvaWQgY29weUluZm8oUmVnaXN0ZXJTZXRQT0QmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRlc0luUmVnaXN0ZXJTZXQ7IGktLTsp
CisgICAgICAgICAgICBvdGhlcltpXSA9IG1fc2V0W2ldOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHNldChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0Qml0KEdQUkluZm86OnRvSW5kZXgo
cmVnKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0R1BSQnlJbmRleCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzKTsKKyAgICAgICAgc2V0Qml0KGluZGV4KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVh
cihHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgY2xlYXJCaXQoR1BSSW5mbzo6dG9JbmRleChy
ZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoR1BSUmVnIHJlZykgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBnZXRHUFJCeUluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGluZGV4IDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAg
ICAgICByZXR1cm4gZ2V0Qml0KGluZGV4KTsKKyAgICB9CisgICAgCisgICAgLy8gUmV0dXJuIHRo
ZSBpbmRleCd0aCBmcmVlIEdQUi4KKyAgICBHUFJSZWcgZ2V0RnJlZUdQUih1bnNpZ25lZCBpbmRl
eCA9IDApIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKCFnZXRHUFJCeUluZGV4
KGkpICYmICFpbmRleC0tKQorICAgICAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHNldChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0Qml0KEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzZXRGUFJCeUluZGV4KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAg
ICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGNsZWFyQml0KEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjp0b0luZGV4
KHJlZykpOworICAgIH0KKyAgICAKKyAgICBib29sIGdldEZQUkJ5SW5kZXgodW5zaWduZWQgaW5k
ZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhbmtJ
bmZvPgorICAgIHZvaWQgc2V0QnlJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IHNldChCYW5rSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICBib29sIGdldEJ5SW5kZXgodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGluZGV4
KSk7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mU2V0R1BScygpIGNvbnN0Cisg
ICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYg
KCFnZXRCaXQoaSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXN1
bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlNldEZQUnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlmICghZ2V0Qml0KEdQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzICsgaSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0CisgICAgewor
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0
b3RhbE51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAoIWdldEJpdChp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAg
ICB2b2lkIHNldEJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3Rh
bE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSB8PSAoMSA8PCAoaSAm
IDcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhckJpdCh1bnNpZ25lZCBpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9z
ZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7CisgICAgfQorICAgIAorICAgIGJvb2wgZ2V0
Qml0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHRvdGFsTnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gISEobV9zZXRbaSA+PiAzXSAmICgxIDw8
IChpICYgNykpKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXRQT0QgbV9zZXQ7Cit9Owor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbHNlIC8vIEVOQUJMRShERkdfSklUKSAt
PiBzbyBpZiBERkcgaXMgZGlzYWJsZWQKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCisvLyBEZWZpbmUgUmVnaXN0ZXJTZXRQT0QgdG8gc29tZXRoaW5nIHRoYXQgaXMgYSBQT0Qs
IGJ1dCBpcyBvdGhlcndpc2UgdXNlbGVzcywKKy8vIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlZmVy
IHRvIHRoaXMgdHlwZSBpbiBjb2RlIHRoYXQgaXMgbm90IERGRy1zcGVjaWZpYy4KKworc3RydWN0
IFJlZ2lzdGVyU2V0UE9EIHsgfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdSZWdpc3RlclNldF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTIy
Njc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJERkdUaHVu
a3MuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKQEAgLTE2MSw3ICsxNjIs
NyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZh
bHVlVGFnR1BSKTsKICNlbmRpZgogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxH
UFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsK
KyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLmRmZy51
c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAgICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRj
aCA9IGZhbHNlOwogICAgIAogICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcpIHsK
QEAgLTIzMSw3ICsyMzIsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRl
KiBlCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0
dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlR1BS
KTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJ
bmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBS
ZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigp
OwogICAgICAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlciBzdHViSml0OwpAQCAtMzg0LDcgKzM4NSw3IEBAIHN0YXRp
YyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgR1BSUmVnIHJlc3Vs
dFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFn
R1BSKTsKICNlbmRpZgogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BS
UmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnNjcmF0Y2hHUFIp
OworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNo
LmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAgICAgICAgIAogICAgICAgICBDQ2Fs
bEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRhLCBjb2RlQmxvY2spOwogICAgICAgICAKQEAgLTYy
OSw3ICs2MzAsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgR1BSUmVn
IHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFs
dWVUYWdHUFIpOwogI2VuZGlmCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BS
UmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNl
ZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2gg
PSBmYWxzZTsKICNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJ
TkcpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyOwpAQCAtNzIyLDg5ICs3MjMsMjAzIEBAIHN0YXRp
YyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5k
aWYKICAgICBHUFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBh
dGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0aWNfY2FzdDxH
UFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKLSAgICBib29sIG5lZWRUb1Jl
c3RvcmVTY3JhdGNoID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICBBU1NFUlQoc2NyYXRjaEdQ
UiAhPSBiYXNlR1BSKTsKKyAgICAKKyAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2Nh
dG9yKHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKKyAgICBhbGxvY2F0b3IubG9j
ayhiYXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGFsbG9jYXRvci5sb2NrKHZh
bHVlVGFnR1BSKTsKKyNlbmRpZgorICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlR1BSKTsKKyAgICAK
KyAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIxID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgIEFTU0VSVChzY3JhdGNoR1BSMSAhPSBiYXNl
R1BSKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjEgIT0gdmFsdWVHUFIpOworICAgIAorICAgIGJv
b2wgbmVlZFNlY29uZFNjcmF0Y2ggPSBmYWxzZTsKKyAgICBib29sIG5lZWRUaGlyZFNjcmF0Y2gg
PSBmYWxzZTsKKyNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJ
TkcpCisgICAgbmVlZFNlY29uZFNjcmF0Y2ggPSB0cnVlOworI2VuZGlmCisgICAgaWYgKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgIG5lZWRTZWNvbmRTY3JhdGNoID0gdHJ1ZTsKKyAgICAgICAgbmVlZFRoaXJkU2NyYXRj
aCA9IHRydWU7CisgICAgfQorCisgICAgR1BSUmVnIHNjcmF0Y2hHUFIyOworICAgIGlmIChuZWVk
U2Vjb25kU2NyYXRjaCkgeworICAgICAgICBzY3JhdGNoR1BSMiA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIyICE9IGJhc2VHUFIpOwor
ICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gdmFsdWVHUFIpOworICAgICAgICBBU1NFUlQo
c2NyYXRjaEdQUjIgIT0gc2NyYXRjaEdQUjEpOworICAgIH0gZWxzZQorICAgICAgICBzY3JhdGNo
R1BSMiA9IEludmFsaWRHUFJSZWc7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIzOworICAgIGlmIChu
ZWVkVGhpcmRTY3JhdGNoKSB7CisgICAgICAgIHNjcmF0Y2hHUFIzID0gYWxsb2NhdG9yLmFsbG9j
YXRlU2NyYXRjaEdQUigpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjMgIT0gYmFzZUdQUik7
CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMyAhPSB2YWx1ZUdQUik7CisgICAgICAgIEFTU0VS
VChzY3JhdGNoR1BSMyAhPSBzY3JhdGNoR1BSMSk7CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BS
MyAhPSBzY3JhdGNoR1BSMik7CisgICAgfSBlbHNlCisgICAgICAgIHNjcmF0Y2hHUFIzID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgICAgIAorICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZyhzdHViSml0KTsKKwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgICAgICAKLSAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7Ci0gICAgICAgIHNjcmF0Y2hHUFIgPSBTcGVjdWxhdGl2ZUpJVDo6c2VsZWN0
U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7Ci0gICAgICAgIHN0dWJKaXQucHVzaChzY3Jh
dGNoR1BSKTsKLSAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSB0cnVlOwotICAgIH0KLSAg
ICAKICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0Jl
ZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsKICAgICAKICAgICBhZGRTdHJ1Y3R1cmVUcmFu
c2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGV4
ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVyZUNhc2VzLAotICAgICAg
ICBzY3JhdGNoR1BSKTsKKyAgICAgICAgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgCiAgICAg
aWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CiAgICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGl0ID0gcHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KSB7CiAgICAg
ICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgKCpp
dCktPnN0b3JlZFByb3RvdHlwZSgpLCBleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8sIHN0dWJK
aXQsIGZhaWx1cmVDYXNlcywKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgICAgICBzY3JhdGNoR1BSMSk7CiAgICAgICAgIH0KICAgICB9CiAKICNpZiBFTkFCTEUoR0dD
KSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgQVNTRVJUKG5lZWRTZWNv
bmRTY3JhdGNoKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgLy8gTXVzdCBhbHdheXMgZW1pdCB0aGlzIHdyaXRlIGJhcnJpZXIgYXMgdGhlIHN0cnVjdHVy
ZSB0cmFuc2l0aW9uIGl0c2VsZiByZXF1aXJlcyBpdAotICAgIEdQUlJlZyBzY3JhdGNoMiA9IFNw
ZWN1bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHZhbHVlR1BSLCBzY3JhdGNo
R1BSKTsKLSAgICBzdHViSml0LnB1c2goc2NyYXRjaDIpOwotICAgIFNwZWN1bGF0aXZlSklUOjp3
cml0ZUJhcnJpZXIoc3R1YkppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDIsIFdyaXRl
QmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKLSAgICBzdHViSml0LnBvcChzY3JhdGNoMik7Cisg
ICAgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BSLCBzY3JhdGNo
R1BSMSwgc2NyYXRjaEdQUjIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICNlbmRp
ZgorICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKyAgICAKKyAg
ICBib29sIHNjcmF0Y2hHUFIxSGFzU3RvcmFnZSA9IGZhbHNlOworICAgIAorICAgIGlmIChzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKSB7CisgICAgICAgIHNpemVfdCBuZXdTaXplID0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICBDb3BpZWRBbGxvY2F0b3IqIGFs
bG9jYXRvciA9ICZnbG9iYWxEYXRhLT5oZWFwLnN0b3JhZ2VBbGxvY2F0b3IoKTsKKyAgICAgICAg
CisgICAgICAgIGlmICghb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAg
ICAgICAgICBzdHViSml0LmxvYWRQdHIoJmFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nLCBz
Y3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hT
dWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihuZXdTaXplKSwgc2NyYXRjaEdQUjEpKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIo
c2NyYXRjaEdQUjEsICZhbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgICAg
ICBzdHViSml0Lm5lZ1B0cihzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LmFkZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZhbGxvY2F0b3ItPm1fY3VycmVudFBh
eWxvYWRFbmQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSMSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IG9sZFN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChu
ZXdTaXplID4gb2xkU2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE9wdGltaXN0
aWNhbGx5IGFzc3VtZSB0aGF0IHRoZSBvbGQgc3RvcmFnZSB3YXMgdGhlIHZlcnkgbGFzdCB0aGlu
ZworICAgICAgICAgICAgLy8gYWxsb2NhdGVkLgorICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9m
TGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0
cigmYWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kLCBzY3JhdGNoR1BSMik7CisgICAgICAg
ICAgICBzdHViSml0LmxvYWRQdHIoJmFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3Jh
dGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIpOworICAgICAgICAgICAgc3R1YkppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihvbGRTaXplKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbmVlZEZ1bGxSZWFsbG9jID0KKyAgICAgICAgICAgICAgICBzdHViSml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMyk7
CisgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hTdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlNpZ25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplIC0g
b2xkU2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKHNj
cmF0Y2hHUFIxLCAmYWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOworICAgICAgICAgICAg
c3R1YkppdC5tb3ZlKHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lUmVhbGxvYyA9IHN0dWJKaXQuanVtcCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBuZWVkRnVsbFJlYWxsb2MubGluaygmc3R1YkppdCk7CisgICAgICAg
ICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hTdWJQdHIoTWFjcm9Bc3NlbWJsZXI6
OlNpZ25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQ
UjEpKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjEsICZhbGxvY2F0
b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgICAgICBzdHViSml0Lm5lZ1B0cihzY3Jh
dGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJz
b2x1dGVBZGRyZXNzKCZhbGxvY2F0b3ItPm1fY3VycmVudFBheWxvYWRFbmQpLCBzY3JhdGNoR1BS
MSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHNjcmF0
Y2hHUFIxID0gbmV3IHN0b3JhZ2UsIHNjcmF0Y2hHUFIzID0gb2xkIHN0b3JhZ2UsIHNjcmF0Y2hH
UFIyID0gYXZhaWxhYmxlCisgICAgICAgICAgICBmb3IgKHNpemVfdCBvZmZzZXQgPSAwOyBvZmZz
ZXQgPCBvbGRTaXplOyBvZmZzZXQgKz0gc2l6ZW9mKEpTVmFsdWUpKSB7CisgICAgICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIzLCBv
ZmZzZXQpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihz
Y3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIG9mZnNldCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBkb25lUmVhbGxvYy5s
aW5rKCZzdHViSml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3R1YkppdC5zdG9y
ZVB0cihzY3JhdGNoR1BSMSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CisgICAgICAgIHNjcmF0Y2hHUFIxSGFz
U3RvcmFnZSA9IHRydWU7CisgICAgfQogCiAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0
dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFn
ZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGVsc2Ugewot
ICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0gICAg
ICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBpZiAoIXNjcmF0Y2hHUFIxSGFzU3RvcmFnZSkK
KyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSMSk7
CisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewogICAgICAg
ICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3Rv
cmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKICAgICAgICAg
c3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkp
ICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5l
U3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOworICAgICAgICBp
ZiAoIXNjcmF0Y2hHUFIxSGFzU3RvcmFnZSkKKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxp
bmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIG9mZnNldEluT3V0T2ZM
aW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAg
ICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSMSwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0
KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZh
aWx1cmU7CiAgICAgICAgICAgICAKLSAgICBpZiAobmVlZFRvUmVzdG9yZVNjcmF0Y2gpIHsKLSAg
ICAgICAgc3R1YkppdC5wb3Aoc2NyYXRjaEdQUik7CisgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVz
ZVJlZ2lzdGVycygpKSB7CisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJz
QnlQb3BwaW5nKHN0dWJKaXQpOwogICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAK
ICAgICAgICAgZmFpbHVyZUNhc2VzLmxpbmsoJnN0dWJKaXQpOwotICAgICAgICBzdHViSml0LnBv
cChzY3JhdGNoR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNC
eVBvcHBpbmcoc3R1YkppdCk7CiAgICAgICAgIGZhaWx1cmUgPSBzdHViSml0Lmp1bXAoKTsKICAg
ICB9IGVsc2UKICAgICAgICAgc3VjY2VzcyA9IHN0dWJKaXQuanVtcCgpOwotICAgICAgICAgICAg
CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzSW5TbG93UGF0aDsKKyAgICAKKyAgICBpZiAoc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICBzbG93UGF0aC5saW5rKCZzdHViSml0KTsKKyAgICAgICAgCisgICAg
ICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKHN0dWJKaXQpOwor
ICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gZ2xvYmFsRGF0YS0+c2NyYXRj
aEJ1ZmZlckZvclNpemUoYWxsb2NhdG9yLmRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZSgpKTsKKyAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlVXNlZFJlZ2lzdGVyc1RvU2NyYXRjaEJ1ZmZlcihzdHVi
Sml0LCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNoR1BSMSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVHUFIpOworI2Vsc2UKKyAgICAgICAg
c3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVUYWdHUFIsIHZhbHVlR1BSKTsKKyNlbmRpZgor
ICAgICAgICBvcGVyYXRpb25DYWxsID0gc3R1YkppdC5jYWxsKCk7CisgICAgICAgIGFsbG9jYXRv
ci5yZXN0b3JlVXNlZFJlZ2lzdGVyc0Zyb21TY3JhdGNoQnVmZmVyKHN0dWJKaXQsIHNjcmF0Y2hC
dWZmZXIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgc3VjY2Vzc0luU2xvd1BhdGggPSBzdHViSml0
Lmp1bXAoKTsKKyAgICB9CisgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFs
RGF0YSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKLSAgICBpZiAobmVlZFRvUmVzdG9yZVNj
cmF0Y2gpCisgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1cmVMYWJlbCk7CiAgICAgZWxzZQogICAgICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVDYXNlcywgZmFpbHVyZUxhYmVsKTsKLSAgICAKLSAg
ICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCi0gICAgICAgIHBhdGNoQnVm
ZmVyLAotICAgICAgICAoIkRGRyBQdXRCeUlkIHRyYW5zaXRpb24gc3R1YiBmb3IgQ29kZUJsb2Nr
ICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAg
ICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbkNh
bGwsIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNoUHV0KTsKKyAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhzdWNjZXNzSW5TbG93UGF0aCwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkpOwor
ICAgIH0KKyAgICAKKyAgICBzdHViUm91dGluZSA9CisgICAgICAgIGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKAorICAgICAgICAgICAgRklOQUxJWkVfQ09ERSgKKyAgICAgICAgICAgICAgICBwYXRjaEJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAoIkRGRyBQdXRCeUlkIHRyYW5zaXRpb24gc3R1YiBmb3Ig
Q29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAqZ2xvYmFsRGF0YSwKKyAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKKyAgICAgICAgICAgIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogfQogCiBzdGF0aWMgYm9vbCB0cnlD
YWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCkBAIC04MjksOCArOTQ0LDExIEBAIHN0
YXRpYyBib29sIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdo
ZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAg
ICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxv
YywgaWYgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgLy8gZW5vdWdoIHJlZ2lzdGVycyB0byBt
YWtlIGl0IGhhcHBlbi4KKyAgICAgICAgICAgIGlmIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyA8IDYKKyAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCisgICAgICAgICAgICAgICAgJiYg
b2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODkyLDggKzEwMTAsMTEgQEAgc3RhdGljIGJvb2wgdHJ5
QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBh
IHJlYWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgLy8gU2tp
cCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jLCBpZiB3ZSBkb24n
dCBoYXZlCisgICAgICAgICAgICAvLyBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgaXQgaGFwcGVu
LgorICAgICAgICAgICAgaWYgKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzIDwgNgorICAgICAg
ICAgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNl
Q2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisjZGVmaW5lIERG
R1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJTZXQuaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKKy8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgcmVnaXN0ZXIgYWxsb2Nh
dG9yIGZvciB1c2UgaW4gc3R1YnMuCisKK2NsYXNzIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciB7
CitwdWJsaWM6CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yKGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzKQorICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJz
KQorICAgICAgICAsIG1fZGlkUmV1c2VSZWdpc3RlcnMoZmFsc2UpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgbG9jayhUIHJlZykgeyBtX2xv
Y2tlZFJlZ2lzdGVycy5zZXQocmVnKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJh
bmtJbmZvPgorICAgIHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgYWxsb2NhdGVTY3Jh
dGNoKCkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0IHRyeSB0byBhbGxvY2F0ZSBhIHJlZ2lzdGVy
IHRoYXQgaXMgdG90YWxseSBmcmVlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
QmFua0luZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIHR5cGVuYW1l
IEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgcmVnID0gQmFua0luZm86OnRvUmVnaXN0ZXIoaSk7Cisg
ICAgICAgICAgICBpZiAoIW1fbG9ja2VkUmVnaXN0ZXJzLmdldChyZWcpCisgICAgICAgICAgICAg
ICAgJiYgIW1fdXNlZFJlZ2lzdGVycy5nZXQocmVnKQorICAgICAgICAgICAgICAgICYmICFtX3Nj
cmF0Y2hSZWdpc3RlcnMuZ2V0KHJlZykpIHsKKyAgICAgICAgICAgICAgICBtX3NjcmF0Y2hSZWdp
c3RlcnMuc2V0KHJlZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU2luY2UgdGhhdCBmYWlsZWQsIHRy
eSB0byBhbGxvY2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMgbm90IHlldAorICAgICAgICAvLyBsb2Nr
ZWQgb3IgdXNlZCBmb3Igc2NyYXRjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEJhbmtJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICB0eXBlbmFt
ZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOwor
ICAgICAgICAgICAgaWYgKCFtX2xvY2tlZFJlZ2lzdGVycy5nZXQocmVnKSAmJiAhbV9zY3JhdGNo
UmVnaXN0ZXJzLmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAgbV9zY3JhdGNoUmVnaXN0ZXJz
LnNldChyZWcpOworICAgICAgICAgICAgICAgIG1fZGlkUmV1c2VSZWdpc3RlcnMgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHJldHVybiByZWc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIFdlIGZhaWxlZC4KKyAgICAgICAgQ1JBU0goKTsKKyAgICB9Cisg
ICAgCisgICAgR1BSUmVnIGFsbG9jYXRlU2NyYXRjaEdQUigpIHsgcmV0dXJuIGFsbG9jYXRlU2Ny
YXRjaDxHUFJJbmZvPigpOyB9CisgICAgRlBSUmVnIGFsbG9jYXRlU2NyYXRjaEZQUigpIHsgcmV0
dXJuIGFsbG9jYXRlU2NyYXRjaDxGUFJJbmZvPigpOyB9CisgICAgCisgICAgYm9vbCBkaWRSZXVz
ZVJlZ2lzdGVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kaWRSZXVzZVJlZ2lz
dGVyczsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVz
aGluZyhNYWNyb0Fzc2VtYmxlciYgaml0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2RpZFJldXNl
UmVnaXN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSAmJiBtX3Vz
ZWRSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSkgeworICAgICAgICAgICAgICAgIGppdC5zdWJQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgaWYgKG1f
c2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXRH
UFJCeUluZGV4KGkpKQorICAgICAgICAgICAgICAgIGppdC5wdXNoKEdQUkluZm86OnRvUmVnaXN0
ZXIoaSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgcmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2VtYmxlciYgaml0KQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2RpZFJldXNlUmVnaXN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTsp
IHsKKyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSAm
JiBtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqaXQu
cG9wKEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAg
ICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0
ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEZQUkluZm86OnRvUmVnaXN0ZXIo
aSkpOworICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMig4KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBkZXNpcmVkU2NyYXRj
aEJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX3VzZWRSZWdpc3RlcnMubnVtYmVyT2ZTZXRS
ZWdpc3RlcnMoKTsgfQorICAgIAorICAgIHZvaWQgcHJlc2VydmVVc2VkUmVnaXN0ZXJzVG9TY3Jh
dGNoQnVmZmVyKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIsIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX3VzZWRSZWdpc3RlcnMu
Z2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6
dG9SZWdpc3RlcihpKSwgc2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpOworICAg
ICAgICAgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZyAmJiAhbV9sb2NrZWRSZWdp
c3RlcnMuZ2V0R1BSQnlJbmRleChpKSAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5k
ZXgoaSkpCisgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIo
aSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgo
aSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5tX2J1ZmZlciArIChjb3VudCsrKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY291
bnQgPT0gZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkpOworICAgICAgICAKKyAgICAgICAgaml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnNjcmF0Y2hCdWZmZXItPm1fYWN0
aXZlTGVuZ3RoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KGNvdW50KSksIHNjcmF0Y2hH
UFIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlc3RvcmVVc2VkUmVnaXN0ZXJzRnJvbVNjcmF0
Y2hCdWZmZXIoTWFjcm9Bc3NlbWJsZXImIGppdCwgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciwgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgaWYg
KHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgLy8gRmluZCBhIHNj
cmF0Y2ggcmVnaXN0ZXIuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZFJl
Z2lzdGVycy5nZXRHUFJCeUluZGV4KGkpIHx8IG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUlu
ZGV4KGkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBz
Y3JhdGNoR1BSID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKCZzY3JhdGNoQnVmZmVyLT5tX2FjdGl2ZUxlbmd0aCksIHNjcmF0
Y2hHUFIpOworICAgICAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoMCksIHNjcmF0Y2hHUFIpOworCisgICAgICAgIC8vIFJlc3RvcmUgZG91YmxlIHJlZ2lzdGVy
cyBmaXJzdC4KKyAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX3VzZWRSZWdpc3RlcnMubnVtYmVy
T2ZTZXRHUFJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0ZXJzLmdldEZQ
UkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5tX2J1ZmZlciArIChjb3VudCsrKSksIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKHNjcmF0Y2hHUFIsIEZQUklu
Zm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0ZXJz
LmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoc2NyYXRjaEJ1
ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKyksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAg
ICAgICB9CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdp
c3RlcnM7CisgICAgUmVnaXN0ZXJTZXQgbV9sb2NrZWRSZWdpc3RlcnM7CisgICAgUmVnaXN0ZXJT
ZXQgbV9zY3JhdGNoUmVnaXN0ZXJzOworICAgIGJvb2wgbV9kaWRSZXVzZVJlZ2lzdGVyczsKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQorCisjZW5kaWYgLy8gREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50MwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3Rl
cnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVj
dHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVD
aGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90
RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwpAQCAtNTIwLDEzICs1MjAsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIFByb3BlcnR5QWNjZXNz
UmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1
Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRjaCwKICAgICAgICAg
ICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiks
IHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhf
dD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzKCksCiAgICAgICAgICAg
ICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0
ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7Ci0KLQotICAgIGlmIChz
Y3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcgJiYg
c3BpbGxNb2RlID09IE5lZWRUb1NwaWxsKQotICAgICAgICB1bmxvY2soc2NyYXRjaEdQUik7CiB9
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5k
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkKQEAgLTU2OCwxMSArNTY0LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlR1BSLCBiYXNlR1BS
LAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQorICAg
IFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7Cisg
ICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoR1BSKTsKKyAgICBBU1NFUlQo
Y3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQUikpOworICAgIEFTU0VSVChjdXJyZW50
bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZUdQUikpOwogICAgIG1faml0LmFkZFByb3BlcnR5QWNj
ZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAgICAgIGNvZGVPcmln
aW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3RvcmFnZUxv
YWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChzdG9yZVdpdGhQ
YXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAgICAgICAgICAgIHNh
ZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFsdWVHUFIpLCBzYWZl
Q2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+
KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgY3VycmVudGx5VXNlZFJlZ2lz
dGVycykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9
CiAKQEAgLTMzMTksMTYgKzMzMTksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChyZXN1bHRHUFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BSID0g
dHJ5QWxsb2NhdGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzY3JhdGNo
R1BSID0gcmVzdWx0R1BSOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwg
YmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7
CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVz
dWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzMzOSwxOCArMzMzMywx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwotICAgICAg
ICAKLSAgICAgICAgaWYgKHJlc3VsdEdQUiA9PSBiYXNlR1BSKQotICAgICAgICAgICAgc2NyYXRj
aEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcmF0Y2hH
UFIgPSByZXN1bHRHUFI7CiAgICAgICAgIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIo
SklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7
CiAgICAgICAgIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQ
UiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1
bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgCkBAIC0zMzcxLDEzICszMzU5LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJl
c3VsdEdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgp
LCBEb250U3BpbGwpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4s
IGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIERvbnRTcGlsbCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM4OSwxNCArMzM3NSwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
ICAgIAotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQ
UiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RD
ZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywgYmFzZUdQUiwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUu
aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOworICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZp
ZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw2ICsy
NzIsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdXNlKG5vZGVVc2UuaW5kZXgoKSk7CiAg
ICAgfQorICAgIAorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMoKQorICAgIHsKKyAgICAg
ICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IEdQ
UkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICBpZiAobV9ncHJzLmlzSW5Vc2UoZ3By
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGdwcik7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAg
ICAgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICAg
ICAgaWYgKG1fZnBycy5pc0luVXNlKGZwcikpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNldChm
cHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgbWFya0NlbGxDYXJkKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BSLCBH
UFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMik7CiAgICAgc3RhdGljIHZvaWQg
d3JpdGVCYXJyaWVyKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgV3JpdGVCYXJyaWVyVXNlS2luZCk7CkBAIC05
NDIsMTAgKzk1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZVVJbnQzMlRv
TnVtYmVyKE5vZGUmKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcg
c2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNw
aWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJlZyB2YWx1ZSwgRWRnZSB2YWx1ZVVzZSwgR1BS
UmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVz
dWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwp
OworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVy
c01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBHUFJSZWcgdmFsdWVQ
YXlsb2FkR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
PSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMTIyNjc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb3BpZWRBbGxvY2F0
b3IgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiBwdWJsaWM6CiAgICAgQ29waWVkQWxsb2NhdG9y
KCk7CiAgICAgCkBAIC00Niw5ICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1Zh
bGlkKCkgeyByZXR1cm4gISFtX2N1cnJlbnRCbG9jazsgfQogCi1wcml2YXRlOgogICAgIENvcGll
ZEJsb2NrKiBjdXJyZW50QmxvY2soKSB7IHJldHVybiBtX2N1cnJlbnRCbG9jazsgfQogCisgICAg
Ly8gWWVzLCB0aGVzZSBhcmUgcHVibGljLiBObywgdGhhdCBkb2Vzbid0IG1lYW4geW91IGNhbiBw
bGF5IHdpdGggdGhlbS4KKyAgICAvLyBJZiBJIGhhZCBtYWRlIHRoZW0gcHJpdmF0ZSB0aGVuIEkn
ZCBoYXZlIHRvIGxpc3Qgb2ZmIGFsbCBvZiB0aGUgSklUCisgICAgLy8gY2xhc3NlcyBhbmQgZnVu
Y3Rpb25zIHRoYXQgYXJlIGVudGl0bGVkIHRvIG1vZGlmeSB0aGVzZSBkaXJlY3RseSwgYW5kCisg
ICAgLy8gdGhhdCB3b3VsZCBoYXZlIGJlZW4gZ3Jvc3MuCiAgICAgc2l6ZV90IG1fY3VycmVudFJl
bWFpbmluZzsKICAgICBjaGFyKiBtX2N1cnJlbnRQYXlsb2FkRW5kOwogICAgIENvcGllZEJsb2Nr
KiBtX2N1cnJlbnRCbG9jazsgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152487</attachid>
            <date>2012-07-15 23:57:27 -0700</date>
            <delta_ts>2012-07-16 00:07:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>dfgtransition_patch_4.diff</filename>
            <type>text/plain</type>
            <size>67362</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMi0wNy0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBQdXRCeUlkIHRyYW5zaXRpb24gc2hvdWxkIGhhbmRsZSBzdG9yYWdlIGFsbG9jYXRpb24s
IGFuZCBpbmxpbmUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBlbmFibGVzIHRoZSBwYXRjaGluZyBvZiBERkcgUHV0QnlJZCB0byBoYW5kbGUg
dGhlIG91dC1vZi1saW5lIHN0b3JhZ2UKKyAgICAgICAgYWxsb2NhdGlvbiBjYXNlLiBGdXJ0aGVy
bW9yZSwgaXQgaW5saW5lcyBvdXQtb2YtbGluZSBzdG9yYWdlIGFsbG9jYXRpb24gKGFuZAorICAg
ICAgICByZWFsbG9jYXRpb24pIGludG8gdGhlIGdlbmVyYXRlZCBzdHVicy4gIAorICAgICAgICAK
KyAgICAgICAgVG8gZG8gdGhpcywgdGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHN0b3Jl
IHRoZSByZWxldmFudCByZWdpc3RlcgorICAgICAgICBhbGxvY2F0aW9uIHN0YXRlIChpLmUuIHRo
ZSBzZXQgb2YgaW4tdXNlIHJlZ2lzdGVycykgaW4gdGhlIHN0cnVjdHVyZSBzdHViCisgICAgICAg
IGluZm8gc28gdGhhdCB0aGUgc3R1YiBnZW5lcmF0aW9uIGNvZGUgY2FuIG1vcmUgZmxleGlibHkg
c2VsZWN0IHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXJzOiBzb21ldGltZXMgaXQgbmVlZHMgbm9u
ZSwgc29tZXRpbWVzIG9uZSAtIG9yIHNvbWV0aW1lcyB1cCB0bworICAgICAgICB0aHJlZS4gTW9y
ZW92ZXIsIHRvIG1ha2UgdGhlIHN0dWIgZ2VuZXJhdGlvbiByZWdpc3RlciBhbGxvY2F0aW9uIHNp
bXBsZSBhbmQKKyAgICAgICAgbWFpbnRhaW5hYmxlLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBy
ZXVzYWJsZSBzY3JhdGNoIHJlZ2lzdGVyIGFsbG9jYXRvcgorICAgICAgICBjbGFzcy4gVGhpcyBy
ZWdpc3RlciBhbGxvY2F0b3IgdW5kZXJzdGFuZHMgdGhhdCBzb21lIHJlZ2lzdGVycyBhcmUgaW4g
dXNlIGJ5CisgICAgICAgIHRoZSBtYWluIHBhdGggY29kZSBhbmQgc28gbXVzdCBiZSBzcGlsbGVk
IGFzIG5lY2Vzc2FyeSwgb3RoZXIgcmVnaXN0ZXJzIGFyZQorICAgICAgICBsb2NrZWQgZm9yIHVz
ZSBpbiB0aGUgc3R1YiBpdHNlbGYgYW5kIHNvIGNhbm5vdCBldmVuIGJlIHNwaWxsZWQsIHdoaWxl
IHN0aWxsCisgICAgICAgIG90aGVycyBtYXkgYmUgYWxsb2NhdGVkIGZvciBzY3JhdGNoIHB1cnBv
c2VzLiBBIHNjcmF0Y2ggcmVnaXN0ZXIgdGhhdCBpcworICAgICAgICB1c2VkIG11c3QgYmUgc3Bp
bGxlZC4gSWYgYSByZWdpc3RlciBpcyBsb2NrZWQsIGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEKKyAg
ICAgICAgc2NyYXRjaCByZWdpc3Rlci4gSWYgYSByZWdpc3RlciBpcyB1c2VkLCBpdCBjYW4gYmUg
dXNlZCBhcyBhIHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXIgc28gbG9uZyBhcyBpdCBpcyBzcGls
bGVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIHN1Yi0xJSBzcGVlZC11cCBvbiBWOCBh
bmQgbmV1dHJhbCBlbHNld2hlcmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoRnVuY3Rp
b25QdHIpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0NDYWxs
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgICogZGZn
L0RGR0dQUkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlckJhbms6OmlzSW5Vc2UpOgorICAgICAgICAoUmVnaXN0ZXJCYW5rKToKKyAgICAgICAg
KiBkZmcvREZHUmVnaXN0ZXJTZXQuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAo
UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpSZWdpc3RlclNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmFzUE9EKToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Y29weUluZm8pOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpzZXRHUFJCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpnZXRHUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0
RnJlZUdQUik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEZQUkJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXRGUFJCeUluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6c2V0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6UmVnaXN0ZXJTZXQ6OmdldEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEdQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0Ojpu
dW1iZXJPZlNldEZQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJP
ZlNldFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEJpdCk6
CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmNsZWFyQml0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Z2V0Qml0KToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0
cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0
dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAg
IChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWls
ZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUik6CisgICAgICAgIChK
U0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkaWRSZXVzZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZl
cik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxh
dGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnVzZWRSZWdpc3Rl
cnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
aGVhcC9Db3BpZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKENvcGllZEFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6OkNvcGllZEFsbG9jYXRvcjo6ZmFzdFBhdGhTaG91bGRTdWNjZWVkKToKKyAgICAg
ICAgKEpTQyk6CisKIDIwMTItMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgUHV0QnlWYWwgb3Bjb2RlcyBzaG91bGQgYWNjZXB0IG1vcmUgdGhhbiAz
IG9wZXJhbmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw5ICsyMTYsMTEgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1bmRhbnRQ
aGlFbGltaW5hdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJCYW5rLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDYgKzE1MCw4IEBACiAJCTBGNzY2RDM1MTVBRTI1M0IwMDhGMzYzRSAvKiBKdW1wUmVwbGFj
ZW1lbnRXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQzMzE1QUUyNTM1MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hw
b2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcCAqLzsgfTsKIAkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0MjE1QjJB
M0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyogREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZHU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5
MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFG
MTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk1LDYgKzg5Nyw4IEBACiAJCTBGNzY2
RDMzMTVBRTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8q
IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVy
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyU2V0Lmg7
IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNh
bXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGlu
Z0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYy
ODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxsSGVscGVycy5oOyBwYXRoID0g
ZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMw
NCw5ICsyMzA4LDExIEBACiAJCQkJMEE0MzM3QkExNTA2MjE4ODAwOTkxQzk1IC8qIERGR1JlZHVu
ZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuY3BwICovLAogCQkJCTBBNDMzN0JEMTUwNjIxOUIwMDk5
MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggKi8sCiAJCQkJODZFQzlE
QzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAorCQkJCTBGNzY2RDQy
MTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oICovLAogCQkJCTg2QkIwOUJFMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLywKIAkJCQk4NkJCMDlCRjEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovLAogCQkJCTg2RUNBM0Y5MTMyREYyNUEwMDJCMkFE
NyAvKiBERkdTY29yZUJvYXJkLmggKi8sCisJCQkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8q
IERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAogCQkJCTBGMUUzQTY1MTUzQTIxREYw
MDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggKi8sCiAJCQkJMEYxRTNBNTAx
NTM3QzJDQjAwMEY5NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggKi8sCiAJCQkJODZFQzlE
QzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLywKQEAgLTI4NTAs
NiArMjg1Niw4IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyogSnVt
cFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzkxNUFF
NEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJ
KHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTMgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUx
LCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTMsIHR5cGVuYW1lIGFyZ1R5cGU0
LCB0eXBlbmFtZSBhcmdUeXBlNT4KKyAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1KSkKKyAgICAg
ICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgfQorCiAvLyBNU1ZDIGRvZXNuJ3Qgc2VlbSB0byB0
cmVhdCBmdW5jdGlvbnMgd2l0aCBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucyBhcwogLy8g
ZGlmZmVyZW50IHR5cGVzOyB0aGVzZSBtZXRob2RzIGFscmVhZHkgZGVmaW5lZCBmb3IgZmFzdGNh
bGwsIGJlbG93LgogI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMICYmICFPUyhXSU5E
T1dTKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgpAQCAtMjEy
LDcgKzIxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKICNlbmRpZgogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKLSAgICAg
ICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKKyAgICAgICAgICAgICAgICBERkc6OlJlZ2lz
dGVyU2V0UE9EIHVzZWRSZWdpc3RlcnM7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb0RvbmU7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24g
MTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzUpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTY0
Miw2ICs2NjMsMTkgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCAx
KTsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewogICAgICAgICBwb2tlKGFy
ZzQpOwpAQCAtNzIyLDYgKzc1NiwxNiBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnNCk7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
ZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewogICAgICAgICBH
UFJSZWcgc3JjQSA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
MTIgQEAKICNpZm5kZWYgREZHR1BSSW5mb19oCiAjZGVmaW5lIERGR0dQUkluZm9faAogCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUg
PGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oPgotI2luY2x1ZGUgPGRmZy9ERkdSZWdpc3RlckJh
bmsuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVy
QmFuay5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjI2
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0IKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3By
b3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKICAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKICNlbmRpZgotICAg
ICAgICBpbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
c2NyYXRjaEdQUjsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVy
cy5jb3B5SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgaW5mby5w
YXRjaC5kZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lz
dGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdH
UFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJh
bmsuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKQEAg
LTE2OSw3ICsxNzAsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKICAgICAgICAgaW50OF90IGJhc2VHUFIsCiAgICAg
ICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAgICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1vZGUg
cmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0cnVjdCBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIGludDhfdCBiYXNlR1BSLAogICAgICAgICBpbnQ4
X3QgdmFsdWVUYWdHUFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90
IHNjcmF0Y2hHUFIsCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAog
ICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZW5k
aWYKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKQEAgLTIwNCw3ICsyMDUsNyBA
QCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICAsIG1fdmFsdWVUYWdHUFIo
dmFsdWVUYWdHUFIpCiAjZW5kaWYKICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQotICAg
ICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQorICAgICAgICAsIG1fdXNlZFJlZ2lzdGVy
cyh1c2VkUmVnaXN0ZXJzKQogICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkK
ICAgICB7CiAgICAgfQpAQCAtMjI2LDcgKzIyNyw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCB7CiAgICAgaW50OF90IG1fdmFsdWVUYWdHUFI7CiAjZW5kaWYKICAgICBpbnQ4X3QgbV92
YWx1ZUdQUjsKLSAgICBpbnQ4X3QgbV9zY3JhdGNoR1BSOworICAgIFJlZ2lzdGVyU2V0IG1fdXNl
ZFJlZ2lzdGVyczsKICAgICBSZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CiB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNiArMTIzMiwxNSBAQCBzaXplX3QgREZHX09QRVJBVElP
TiBvcGVyYXRpb25Jc0Z1bmN0aW9uCiAgICAgcmV0dXJuIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFs
bG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJh
c2UtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGJhc2Ut
PnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKKyAgICBiYXNlLT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZG91YmxlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uRk1vZE9uSW50cyhpbnQzMl90IGEsIGludDMyX3QgYikKIHsKICAgICByZXR1cm4gZm1v
ZChhLCBiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw3IEBAIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGkKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERGR19P
UEVSQVRJT04gb3BlcmF0aW9uSXNPYmplY3QoRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzRnVuY3Rpb24oRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3Rv
cmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3Bl
cnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogCiAvLyBUaGlzIG1ldGhv
ZCBpcyB1c2VkIHRvIGxvb2t1cCBhbiBleGNlcHRpb24gaGFuZGVyLCBrZXllZCBieSBmYXVsdExv
Y2F0aW9uLCB3aGljaCBpcwogLy8gdGhlIHJldHVybiBsb2NhdGlvbiBmcm9tIG9uZSBvZiB0aGUg
Y2FsbHMgb3V0IHRvIG9uZSBvZiB0aGUgaGVscGVyIG9wZXJhdGlvbnMgYWJvdmUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDEy
MjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bmFtZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQogICAgIAorICAgIGJv
b2wgaXNJblVzZShSZWdJRCByZWcpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNMb2Nr
ZWQocmVnKSB8fCBuYW1lKHJlZykgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKKyAgICB9Cisg
ICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBERkdSZWdpc3RlclNldF9oCisjZGVmaW5lIERGR1JlZ2lzdGVyU2V0X2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNp
bmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHRlBSSW5mby5oIgorI2luY2x1ZGUg
PHd0Zi9CaXRtYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyA9CisgICAgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsKKworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnl0ZXNJblJlZ2lzdGVyU2V0ID0KKyAgICAodG90YWxO
dW1iZXJPZlJlZ2lzdGVycyArIDcpID4+IDM7CisKK3R5cGVkZWYgdWludDhfdCBSZWdpc3RlclNl
dFBPRFtudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldF07CisKK2NsYXNzIFJlZ2lzdGVyU2V0IHsK
K3B1YmxpYzoKKyAgICBSZWdpc3RlclNldCgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldDsgaS0tOykKKyAgICAgICAgICAgIG1fc2V0
W2ldID0gMDsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXRQ
T0QmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBtX3NldFtpXSA9IG90aGVyW2ldOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBSZWdpc3RlclNldFBPRCYgYXNQT0QoKSBjb25zdCB7IHJl
dHVybiBtX3NldDsgfQorICAgIAorICAgIHZvaWQgY29weUluZm8oUmVnaXN0ZXJTZXRQT0QmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBvdGhlcltpXSA9IG1fc2V0W2ldOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0
Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0R1BS
QnlJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc2V0Qml0KGluZGV4KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbGVhcihHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgY2xlYXJC
aXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoR1BS
UmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6dG9J
bmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXRHUFJCeUluZGV4KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gZ2V0Qml0KGluZGV4KTsKKyAgICB9Cisg
ICAgCisgICAgLy8gUmV0dXJuIHRoZSBpbmRleCd0aCBmcmVlIEdQUi4KKyAgICBHUFJSZWcgZ2V0
RnJlZUdQUih1bnNpZ25lZCBpbmRleCA9IDApIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAg
ICAgaWYgKCFnZXRHUFJCeUluZGV4KGkpICYmICFpbmRleC0tKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJ
bnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChGUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgc2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRGUFJCeUluZGV4KHVuc2ln
bmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMpOworICAgICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
KyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKKyAgICB7
CisgICAgICAgIGNsZWFyQml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAgICBib29sIGdldEZQ
UkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBnZXRCaXQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgorICAgIHZvaWQgc2V0QnlJbmRleCh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIHNldChCYW5rSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICBib29sIGdl
dEJ5SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KEJhbmtJ
bmZvOjp0b1JlZ2lzdGVyKGluZGV4KSk7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mU2V0R1BScygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0t
OykgeworICAgICAgICAgICAgaWYgKCFnZXRCaXQoaSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldEZQUnMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlm
ICghZ2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldFJlZ2lz
dGVycygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB0b3RhbE51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAg
ICAgICAgICBpZiAoIWdldEJpdChpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIHNldEJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRb
aSA+PiAzXSB8PSAoMSA8PCAoaSAmIDcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhckJp
dCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVn
aXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7CisgICAg
fQorICAgIAorICAgIGJvb2wgZ2V0Qml0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaSA8IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gISEo
bV9zZXRbaSA+PiAzXSAmICgxIDw8IChpICYgNykpKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0
ZXJTZXRQT0QgbV9zZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbHNl
IC8vIEVOQUJMRShERkdfSklUKSAtPiBzbyBpZiBERkcgaXMgZGlzYWJsZWQKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBEZWZpbmUgUmVnaXN0ZXJTZXRQT0QgdG8gc29t
ZXRoaW5nIHRoYXQgaXMgYSBQT0QsIGJ1dCBpcyBvdGhlcndpc2UgdXNlbGVzcywKKy8vIHRvIG1h
a2UgaXQgZWFzaWVyIHRvIHJlZmVyIHRvIHRoaXMgdHlwZSBpbiBjb2RlIHRoYXQgaXMgbm90IERG
Ry1zcGVjaWZpYy4KKworc3RydWN0IFJlZ2lzdGVyU2V0UE9EIHsgfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBE
RkdSZWdpc3RlclNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQu
aCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaCIKQEAgLTE2MSw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5B
Y2Nlc3NTdHViCiAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4o
c3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7
Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBh
dGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lzdGVyU2V0
KHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAgICAgYm9v
bCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogICAgIAogICAgIGlmIChzY3JhdGNoR1BS
ID09IEludmFsaWRHUFJSZWcpIHsKQEAgLTIzMSw3ICsyMzIsNyBAQCBzdGF0aWMgYm9vbCB0cnlD
YWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5k
aWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0
aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJl
Z2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgICAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
ID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlciBzdHViSml0OwpAQCAt
Mzg0LDcgKzM4NSw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQK
ICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwot
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8u
cGF0Y2guZGZnLnNjcmF0Y2hHUFIpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFJlZ2lz
dGVyU2V0KHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAg
ICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRhLCBjb2RlQmxv
Y2spOwogICAgICAgICAKQEAgLTYyOSw3ICs2MzAsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVw
bGFjZVN0dWIoCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihz
dHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgR1BSUmVnIHZhbHVl
R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwot
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcuc2NyYXRjaEdQUik7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChz
dHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wg
bmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUo
V1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyOwpAQCAtNzIy
LDg5ICs3MjMsMjAzIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICBH
UFJSZWcgdmFsdWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRm
Zy52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKICAgICBHUFJSZWcgdmFsdWVHUFIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BS
KTsKLSAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7Ci0gICAgICAgICAgICAK
LSAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBiYXNlR1BSKTsKKyAgICAKKyAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJz
KTsKKyAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlVGFnR1BSKTsKKyNlbmRpZgorICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlR1BSKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRh
KTsKICAgICAgICAgICAgIAotICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIxID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgIEFTU0VS
VChzY3JhdGNoR1BSMSAhPSBiYXNlR1BSKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjEgIT0gdmFs
dWVHUFIpOworICAgIAorICAgIGJvb2wgbmVlZFNlY29uZFNjcmF0Y2ggPSBmYWxzZTsKKyAgICBi
b29sIG5lZWRUaGlyZFNjcmF0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUo
V1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgbmVlZFNlY29uZFNjcmF0Y2ggPSB0cnVlOwor
I2VuZGlmCisgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIG5lZWRTZWNvbmRTY3JhdGNoID0gdHJ1ZTsKKyAg
ICAgICAgbmVlZFRoaXJkU2NyYXRjaCA9IHRydWU7CisgICAgfQorCisgICAgR1BSUmVnIHNjcmF0
Y2hHUFIyOworICAgIGlmIChuZWVkU2Vjb25kU2NyYXRjaCkgeworICAgICAgICBzY3JhdGNoR1BS
MiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0
Y2hHUFIyICE9IGJhc2VHUFIpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gdmFsdWVH
UFIpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjIgIT0gc2NyYXRjaEdQUjEpOworICAgIH0g
ZWxzZQorICAgICAgICBzY3JhdGNoR1BSMiA9IEludmFsaWRHUFJSZWc7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIzOworICAgIGlmIChuZWVkVGhpcmRTY3JhdGNoKSB7CisgICAgICAgIHNjcmF0Y2hH
UFIzID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOworICAgICAgICBBU1NFUlQoc2Ny
YXRjaEdQUjMgIT0gYmFzZUdQUik7CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMyAhPSB2YWx1
ZUdQUik7CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMyAhPSBzY3JhdGNoR1BSMSk7CisgICAg
ICAgIEFTU0VSVChzY3JhdGNoR1BSMyAhPSBzY3JhdGNoR1BSMik7CisgICAgfSBlbHNlCisgICAg
ICAgIHNjcmF0Y2hHUFIzID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgIAorICAgIGFsbG9j
YXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhzdHViSml0KTsKKwogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgICAgICAKLSAgICBp
ZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgIHNjcmF0Y2hHUFIgPSBT
cGVjdWxhdGl2ZUpJVDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUik7Ci0gICAg
ICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsKLSAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0
Y2ggPSB0cnVlOwotICAgIH0KLSAgICAKICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0
aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsKICAgICAK
ICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+
c3RvcmVkUHJvdG90eXBlKCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwg
ZmFpbHVyZUNhc2VzLAotICAgICAgICBzY3JhdGNoR1BSKTsKKyAgICAgICAgc2NyYXRjaEdQUjEp
OwogICAgICAgICAgICAgCiAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CiAgICAgICAg
IGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gcHJvdG90eXBlQ2hhaW4tPmhlYWQo
KTsgKml0OyArK2l0KSB7CiAgICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2so
CiAgICAgICAgICAgICAgICAgKCppdCktPnN0b3JlZFByb3RvdHlwZSgpLCBleGVjLT5jb2RlQmxv
Y2soKSwgc3R1YkluZm8sIHN0dWJKaXQsIGZhaWx1cmVDYXNlcywKLSAgICAgICAgICAgICAgICBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBzY3JhdGNoR1BSMSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcp
CisgICAgQVNTRVJUKG5lZWRTZWNvbmRTY3JhdGNoKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjIg
IT0gSW52YWxpZEdQUlJlZyk7CiAgICAgLy8gTXVzdCBhbHdheXMgZW1pdCB0aGlzIHdyaXRlIGJh
cnJpZXIgYXMgdGhlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIGl0c2VsZiByZXF1aXJlcyBpdAotICAg
IEdQUlJlZyBzY3JhdGNoMiA9IFNwZWN1bGF0aXZlSklUOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VH
UFIsIHZhbHVlR1BSLCBzY3JhdGNoR1BSKTsKLSAgICBzdHViSml0LnB1c2goc2NyYXRjaDIpOwot
ICAgIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoc3R1YkppdCwgYmFzZUdQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKLSAgICBzdHVi
Sml0LnBvcChzY3JhdGNoMik7CisgICAgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihzdHVi
Sml0LCBiYXNlR1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIFdyaXRlQmFycmllckZvclBy
b3BlcnR5QWNjZXNzKTsKICNlbmRpZgorICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzbG93UGF0aDsKKyAgICAKKyAgICBib29sIHNjcmF0Y2hHUFIxSGFzU3RvcmFnZSA9IGZhbHNl
OworICAgIAorICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xkU3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIHNpemVfdCBuZXdTaXplID0g
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICBDb3BpZWRBbGxvY2F0b3IqIGNvcGllZEFsbG9jYXRvciA9ICZnbG9iYWxEYXRhLT5oZWFwLnN0
b3JhZ2VBbGxvY2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghb2xkU3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoJmNvcGll
ZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAg
ICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hTdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlNp
Z25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQUjEp
KTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjEsICZjb3BpZWRBbGxv
Y2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgICAgICBzdHViSml0Lm5lZ1B0cihz
Y3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWJzb2x1dGVBZGRyZXNzKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFBheWxvYWRFbmQpLCBz
Y3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTaXplID4gb2xk
U2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE9wdGltaXN0aWNhbGx5IGFzc3Vt
ZSB0aGF0IHRoZSBvbGQgc3RvcmFnZSB3YXMgdGhlIHZlcnkgbGFzdCB0aGluZworICAgICAgICAg
ICAgLy8gYWxsb2NhdGVkLgorICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91dE9mTGluZVN0b3JhZ2Uo
KSksIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cigmY29waWVkQWxs
b2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3Jh
dGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIpOworICAgICAgICAgICAgc3R1YkppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihvbGRTaXplKSwgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbmVlZEZ1bGxSZWFsbG9jID0KKyAgICAgICAgICAgICAgICBzdHViSml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMyk7
CisgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hTdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlNpZ25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplIC0g
b2xkU2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKHNj
cmF0Y2hHUFIxLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOworICAgICAg
ICAgICAgc3R1YkppdC5tb3ZlKHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lUmVhbGxvYyA9IHN0dWJKaXQuanVtcCgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBuZWVkRnVsbFJlYWxsb2MubGluaygmc3R1YkppdCk7Cisg
ICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hTdWJQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlNpZ25lZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2Ny
YXRjaEdQUjEpKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjEsICZj
b3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgICAgICBzdHViSml0
Lm5lZ1B0cihzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFBheWxv
YWRFbmQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICBzdHViSml0LnN1YlB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAg
ICAvLyBXZSBoYXZlIHNjcmF0Y2hHUFIxID0gbmV3IHN0b3JhZ2UsIHNjcmF0Y2hHUFIzID0gb2xk
IHN0b3JhZ2UsIHNjcmF0Y2hHUFIyID0gYXZhaWxhYmxlCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvbGRTaXplOyBvZmZzZXQgKz0gc2l6ZW9mKEpTVmFsdWUp
KSB7CisgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIzLCBvZmZzZXQpLCBzY3JhdGNoR1BSMik7CisgICAgICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUjEsIG9mZnNldCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBkb25lUmVhbGxvYy5saW5rKCZzdHViSml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgc3R1YkppdC5zdG9yZVB0cihzY3JhdGNoR1BSMSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSk7CisgICAg
ICAgIHNjcmF0Y2hHUFIxSGFzU3RvcmFnZSA9IHRydWU7CisgICAgfQogCiAgICAgc3R1YkppdC5z
dG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIG9m
ZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVl
KSkpOwogICAgIGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
c2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90
LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICBpZiAoIXNjcmF0
Y2hHUFIxSGFzU3RvcmFnZSkKKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdl
KCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIodmFsdWVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXRJbk91dE9mTGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICB9CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9m
ZnNldCgpKSkgewogICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAr
IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpKTsKICAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkg
KyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNW
YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgp
KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIHN0dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOworICAgICAgICBpZiAoIXNjcmF0Y2hHUFIxSGFzU3RvcmFnZSkKKyAgICAgICAgICAg
IHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgIHN0
dWJKaXQuc3RvcmUzMih2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UjEsIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVv
ZihKU1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMSwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQogI2VuZGlmCiAg
ICAgICAgICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzOwogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGZhaWx1cmU7CiAgICAgICAgICAgICAKLSAgICBpZiAobmVlZFRvUmVz
dG9yZVNjcmF0Y2gpIHsKLSAgICAgICAgc3R1YkppdC5wb3Aoc2NyYXRjaEdQUik7CisgICAgaWYg
KGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKSB7CisgICAgICAgIGFsbG9jYXRvci5yZXN0
b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKHN0dWJKaXQpOwogICAgICAgICBzdWNjZXNzID0g
c3R1YkppdC5qdW1wKCk7CiAKICAgICAgICAgZmFpbHVyZUNhc2VzLmxpbmsoJnN0dWJKaXQpOwot
ICAgICAgICBzdHViSml0LnBvcChzY3JhdGNoR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLnJlc3Rv
cmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoc3R1YkppdCk7CiAgICAgICAgIGZhaWx1cmUgPSBz
dHViSml0Lmp1bXAoKTsKICAgICB9IGVsc2UKICAgICAgICAgc3VjY2VzcyA9IHN0dWJKaXQuanVt
cCgpOwotICAgICAgICAgICAgCisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgb3BlcmF0
aW9uQ2FsbDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzSW5TbG93UGF0aDsKKyAg
ICAKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBzbG93UGF0aC5saW5rKCZzdHViSml0
KTsKKyAgICAgICAgCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQ
b3BwaW5nKHN0dWJKaXQpOworICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0g
Z2xvYmFsRGF0YS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoYWxsb2NhdG9yLmRlc2lyZWRTY3JhdGNo
QnVmZmVyU2l6ZSgpKTsKKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlVXNlZFJlZ2lzdGVyc1Rv
U2NyYXRjaEJ1ZmZlcihzdHViSml0LCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNoR1BSMSk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVHUFIp
OworI2Vsc2UKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFz
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVUYWdHUFIsIHZh
bHVlR1BSKTsKKyNlbmRpZgorICAgICAgICBvcGVyYXRpb25DYWxsID0gc3R1YkppdC5jYWxsKCk7
CisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlVXNlZFJlZ2lzdGVyc0Zyb21TY3JhdGNoQnVmZmVy
KHN0dWJKaXQsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgc3VjY2Vzc0lu
U2xvd1BhdGggPSBzdHViSml0Lmp1bXAoKTsKKyAgICB9CisgICAgCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAg
ICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5s
YWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKLSAgICBp
ZiAobmVlZFRvUmVzdG9yZVNjcmF0Y2gpCisgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lz
dGVycygpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1cmVMYWJlbCk7
CiAgICAgZWxzZQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVDYXNlcywgZmFpbHVy
ZUxhYmVsKTsKLSAgICAKLSAgICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIo
Ci0gICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkRGRyBQdXRCeUlkIHRyYW5zaXRpb24g
c3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAot
ICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9
IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbkNhbGwsIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNo
UHV0KTsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzSW5TbG93UGF0aCwgc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvRG9uZSkpOworICAgIH0KKyAgICAKKyAgICBzdHViUm91dGluZSA9CisgICAgICAg
IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorICAgICAgICAgICAgRklOQUxJWkVfQ09ERSgKKyAgICAg
ICAgICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAoIkRGRyBQdXRCeUlkIHRy
YW5zaXRpb24gc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAg
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAqZ2xv
YmFsRGF0YSwKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KSwKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogfQog
CiBzdGF0aWMgYm9vbCB0cnlDYWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYg
c2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQpCkBAIC04
MjksOCArOTQ0LDExIEBAIHN0YXRpYyBib29sIHRyeUNhY2hlUHV0QnlJRChFeGVjU3RhdGUqIGUK
ICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gc2tpcCBvcHRp
bWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAgICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSkKKyAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVy
ZSB3ZSBuZWVkIGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgLy8gZW5v
dWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICAgICAgICAgIGlmIChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyA8IDYKKyAgICAgICAgICAgICAgICAmJiBvbGRTdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCisg
ICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpAQCAtODkyLDggKzEwMTAsMTEg
QEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBza2lwIG9wdGltaXppbmcgdGhlIGNh
c2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MKLSAgICAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQor
ICAgICAgICAgICAgLy8gU2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSBy
ZWFsbG9jLCBpZiB3ZSBkb24ndCBoYXZlCisgICAgICAgICAgICAvLyBlbm91Z2ggcmVnaXN0ZXJz
IHRvIG1ha2UgaXQgaGFwcGVuLgorICAgICAgICAgICAgaWYgKEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzIDwgNgorICAgICAgICAgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkKKyAgICAgICAgICAgICAg
ICAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcl9oCisjZGVmaW5lIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZH
UmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBsb3ctbGV2
ZWwgcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciB1c2UgaW4gc3R1YnMuCisKK2NsYXNzIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
KGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQorICAgICAgICA6IG1fdXNlZFJlZ2lz
dGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAsIG1fZGlkUmV1c2VSZWdpc3RlcnMoZmFsc2Up
CisgICAgeworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQg
bG9jayhUIHJlZykgeyBtX2xvY2tlZFJlZ2lzdGVycy5zZXQocmVnKTsgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgorICAgIHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3Rl
clR5cGUgYWxsb2NhdGVTY3JhdGNoKCkKKyAgICB7CisgICAgICAgIC8vIEZpcnN0IHRyeSB0byBh
bGxvY2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMgdG90YWxseSBmcmVlLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgQmFua0luZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAg
ICAgICAgICAgIHR5cGVuYW1lIEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgcmVnID0gQmFua0luZm86
OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICBpZiAoIW1fbG9ja2VkUmVnaXN0ZXJzLmdldChy
ZWcpCisgICAgICAgICAgICAgICAgJiYgIW1fdXNlZFJlZ2lzdGVycy5nZXQocmVnKQorICAgICAg
ICAgICAgICAgICYmICFtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0KHJlZykpIHsKKyAgICAgICAgICAg
ICAgICBtX3NjcmF0Y2hSZWdpc3RlcnMuc2V0KHJlZyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU2lu
Y2UgdGhhdCBmYWlsZWQsIHRyeSB0byBhbGxvY2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMgbm90IHll
dAorICAgICAgICAvLyBsb2NrZWQgb3IgdXNlZCBmb3Igc2NyYXRjaC4KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEJhbmtJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Cisg
ICAgICAgICAgICB0eXBlbmFtZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZv
Ojp0b1JlZ2lzdGVyKGkpOworICAgICAgICAgICAgaWYgKCFtX2xvY2tlZFJlZ2lzdGVycy5nZXQo
cmVnKSAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJzLmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAg
bV9zY3JhdGNoUmVnaXN0ZXJzLnNldChyZWcpOworICAgICAgICAgICAgICAgIG1fZGlkUmV1c2VS
ZWdpc3RlcnMgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiByZWc7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFdlIGZhaWxlZC4KKyAgICAgICAg
Q1JBU0goKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGFsbG9jYXRlU2NyYXRjaEdQUigpIHsg
cmV0dXJuIGFsbG9jYXRlU2NyYXRjaDxHUFJJbmZvPigpOyB9CisgICAgRlBSUmVnIGFsbG9jYXRl
U2NyYXRjaEZQUigpIHsgcmV0dXJuIGFsbG9jYXRlU2NyYXRjaDxGUFJJbmZvPigpOyB9CisgICAg
CisgICAgYm9vbCBkaWRSZXVzZVJlZ2lzdGVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9kaWRSZXVzZVJlZ2lzdGVyczsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmVzZXJ2ZVJl
dXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhNYWNyb0Fzc2VtYmxlciYgaml0KQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2RpZFJldXNlUmVnaXN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0RlBS
QnlJbmRleChpKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSkgeworICAgICAg
ICAgICAgICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4KSwgTWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQu
c3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewor
ICAgICAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmIG1f
dXNlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpKQorICAgICAgICAgICAgICAgIGppdC5wdXNo
KEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZv
aWQgcmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhNYWNyb0Fzc2VtYmxlciYgaml0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2RpZFJldXNlUmVnaXN0ZXJzKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMu
Z2V0R1BSQnlJbmRleChpKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAg
ICAgICAgICAgICAgICBqaXQucG9wKEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBp
LS07KSB7CisgICAgICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgo
aSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAg
ICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEZQ
UkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB1bnNp
Z25lZCBkZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX3VzZWRSZWdp
c3RlcnMubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSAqIHNpemVvZihKU1ZhbHVlKTsgfQorICAgIAor
ICAgIHZvaWQgcHJlc2VydmVVc2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyKE1hY3JvQXNzZW1i
bGVyJiBqaXQsIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIEdQUlJlZyBzY3JhdGNoR1BS
ID0gSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTsp
IHsKKyAgICAgICAgICAgIGlmIChtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgc2NyYXRj
aEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpOworICAgICAgICAgICAgaWYgKHNjcmF0Y2hH
UFIgPT0gSW52YWxpZEdQUlJlZyAmJiAhbV9sb2NrZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChp
KSAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAg
ICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAg
ICBpZiAobV91c2VkUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5t
X2J1ZmZlciArIChjb3VudCsrKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5z
dG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY291bnQgKiBzaXplb2YoSlNWYWx1ZSkg
PT0gZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkpOworICAgICAgICAKKyAgICAgICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnNjcmF0Y2hCdWZmZXItPm1fYWN0aXZl
TGVuZ3RoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KGNvdW50ICogc2l6ZW9mKEpTVmFs
dWUpKSksIHNjcmF0Y2hHUFIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlc3RvcmVVc2VkUmVn
aXN0ZXJzRnJvbVNjcmF0Y2hCdWZmZXIoTWFjcm9Bc3NlbWJsZXImIGppdCwgU2NyYXRjaEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciwgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnKQorICAg
IHsKKyAgICAgICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAg
ICAgLy8gRmluZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgICAg
IGlmIChtX2xvY2tlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpIHx8IG1fc2NyYXRjaFJlZ2lz
dGVycy5nZXRHUFJCeUluZGV4KGkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgCisgICAgICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzY3JhdGNoQnVmZmVyLT5tX2FjdGl2
ZUxlbmd0aCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIpOworCisgICAgICAgIC8vIFJlc3RvcmUg
ZG91YmxlIHJlZ2lzdGVycyBmaXJzdC4KKyAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX3VzZWRS
ZWdpc3RlcnMubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2Vk
UmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5tX2J1ZmZlciArIChj
b3VudCsrKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKHNj
cmF0Y2hHUFIsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAo
bV91c2VkUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0Lmxv
YWRQdHIoc2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKyksIEdQUkluZm86OnRvUmVn
aXN0ZXIoaSkpOworICAgICAgICB9CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBSZWdpc3Rl
clNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgUmVnaXN0ZXJTZXQgbV9sb2NrZWRSZWdpc3RlcnM7
CisgICAgUmVnaXN0ZXJTZXQgbV9zY3JhdGNoUmVnaXN0ZXJzOworICAgIGJvb2wgbV9kaWRSZXVz
ZVJlZ2lzdGVyczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MDMsNyArNTAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50Mwog
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBt
X2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJh
c2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyBy
ZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKIHsKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVtcCBzdHJ1Y3R1cmVDaGVj
ayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgICAgICBjb2RlT3Jp
Z2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VM
b2FkLAogICAgICAgICAgICAgdGFnTG9hZFdpdGhQYXRjaCwgcGF5bG9hZExvYWRXaXRoUGF0Y2gs
IHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+
KGJhc2VQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRUYWdHUFIpLAotICAgICAg
ICAgICAgc2FmZUNhc3Q8aW50OF90PihyZXN1bHRQYXlsb2FkR1BSKSwgc2FmZUNhc3Q8aW50OF90
PihzY3JhdGNoR1BSKSwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5bG9h
ZEdQUiksIHVzZWRSZWdpc3RlcnMoKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSA9PSBOZWVkVG9T
cGlsbCA/IFByb3BlcnR5QWNjZXNzUmVjb3JkOjpSZWdpc3RlcnNJblVzZSA6IFByb3BlcnR5QWNj
ZXNzUmVjb3JkOjpSZWdpc3RlcnNGbHVzaGVkKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGgucmVsZWFzZSgpKTsKIH0KQEAgLTU5NSw2ICs1OTUsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcHRpbWl6ZWRDYWxsLCBOb1Jlc3VsdCwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwK
ICAgICAgICAgICAgIGJhc2VQYXlsb2FkR1BSLCBpZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIp
KTsKICAgICB9CisgICAgUmVnaXN0ZXJTZXQgY3VycmVudGx5VXNlZFJlZ2lzdGVycyA9IHVzZWRS
ZWdpc3RlcnMoKTsKKyAgICBjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2hHUFIp
OworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldChiYXNlUGF5bG9hZEdQUikp
OworICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZVRhZ0dQUikpOwor
ICAgIEFTU0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZVBheWxvYWRHUFIpKTsK
ICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlBY2Nlc3NSZWNv
cmQoCiAgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIHN0cnVjdHVy
ZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLApAQCAtNjAyLDcgKzYwNyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpEYXRhTGFiZWxDb21wYWN0KHBheWxvYWRTdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwKICAgICAg
ICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhfdD4oYmFzZVBh
eWxvYWRHUFIpLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90Pih2YWx1ZVRhZ0dQUiksIHNh
ZmVDYXN0PGludDhfdD4odmFsdWVQYXlsb2FkR1BSKSwKLSAgICAgICAgICAgIHNhZmVDYXN0PGlu
dDhfdD4oc2NyYXRjaEdQUikpKTsKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMoKSkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTMyOTAs
MTYgKzMyOTUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVzdWx0VGFnR1BS
ID09IGJhc2VHUFIpCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdFBheWxvYWRH
UFI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3Vs
dFRhZ0dQUjsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgSW52YWxp
ZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBzY3JhdGNo
R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUuY29kZU9yaWdpbiwgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
LCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzMxMywxOCArMzMxMiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2Uu
cGF5bG9hZEdQUigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdw
cigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3By
KCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwotCi0gICAgICAgIGlmIChyZXN1bHRUYWdH
UFIgPT0gYmFzZVBheWxvYWRHUFIpCi0gICAgICAgICAgICBzY3JhdGNoR1BSID0gcmVzdWx0UGF5
bG9hZEdQUjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdFRh
Z0dQUjsKICAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBiYXNlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAg
ICAgICAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIs
IGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIHNjcmF0Y2hH
UFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKKyAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxs
KTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zMzQ2LDEzICszMzM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIg
PSByZXN1bHRUYWcuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9
IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIp
OwotICAgICAgICAgICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgcmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJO
dW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRD
b21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5k
ZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTMzNjcsMTUgKzMzNTgsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAKLSAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKGJhc2VUYWdHUFIsIGJh
c2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICAK
ICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBiYXNlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNv
ZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxs
LCBEb250U3BpbGwpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFz
ZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9j
b21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNyArNDkyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVVSW50MwogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBKSVRDb21waWxlcjo6RGF0YUxh
YmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKICAgICBKSVRDb21waWxlcjo6UGF0Y2hhYmxlSnVt
cCBzdHJ1Y3R1cmVDaGVjayA9IG1faml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChKSVRD
b21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOwpAQCAtNTIwLDEzICs1MjAs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIFBy
b3BlcnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9D
b21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwgbG9hZFdpdGhQYXRj
aCwKICAgICAgICAgICAgIHNsb3dQYXRoLmdldCgpLCBkb25lTGFiZWwsIHNhZmVDYXN0PGludDhf
dD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0R1BSKSwKLSAgICAgICAgICAgIHNh
ZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzKCks
CiAgICAgICAgICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZDo6UmVnaXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1
c2hlZCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7Ci0K
LQotICAgIGlmIChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BSICE9IEludmFs
aWRHUFJSZWcgJiYgc3BpbGxNb2RlID09IE5lZWRUb1NwaWxsKQotICAgICAgICB1bmxvY2soc2Ny
YXRjaEdQUik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBFZGdlIHZh
bHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0
S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkKQEAgLTU2OCwx
MSArNTY0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVl
R1BSLCBiYXNlR1BSLAogICAgICAgICAgICAgaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7
CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRseVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVn
aXN0ZXJzKCk7CisgICAgY3VycmVudGx5VXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoR1BSKTsK
KyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQoYmFzZUdQUikpOworICAgIEFT
U0VSVChjdXJyZW50bHlVc2VkUmVnaXN0ZXJzLmdldCh2YWx1ZUdQUikpOwogICAgIG1faml0LmFk
ZFByb3BlcnR5QWNjZXNzKAogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAg
ICAgIGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3Bl
cnR5U3RvcmFnZUxvYWQsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFj
dChzdG9yZVdpdGhQYXRjaC5sYWJlbCgpKSwgc2xvd1BhdGguZ2V0KCksIGRvbmVMYWJlbCwKLSAg
ICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4oYmFzZUdQUiksIHNhZmVDYXN0PGludDhfdD4odmFs
dWVHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgICAgICAgICBzYWZl
Q2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgY3VycmVu
dGx5VXNlZFJlZ2lzdGVycykpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJl
bGVhc2UoKSk7CiB9CiAKQEAgLTMzMTksMTYgKzMzMTksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFI7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChyZXN1bHRHUFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgICAgICBz
Y3JhdGNoR1BSID0gdHJ5QWxsb2NhdGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBi
YXNlLnVzZSgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUu
Y29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZp
ZXJOdW1iZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwg
YmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzMz
OSwxOCArMzMzMywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNo
R1BSOwotICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdEdQUiA9PSBiYXNlR1BSKQotICAgICAg
ICAgICAgc2NyYXRjaEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNjcmF0Y2hHUFIgPSByZXN1bHRHUFI7CiAgICAgICAgIAogICAgICAgICBiYXNlLnVzZSgp
OwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJy
YW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9y
aWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1i
ZXIoKSwgbm90Q2VsbCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBi
YXNlR1BSLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAg
ICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgCkBAIC0zMzcxLDEzICszMzU5
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BS
KGJhc2VHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNl
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BS
LCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRDb21w
aWxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCks
IEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzM4OSwxNCArMzM3NSwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQ
UlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgIAotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNlbGVjdFNjcmF0
Y2hHUFIoYmFzZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVy
bywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOworICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBu
b2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3Miw2ICsyNzIsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdXNlKG5vZGVVc2Uu
aW5kZXgoKSk7CiAgICAgfQorICAgIAorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMoKQor
ICAgIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgR1BS
UmVnIGdwciA9IEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICBpZiAobV9ncHJz
LmlzSW5Vc2UoZ3ByKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGdwcik7CisgICAgICAg
IH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
IGktLTspIHsKKyAgICAgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
OworICAgICAgICAgICAgaWYgKG1fZnBycy5pc0luVXNlKGZwcikpCisgICAgICAgICAgICAgICAg
cmVzdWx0LnNldChmcHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQogCiAgICAgc3RhdGljIHZvaWQgbWFya0NlbGxDYXJkKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVn
IG93bmVyR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMik7CiAgICAg
c3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BS
LCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgV3JpdGVCYXJyaWVyVXNl
S2luZCk7CkBAIC05NDIsMTAgKzk1OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxh
dGl2ZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9p
ZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJl
Z2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVy
OjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJlZyB2YWx1ZSwgRWRnZSB2
YWx1ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1
dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXAoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
LCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0g
TmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFn
R1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBT
cGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZhbHVlVGFnR1BSLCBH
UFJSZWcgdmFsdWVQYXlsb2FkR1BSLCBFZGdlIHZhbHVlVXNlLCBHUFJSZWcgc2NyYXRjaEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMTIy
Njc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxsb2NhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvcGllZEFsbG9jYXRvciB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKICAgICBD
b3BpZWRBbGxvY2F0b3IoKTsKICAgICAKKyAgICBib29sIGZhc3RQYXRoU2hvdWxkU3VjY2VlZChz
aXplX3QgYnl0ZXMpIGNvbnN0OwogICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlKHNpemVf
dCBieXRlcywgdm9pZCoqIG91dFB0cik7CiAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5UmVhbGxvY2F0
ZSh2b2lkICpvbGRQdHIsIHNpemVfdCBvbGRCeXRlcywgc2l6ZV90IG5ld0J5dGVzKTsKICAgICB2
b2lkKiBmb3JjZUFsbG9jYXRlKHNpemVfdCBieXRlcyk7CkBAIC00Niw5ICs0NiwxMiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gISFtX2N1cnJlbnRCbG9jazsg
fQogCi1wcml2YXRlOgogICAgIENvcGllZEJsb2NrKiBjdXJyZW50QmxvY2soKSB7IHJldHVybiBt
X2N1cnJlbnRCbG9jazsgfQogCisgICAgLy8gWWVzLCB0aGVzZSBhcmUgcHVibGljLiBObywgdGhh
dCBkb2Vzbid0IG1lYW4geW91IGNhbiBwbGF5IHdpdGggdGhlbS4KKyAgICAvLyBJZiBJIGhhZCBt
YWRlIHRoZW0gcHJpdmF0ZSB0aGVuIEknZCBoYXZlIHRvIGxpc3Qgb2ZmIGFsbCBvZiB0aGUgSklU
CisgICAgLy8gY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIGVudGl0bGVkIHRvIG1vZGlm
eSB0aGVzZSBkaXJlY3RseSwgYW5kCisgICAgLy8gdGhhdCB3b3VsZCBoYXZlIGJlZW4gZ3Jvc3Mu
CiAgICAgc2l6ZV90IG1fY3VycmVudFJlbWFpbmluZzsKICAgICBjaGFyKiBtX2N1cnJlbnRQYXls
b2FkRW5kOwogICAgIENvcGllZEJsb2NrKiBtX2N1cnJlbnRCbG9jazsgCkBAIC02MSw2ICs2NCwx
MyBAQCBpbmxpbmUgQ29waWVkQWxsb2NhdG9yOjpDb3BpZWRBbGxvY2F0b3IoCiB7CiB9CiAKK2lu
bGluZSBib29sIENvcGllZEFsbG9jYXRvcjo6ZmFzdFBhdGhTaG91bGRTdWNjZWVkKHNpemVfdCBi
eXRlcykgY29uc3QKK3sKKyAgICBBU1NFUlQoaXM4Qnl0ZUFsaWduZWQocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oYnl0ZXMpKSk7CisgICAgCisgICAgcmV0dXJuIGJ5dGVzIDw9IG1fY3VycmVudFJl
bWFpbmluZzsKK30KKwogaW5saW5lIENoZWNrZWRCb29sZWFuIENvcGllZEFsbG9jYXRvcjo6dHJ5
QWxsb2NhdGUoc2l6ZV90IGJ5dGVzLCB2b2lkKiogb3V0UHRyKQogewogICAgIEFTU0VSVChpczhC
eXRlQWxpZ25lZChyZWludGVycHJldF9jYXN0PHZvaWQqPihieXRlcykpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152489</attachid>
            <date>2012-07-16 00:07:39 -0700</date>
            <delta_ts>2012-07-16 12:01:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>dfgtransition_patch_5.diff</filename>
            <type>text/plain</type>
            <size>67387</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMi0wNy0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBQdXRCeUlkIHRyYW5zaXRpb24gc2hvdWxkIGhhbmRsZSBzdG9yYWdlIGFsbG9jYXRpb24s
IGFuZCBpbmxpbmUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBlbmFibGVzIHRoZSBwYXRjaGluZyBvZiBERkcgUHV0QnlJZCB0byBoYW5kbGUg
dGhlIG91dC1vZi1saW5lIHN0b3JhZ2UKKyAgICAgICAgYWxsb2NhdGlvbiBjYXNlLiBGdXJ0aGVy
bW9yZSwgaXQgaW5saW5lcyBvdXQtb2YtbGluZSBzdG9yYWdlIGFsbG9jYXRpb24gKGFuZAorICAg
ICAgICByZWFsbG9jYXRpb24pIGludG8gdGhlIGdlbmVyYXRlZCBzdHVicy4gIAorICAgICAgICAK
KyAgICAgICAgVG8gZG8gdGhpcywgdGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHN0b3Jl
IHRoZSByZWxldmFudCByZWdpc3RlcgorICAgICAgICBhbGxvY2F0aW9uIHN0YXRlIChpLmUuIHRo
ZSBzZXQgb2YgaW4tdXNlIHJlZ2lzdGVycykgaW4gdGhlIHN0cnVjdHVyZSBzdHViCisgICAgICAg
IGluZm8gc28gdGhhdCB0aGUgc3R1YiBnZW5lcmF0aW9uIGNvZGUgY2FuIG1vcmUgZmxleGlibHkg
c2VsZWN0IHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXJzOiBzb21ldGltZXMgaXQgbmVlZHMgbm9u
ZSwgc29tZXRpbWVzIG9uZSAtIG9yIHNvbWV0aW1lcyB1cCB0bworICAgICAgICB0aHJlZS4gTW9y
ZW92ZXIsIHRvIG1ha2UgdGhlIHN0dWIgZ2VuZXJhdGlvbiByZWdpc3RlciBhbGxvY2F0aW9uIHNp
bXBsZSBhbmQKKyAgICAgICAgbWFpbnRhaW5hYmxlLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBy
ZXVzYWJsZSBzY3JhdGNoIHJlZ2lzdGVyIGFsbG9jYXRvcgorICAgICAgICBjbGFzcy4gVGhpcyBy
ZWdpc3RlciBhbGxvY2F0b3IgdW5kZXJzdGFuZHMgdGhhdCBzb21lIHJlZ2lzdGVycyBhcmUgaW4g
dXNlIGJ5CisgICAgICAgIHRoZSBtYWluIHBhdGggY29kZSBhbmQgc28gbXVzdCBiZSBzcGlsbGVk
IGFzIG5lY2Vzc2FyeSwgb3RoZXIgcmVnaXN0ZXJzIGFyZQorICAgICAgICBsb2NrZWQgZm9yIHVz
ZSBpbiB0aGUgc3R1YiBpdHNlbGYgYW5kIHNvIGNhbm5vdCBldmVuIGJlIHNwaWxsZWQsIHdoaWxl
IHN0aWxsCisgICAgICAgIG90aGVycyBtYXkgYmUgYWxsb2NhdGVkIGZvciBzY3JhdGNoIHB1cnBv
c2VzLiBBIHNjcmF0Y2ggcmVnaXN0ZXIgdGhhdCBpcworICAgICAgICB1c2VkIG11c3QgYmUgc3Bp
bGxlZC4gSWYgYSByZWdpc3RlciBpcyBsb2NrZWQsIGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEKKyAg
ICAgICAgc2NyYXRjaCByZWdpc3Rlci4gSWYgYSByZWdpc3RlciBpcyB1c2VkLCBpdCBjYW4gYmUg
dXNlZCBhcyBhIHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXIgc28gbG9uZyBhcyBpdCBpcyBzcGls
bGVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIHN1Yi0xJSBzcGVlZC11cCBvbiBWOCBh
bmQgbmV1dHJhbCBlbHNld2hlcmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoRnVuY3Rp
b25QdHIpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0NDYWxs
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgICogZGZn
L0RGR0dQUkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlckJhbms6OmlzSW5Vc2UpOgorICAgICAgICAoUmVnaXN0ZXJCYW5rKToKKyAgICAgICAg
KiBkZmcvREZHUmVnaXN0ZXJTZXQuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAo
UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpSZWdpc3RlclNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmFzUE9EKToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Y29weUluZm8pOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpzZXRHUFJCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpnZXRHUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0
RnJlZUdQUik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEZQUkJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXRGUFJCeUluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6c2V0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6UmVnaXN0ZXJTZXQ6OmdldEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEdQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0Ojpu
dW1iZXJPZlNldEZQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJP
ZlNldFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEJpdCk6
CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmNsZWFyQml0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Z2V0Qml0KToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0
cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0
dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAg
IChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWls
ZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUik6CisgICAgICAgIChK
U0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkaWRSZXVzZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZl
cik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxh
dGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnVzZWRSZWdpc3Rl
cnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
aGVhcC9Db3BpZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKENvcGllZEFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6OkNvcGllZEFsbG9jYXRvcjo6ZmFzdFBhdGhTaG91bGRTdWNjZWVkKToKKyAgICAg
ICAgKEpTQyk6CisKIDIwMTItMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgUHV0QnlWYWwgb3Bjb2RlcyBzaG91bGQgYWNjZXB0IG1vcmUgdGhhbiAz
IG9wZXJhbmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw5ICsyMTYsMTEgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1bmRhbnRQ
aGlFbGltaW5hdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJCYW5rLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDYgKzE1MCw4IEBACiAJCTBGNzY2RDM1MTVBRTI1M0IwMDhGMzYzRSAvKiBKdW1wUmVwbGFj
ZW1lbnRXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQzMzE1QUUyNTM1MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hw
b2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcCAqLzsgfTsKIAkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0MjE1QjJB
M0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyogREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZHU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5
MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFG
MTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk1LDYgKzg5Nyw4IEBACiAJCTBGNzY2
RDMzMTVBRTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8q
IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVy
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyU2V0Lmg7
IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNh
bXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGlu
Z0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYy
ODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxsSGVscGVycy5oOyBwYXRoID0g
ZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMw
NCw5ICsyMzA4LDExIEBACiAJCQkJMEE0MzM3QkExNTA2MjE4ODAwOTkxQzk1IC8qIERGR1JlZHVu
ZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuY3BwICovLAogCQkJCTBBNDMzN0JEMTUwNjIxOUIwMDk5
MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggKi8sCiAJCQkJODZFQzlE
QzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAorCQkJCTBGNzY2RDQy
MTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oICovLAogCQkJCTg2QkIwOUJFMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLywKIAkJCQk4NkJCMDlCRjEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovLAogCQkJCTg2RUNBM0Y5MTMyREYyNUEwMDJCMkFE
NyAvKiBERkdTY29yZUJvYXJkLmggKi8sCisJCQkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8q
IERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAogCQkJCTBGMUUzQTY1MTUzQTIxREYw
MDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggKi8sCiAJCQkJMEYxRTNBNTAx
NTM3QzJDQjAwMEY5NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggKi8sCiAJCQkJODZFQzlE
QzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLywKQEAgLTI4NTAs
NiArMjg1Niw4IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyogSnVt
cFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzkxNUFF
NEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJ
KHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTMgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUx
LCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTMsIHR5cGVuYW1lIGFyZ1R5cGU0
LCB0eXBlbmFtZSBhcmdUeXBlNT4KKyAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1KSkKKyAgICAg
ICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgfQorCiAvLyBNU1ZDIGRvZXNuJ3Qgc2VlbSB0byB0
cmVhdCBmdW5jdGlvbnMgd2l0aCBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucyBhcwogLy8g
ZGlmZmVyZW50IHR5cGVzOyB0aGVzZSBtZXRob2RzIGFscmVhZHkgZGVmaW5lZCBmb3IgZmFzdGNh
bGwsIGJlbG93LgogI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMICYmICFPUyhXSU5E
T1dTKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgpAQCAtMjEy
LDcgKzIxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKICNlbmRpZgogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKLSAgICAg
ICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKKyAgICAgICAgICAgICAgICBERkc6OlJlZ2lz
dGVyU2V0UE9EIHVzZWRSZWdpc3RlcnM7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb0RvbmU7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24g
MTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzUpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTY0
Miw2ICs2NjMsMTkgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCAx
KTsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewogICAgICAgICBwb2tlKGFy
ZzQpOwpAQCAtNzIyLDYgKzc1NiwxNiBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnNCk7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
ZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewogICAgICAgICBH
UFJSZWcgc3JjQSA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
MTIgQEAKICNpZm5kZWYgREZHR1BSSW5mb19oCiAjZGVmaW5lIERGR0dQUkluZm9faAogCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUg
PGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oPgotI2luY2x1ZGUgPGRmZy9ERkdSZWdpc3RlckJh
bmsuaD4KKyNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjI2
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0IKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3By
b3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKICAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKICNlbmRpZgotICAg
ICAgICBpbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
c2NyYXRjaEdQUjsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVy
cy5jb3B5SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgaW5mby5w
YXRjaC5kZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lz
dGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdH
UFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJh
bmsuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKQEAg
LTE2OSw3ICsxNzAsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKICAgICAgICAgaW50OF90IGJhc2VHUFIsCiAgICAg
ICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAgICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1vZGUg
cmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0cnVjdCBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIGludDhfdCBiYXNlR1BSLAogICAgICAgICBpbnQ4
X3QgdmFsdWVUYWdHUFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90
IHNjcmF0Y2hHUFIsCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAog
ICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZW5k
aWYKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKQEAgLTIwNCw3ICsyMDUsNyBA
QCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICAsIG1fdmFsdWVUYWdHUFIo
dmFsdWVUYWdHUFIpCiAjZW5kaWYKICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQotICAg
ICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQorICAgICAgICAsIG1fdXNlZFJlZ2lzdGVy
cyh1c2VkUmVnaXN0ZXJzKQogICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkK
ICAgICB7CiAgICAgfQpAQCAtMjI2LDcgKzIyNyw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCB7CiAgICAgaW50OF90IG1fdmFsdWVUYWdHUFI7CiAjZW5kaWYKICAgICBpbnQ4X3QgbV92
YWx1ZUdQUjsKLSAgICBpbnQ4X3QgbV9zY3JhdGNoR1BSOworICAgIFJlZ2lzdGVyU2V0IG1fdXNl
ZFJlZ2lzdGVyczsKICAgICBSZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CiB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNiArMTIzMiwxNSBAQCBzaXplX3QgREZHX09QRVJBVElP
TiBvcGVyYXRpb25Jc0Z1bmN0aW9uCiAgICAgcmV0dXJuIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFs
bG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJh
c2UtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGJhc2Ut
PnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKKyAgICBiYXNlLT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZG91YmxlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uRk1vZE9uSW50cyhpbnQzMl90IGEsIGludDMyX3QgYikKIHsKICAgICByZXR1cm4gZm1v
ZChhLCBiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw3IEBAIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGkKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERGR19P
UEVSQVRJT04gb3BlcmF0aW9uSXNPYmplY3QoRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzRnVuY3Rpb24oRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3Rv
cmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3Bl
cnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogCiAvLyBUaGlzIG1ldGhv
ZCBpcyB1c2VkIHRvIGxvb2t1cCBhbiBleGNlcHRpb24gaGFuZGVyLCBrZXllZCBieSBmYXVsdExv
Y2F0aW9uLCB3aGljaCBpcwogLy8gdGhlIHJldHVybiBsb2NhdGlvbiBmcm9tIG9uZSBvZiB0aGUg
Y2FsbHMgb3V0IHRvIG9uZSBvZiB0aGUgaGVscGVyIG9wZXJhdGlvbnMgYWJvdmUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDEy
MjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bmFtZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQogICAgIAorICAgIGJv
b2wgaXNJblVzZShSZWdJRCByZWcpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNMb2Nr
ZWQocmVnKSB8fCBuYW1lKHJlZykgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKKyAgICB9Cisg
ICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBERkdSZWdpc3RlclNldF9oCisjZGVmaW5lIERGR1JlZ2lzdGVyU2V0X2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNp
bmNsdWRlICJERkdGUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUg
PHd0Zi9CaXRtYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyA9CisgICAgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsKKworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnl0ZXNJblJlZ2lzdGVyU2V0ID0KKyAgICAodG90YWxO
dW1iZXJPZlJlZ2lzdGVycyArIDcpID4+IDM7CisKK3R5cGVkZWYgdWludDhfdCBSZWdpc3RlclNl
dFBPRFtudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldF07CisKK2NsYXNzIFJlZ2lzdGVyU2V0IHsK
K3B1YmxpYzoKKyAgICBSZWdpc3RlclNldCgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldDsgaS0tOykKKyAgICAgICAgICAgIG1fc2V0
W2ldID0gMDsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXRQ
T0QmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBtX3NldFtpXSA9IG90aGVyW2ldOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBSZWdpc3RlclNldFBPRCYgYXNQT0QoKSBjb25zdCB7IHJl
dHVybiBtX3NldDsgfQorICAgIAorICAgIHZvaWQgY29weUluZm8oUmVnaXN0ZXJTZXRQT0QmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBvdGhlcltpXSA9IG1fc2V0W2ldOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0
Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0R1BS
QnlJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc2V0Qml0KGluZGV4KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbGVhcihHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgY2xlYXJC
aXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoR1BS
UmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6dG9J
bmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXRHUFJCeUluZGV4KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gZ2V0Qml0KGluZGV4KTsKKyAgICB9Cisg
ICAgCisgICAgLy8gUmV0dXJuIHRoZSBpbmRleCd0aCBmcmVlIEdQUi4KKyAgICBHUFJSZWcgZ2V0
RnJlZUdQUih1bnNpZ25lZCBpbmRleCA9IDApIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAg
ICAgaWYgKCFnZXRHUFJCeUluZGV4KGkpICYmICFpbmRleC0tKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJ
bnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChGUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgc2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRGUFJCeUluZGV4KHVuc2ln
bmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMpOworICAgICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
KyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKKyAgICB7
CisgICAgICAgIGNsZWFyQml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAgICBib29sIGdldEZQ
UkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBnZXRCaXQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgorICAgIHZvaWQgc2V0QnlJbmRleCh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIHNldChCYW5rSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICBib29sIGdl
dEJ5SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KEJhbmtJ
bmZvOjp0b1JlZ2lzdGVyKGluZGV4KSk7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mU2V0R1BScygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0t
OykgeworICAgICAgICAgICAgaWYgKCFnZXRCaXQoaSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldEZQUnMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlm
ICghZ2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldFJlZ2lz
dGVycygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB0b3RhbE51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAg
ICAgICAgICBpZiAoIWdldEJpdChpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIHNldEJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRb
aSA+PiAzXSB8PSAoMSA8PCAoaSAmIDcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhckJp
dCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVn
aXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7CisgICAg
fQorICAgIAorICAgIGJvb2wgZ2V0Qml0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaSA8IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gISEo
bV9zZXRbaSA+PiAzXSAmICgxIDw8IChpICYgNykpKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0
ZXJTZXRQT0QgbV9zZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbHNl
IC8vIEVOQUJMRShERkdfSklUKSAtPiBzbyBpZiBERkcgaXMgZGlzYWJsZWQKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBEZWZpbmUgUmVnaXN0ZXJTZXRQT0QgdG8gc29t
ZXRoaW5nIHRoYXQgaXMgYSBQT0QsIGJ1dCBpcyBvdGhlcndpc2UgdXNlbGVzcywKKy8vIHRvIG1h
a2UgaXQgZWFzaWVyIHRvIHJlZmVyIHRvIHRoaXMgdHlwZSBpbiBjb2RlIHRoYXQgbWF5IGJlIGNv
bXBpbGVkIHdoZW4KKy8vIHRoZSBERkcgaXMgZGlzYWJsZWQuCisKK3N0cnVjdCBSZWdpc3RlclNl
dFBPRCB7IH07CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHUmVnaXN0ZXJTZXRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMjY3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NDYWxs
SGVscGVycy5oIgorI2luY2x1ZGUgIkRGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5j
bHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCkBAIC0xNjEsNyArMTYyLDcgQEAgc3RhdGlj
IHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgIEdQUlJlZyByZXN1bHRUYWdH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7
CiAjZW5kaWYKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGlj
X2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVy
cykuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsK
ICAgICAKICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yMzEsNyAr
MjMyLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5k
Zmcuc2NyYXRjaEdQUik7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQo
c3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKICAgICAgICAg
Ym9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXIgc3R1YkppdDsKQEAgLTM4NCw3ICszODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlC
dWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5k
aWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0
aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJl
Z2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0
dWJKaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgCkBAIC02MjksNyArNjMwLDcg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQ
UiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsK
ICNlbmRpZgogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnNjcmF0Y2hHUFIpOworICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMp
LmdldEZyZWVHUFIoKTsKICAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAj
aWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgIEdQ
UlJlZyBzY3JhdGNoR1BSMjsKQEAgLTcyMiw4OSArNzIzLDIwMyBAQCBzdGF0aWMgdm9pZCBlbWl0
UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8
R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgR1BS
UmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFs
dWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7Ci0gICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRj
aCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gYmFzZUdQ
Uik7CisgICAgCisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5m
by5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7CisgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVRhZ0dQUik7
CisjZW5kaWYKKyAgICBhbGxvY2F0b3IubG9jayh2YWx1ZUdQUik7CisgICAgCisgICAgQ0NhbGxI
ZWxwZXJzIHN0dWJKaXQoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICAKLSAgICBNYWNyb0Fzc2Vt
YmxlciBzdHViSml0OworICAgIEdQUlJlZyBzY3JhdGNoR1BSMSA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjEgIT0gYmFzZUdQUik7CisgICAg
QVNTRVJUKHNjcmF0Y2hHUFIxICE9IHZhbHVlR1BSKTsKKyAgICAKKyAgICBib29sIG5lZWRTZWNv
bmRTY3JhdGNoID0gZmFsc2U7CisgICAgYm9vbCBuZWVkVGhpcmRTY3JhdGNoID0gZmFsc2U7Cisj
aWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIG5l
ZWRTZWNvbmRTY3JhdGNoID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCisgICAg
ICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBuZWVk
U2Vjb25kU2NyYXRjaCA9IHRydWU7CisgICAgICAgIG5lZWRUaGlyZFNjcmF0Y2ggPSB0cnVlOwor
ICAgIH0KKworICAgIEdQUlJlZyBzY3JhdGNoR1BSMjsKKyAgICBpZiAobmVlZFNlY29uZFNjcmF0
Y2gpIHsKKyAgICAgICAgc2NyYXRjaEdQUjIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BS
KCk7CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMiAhPSBiYXNlR1BSKTsKKyAgICAgICAgQVNT
RVJUKHNjcmF0Y2hHUFIyICE9IHZhbHVlR1BSKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIy
ICE9IHNjcmF0Y2hHUFIxKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2NyYXRjaEdQUjIgPSBJbnZh
bGlkR1BSUmVnOworICAgIEdQUlJlZyBzY3JhdGNoR1BSMzsKKyAgICBpZiAobmVlZFRoaXJkU2Ny
YXRjaCkgeworICAgICAgICBzY3JhdGNoR1BSMyA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hH
UFIoKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIzICE9IGJhc2VHUFIpOworICAgICAgICBB
U1NFUlQoc2NyYXRjaEdQUjMgIT0gdmFsdWVHUFIpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQ
UjMgIT0gc2NyYXRjaEdQUjEpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjMgIT0gc2NyYXRj
aEdQUjIpOworICAgIH0gZWxzZQorICAgICAgICBzY3JhdGNoR1BSMyA9IEludmFsaWRHUFJSZWc7
CiAgICAgICAgICAgICAKKyAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1
c2hpbmcoc3R1YkppdCk7CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzOwogICAgICAgICAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZykg
ewotICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIo
YmFzZUdQUiwgdmFsdWVHUFIpOwotICAgICAgICBzdHViSml0LnB1c2goc2NyYXRjaEdQUik7Ci0g
ICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgQVNT
RVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihvbGRTdHJ1Y3R1cmUpKSk7CiAgICAgCiAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNr
KAogICAgICAgICBvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCBleGVjLT5jb2RlQmxv
Y2soKSwgc3R1YkluZm8sIHN0dWJKaXQsIGZhaWx1cmVDYXNlcywKLSAgICAgICAgc2NyYXRjaEdQ
Uik7CisgICAgICAgIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIAogICAgIGlmIChwdXRLaW5k
ID09IE5vdERpcmVjdCkgewogICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IHByb3RvdHlwZUNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkgewogICAgICAgICAgICAgYWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICgqaXQpLT5zdG9yZWRQ
cm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBzdHViSml0LCBmYWlsdXJl
Q2FzZXMsCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgc2Ny
YXRjaEdQUjEpOwogICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKEdHQykgfHwgRU5BQkxF
KFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIEFTU0VSVChuZWVkU2Vjb25kU2NyYXRjaCk7
CisgICAgQVNTRVJUKHNjcmF0Y2hHUFIyICE9IEludmFsaWRHUFJSZWcpOwogICAgIC8vIE11c3Qg
YWx3YXlzIGVtaXQgdGhpcyB3cml0ZSBiYXJyaWVyIGFzIHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlv
biBpdHNlbGYgcmVxdWlyZXMgaXQKLSAgICBHUFJSZWcgc2NyYXRjaDIgPSBTcGVjdWxhdGl2ZUpJ
VDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUiwgc2NyYXRjaEdQUik7Ci0gICAg
c3R1YkppdC5wdXNoKHNjcmF0Y2gyKTsKLSAgICBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVy
KHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7Ci0gICAgc3R1YkppdC5wb3Aoc2NyYXRjaDIpOworICAgIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoc3R1YkppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUjEsIHNjcmF0
Y2hHUFIyLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAjZW5kaWYKKyAgICAKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisgICAgCisgICAgYm9vbCBzY3Jh
dGNoR1BSMUhhc1N0b3JhZ2UgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewor
ICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgQ29waWVkQWxsb2NhdG9yKiBjb3BpZWRBbGxvY2F0
b3IgPSAmZ2xvYmFsRGF0YS0+aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJKaXQuYnJhbmNo
U3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHNjcmF0Y2hHUFIxLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOworICAg
ICAgICAgICAgc3R1YkppdC5uZWdQdHIoc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1Ykpp
dC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9y
LT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1Ykpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQ
UjEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBPcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCB0aGUgb2xkIHN0b3JhZ2Ugd2FzIHRoZSB2
ZXJ5IGxhc3QgdGhpbmcKKyAgICAgICAgICAgIC8vIGFsbG9jYXRlZC4KKyAgICAgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCwgc2Ny
YXRjaEdQUjIpOworICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3It
Pm1fY3VycmVudFJlbWFpbmluZywgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1YkppdC5z
dWJQdHIoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3Vi
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIob2xkU2l6ZSksIHNjcmF0Y2hHUFIyKTsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5lZWRGdWxsUmVhbGxvYyA9CisgICAg
ICAgICAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBz
Y3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0
dWJKaXQuYnJhbmNoU3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIobmV3U2l6ZSAtIG9sZFNpemUpLCBzY3JhdGNoR1BSMSkpOworICAgICAg
ICAgICAgc3R1YkppdC5zdG9yZVB0cihzY3JhdGNoR1BSMSwgJmNvcGllZEFsbG9jYXRvci0+bV9j
dXJyZW50UmVtYWluaW5nKTsKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSMiwg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZVJlYWxs
b2MgPSBzdHViSml0Lmp1bXAoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmVlZEZ1bGxS
ZWFsbG9jLmxpbmsoJnN0dWJKaXQpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJK
aXQuYnJhbmNoU3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIxLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5p
bmcpOworICAgICAgICAgICAgc3R1YkppdC5uZWdQdHIoc2NyYXRjaEdQUjEpOworICAgICAgICAg
ICAgc3R1YkppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcygmY29waWVk
QWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAg
ICAgc3R1YkppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSBzY3JhdGNoR1BSMSA9IG5ldyBz
dG9yYWdlLCBzY3JhdGNoR1BSMyA9IG9sZCBzdG9yYWdlLCBzY3JhdGNoR1BSMiA9IGF2YWlsYWJs
ZQorICAgICAgICAgICAgZm9yIChzaXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb2xkU2l6ZTsg
b2Zmc2V0ICs9IHNpemVvZihKU1ZhbHVlKSkgeworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMywgb2Zmc2V0KSwgc2NyYXRj
aEdQUjIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG9uZVJlYWxsb2MubGluaygmc3R1YkppdCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UjEsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSkpOworICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2UgPSB0cnVl
OworICAgIH0KIAogICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQogICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1Ykpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICAgICAgaWYgKCFzY3JhdGNoR1BSMUhhc1N0b3JhZ2UpCisgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
MSwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgaWYgKCFzY3JhdGNoR1BS
MUhhc1N0b3JhZ2UpCisgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
c2NyYXRjaEdQUjEpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQu
c3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjEs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc3VjY2VzczsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWlsdXJlOwogICAgICAg
ICAgICAgCi0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7Ci0gICAgICAgIHN0dWJKaXQu
cG9wKHNjcmF0Y2hHUFIpOworICAgIGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkg
eworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhzdHVi
Sml0KTsKICAgICAgICAgc3VjY2VzcyA9IHN0dWJKaXQuanVtcCgpOwogCiAgICAgICAgIGZhaWx1
cmVDYXNlcy5saW5rKCZzdHViSml0KTsKLSAgICAgICAgc3R1YkppdC5wb3Aoc2NyYXRjaEdQUik7
CisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKHN0dWJK
aXQpOwogICAgICAgICBmYWlsdXJlID0gc3R1YkppdC5qdW1wKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKLSAgICAgICAgICAgIAorICAgIAorICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIG9wZXJhdGlvbkNhbGw7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc3VjY2Vzc0luU2xvd1BhdGg7CisgICAgCisgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CisgICAgICAgIAorICAgICAgICBhbGxvY2F0b3Iu
cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhzdHViSml0KTsKKyAgICAgICAgU2NyYXRj
aEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IGdsb2JhbERhdGEtPnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KGFsbG9jYXRvci5kZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemUoKSk7CisgICAgICAgIGFsbG9jYXRv
ci5wcmVzZXJ2ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1
ZmZlciwgc2NyYXRjaEdQUjEpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0dWJKaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xvdC5j
YWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSKTsKKyNlbHNlCisgICAgICAgIHN0dWJKaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xvdC5jYWNoZWRP
ZmZzZXQoKSksIHZhbHVlVGFnR1BSLCB2YWx1ZUdQUik7CisjZW5kaWYKKyAgICAgICAgb3BlcmF0
aW9uQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVVzZWRS
ZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZlcihzdHViSml0LCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNo
R1BSMSk7CisgICAgICAgIHN1Y2Nlc3NJblNsb3dQYXRoID0gc3R1YkppdC5qdW1wKCk7CisgICAg
fQorICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZzdHViSml0
LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKSk7Ci0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKQorICAgIGlm
IChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgIGVsc2UKICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhmYWlsdXJlQ2FzZXMsIGZhaWx1cmVMYWJlbCk7Ci0gICAgCi0gICAgc3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAotICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAg
KCJERkcgUHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBv
aW50ICVwIiwKLSAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgaWYgKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25S
ZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dCk7CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
c3VjY2Vzc0luU2xvd1BhdGgsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICB9CisgICAgCisg
ICAgc3R1YlJvdXRpbmUgPQorICAgICAgICBjcmVhdGVKSVRTdHViUm91dGluZSgKKyAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUoCisgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAg
ICAgICAgICAgKCJERkcgUHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENvZGVCbG9jayAlcCwg
cmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpLAorICAgICAgICAgICAgKmdsb2JhbERhdGEsCisgICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAg
ICAgICAgICAgc3RydWN0dXJlKTsKIH0KIAogc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgUHV0S2luZCBwdXRLaW5kKQpAQCAtODI5LDggKzk0NCwxMSBAQCBzdGF0aWMgYm9vbCB0cnlD
YWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIC8vIHNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEg
cmVhbGxvYwotICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICAvLyBTa2lw
IG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MsIGlmIHdlIGRvbid0
IGhhdmUKKyAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSBpdCBoYXBwZW4u
CisgICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAg
ICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VD
ZWxsKTsKQEAgLTg5Miw4ICsxMDEwLDExIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExp
c3QoRXhlY1N0YXQKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
Ly8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAg
ICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0
aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQorICAgICAg
ICAgICAgLy8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICAgICAgICAg
IGlmIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA8IDYKKyAgICAgICAgICAgICAgICAmJiBv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpCisgICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3JfaAorI2RlZmluZSBERkdTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3JfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBUaGlz
IGNsYXNzIHByb3ZpZGVzIGEgbG93LWxldmVsIHJlZ2lzdGVyIGFsbG9jYXRvciBmb3IgdXNlIGlu
IHN0dWJzLgorCitjbGFzcyBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgeworcHVibGljOgorICAg
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcihjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cykKKyAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKKyAgICAgICAgLCBt
X2RpZFJldXNlUmVnaXN0ZXJzKGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGxvY2soVCByZWcpIHsgbV9sb2NrZWRSZWdpc3RlcnMu
c2V0KHJlZyk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICB0
eXBlbmFtZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIGFsbG9jYXRlU2NyYXRjaCgpCisgICAgewor
ICAgICAgICAvLyBGaXJzdCB0cnkgdG8gYWxsb2NhdGUgYSByZWdpc3RlciB0aGF0IGlzIHRvdGFs
bHkgZnJlZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhbmtJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICB0eXBlbmFtZSBCYW5rSW5mbzo6UmVn
aXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICAgICAgaWYg
KCFtX2xvY2tlZFJlZ2lzdGVycy5nZXQocmVnKQorICAgICAgICAgICAgICAgICYmICFtX3VzZWRS
ZWdpc3RlcnMuZ2V0KHJlZykKKyAgICAgICAgICAgICAgICAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJz
LmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAgbV9zY3JhdGNoUmVnaXN0ZXJzLnNldChyZWcp
OworICAgICAgICAgICAgICAgIHJldHVybiByZWc7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIFNpbmNlIHRoYXQgZmFpbGVkLCB0cnkgdG8gYWxsb2NhdGUg
YSByZWdpc3RlciB0aGF0IGlzIG5vdCB5ZXQKKyAgICAgICAgLy8gbG9ja2VkIG9yIHVzZWQgZm9y
IHNjcmF0Y2guCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBCYW5rSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgdHlwZW5hbWUgQmFua0luZm86OlJl
Z2lzdGVyVHlwZSByZWcgPSBCYW5rSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgIGlm
ICghbV9sb2NrZWRSZWdpc3RlcnMuZ2V0KHJlZykgJiYgIW1fc2NyYXRjaFJlZ2lzdGVycy5nZXQo
cmVnKSkgeworICAgICAgICAgICAgICAgIG1fc2NyYXRjaFJlZ2lzdGVycy5zZXQocmVnKTsKKyAg
ICAgICAgICAgICAgICBtX2RpZFJldXNlUmVnaXN0ZXJzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBXZSBmYWlsZWQuCisgICAgICAgIENSQVNIKCk7CisgICAgfQorICAgIAorICAgIEdQUlJl
ZyBhbGxvY2F0ZVNjcmF0Y2hHUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8R1BSSW5mbz4o
KTsgfQorICAgIEZQUlJlZyBhbGxvY2F0ZVNjcmF0Y2hGUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNj
cmF0Y2g8RlBSSW5mbz4oKTsgfQorICAgIAorICAgIGJvb2wgZGlkUmV1c2VSZWdpc3RlcnMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlkUmV1c2VSZWdpc3RlcnM7CisgICAgfQor
ICAgIAorICAgIHZvaWQgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKKyAgICB7CisgICAgICAgIGlmICghbV9kaWRSZXVzZVJlZ2lzdGVycykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAo
bV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdl
dEZQUkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoOCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIo
aSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3Rl
cnMuZ2V0R1BSQnlJbmRleChpKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkK
KyAgICAgICAgICAgICAgICBqaXQucHVzaChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBp
bmcoTWFjcm9Bc3NlbWJsZXImIGppdCkKKyAgICB7CisgICAgICAgIGlmICghbV9kaWRSZXVzZVJl
Z2lzdGVycykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAg
ICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0
ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LnBvcChHUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKG1fc2NyYXRj
aFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUlu
ZGV4KGkpKSB7CisgICAgICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAg
ICAgICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoOCksIE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBz
aXplb2YoSlNWYWx1ZSk7IH0KKyAgICAKKyAgICB2b2lkIHByZXNlcnZlVXNlZFJlZ2lzdGVyc1Rv
U2NyYXRjaEJ1ZmZlcihNYWNyb0Fzc2VtYmxlciYgaml0LCBTY3JhdGNoQnVmZmVyKiBzY3JhdGNo
QnVmZmVyLCBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0
ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIHNjcmF0Y2hCdWZmZXItPm1fYnVmZmVyICsgKGNvdW50KyspKTsK
KyAgICAgICAgICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgIW1fbG9ja2Vk
UmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgIW1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJC
eUluZGV4KGkpKQorICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUlu
ZGV4KGkpKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3Rlcihp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KGNvdW50ICogc2l6ZW9mKEpTVmFsdWUpID09IGRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZSgpKTsK
KyAgICAgICAgCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZzY3JhdGNoQnVmZmVyLT5tX2FjdGl2ZUxlbmd0aCksIHNjcmF0Y2hHUFIpOworICAgICAgICBq
aXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6
ZV90Pihjb3VudCAqIHNpemVvZihKU1ZhbHVlKSkpLCBzY3JhdGNoR1BSKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCByZXN0b3JlVXNlZFJlZ2lzdGVyc0Zyb21TY3JhdGNoQnVmZmVyKE1hY3JvQXNz
ZW1ibGVyJiBqaXQsIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIEdQUlJlZyBzY3JhdGNo
R1BSID0gSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIGlmIChzY3JhdGNoR1BSID09IElu
dmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgYSBzY3JhdGNoIHJlZ2lzdGVyLgor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
IGktLTspIHsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWRSZWdpc3RlcnMuZ2V0R1BSQnlJ
bmRleChpKSB8fCBtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgICAgIAorICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmc2NyYXRjaEJ1ZmZlci0+bV9hY3RpdmVMZW5ndGgpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
aml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BS
KTsKKworICAgICAgICAvLyBSZXN0b3JlIGRvdWJsZSByZWdpc3RlcnMgZmlyc3QuCisgICAgICAg
IHVuc2lnbmVkIGNvdW50ID0gbV91c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0R1BScygpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykg
eworICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpKSB7Cisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2Ny
YXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgICAgICBqaXQubG9hZERvdWJsZShzY3JhdGNoR1BSLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY291bnQgPSAw
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsg
aS0tOykgeworICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkp
KQorICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKHNjcmF0Y2hCdWZmZXItPm1fYnVmZmVyICsg
KGNvdW50KyspLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgIFJlZ2lz
dGVyU2V0IG1fbG9ja2VkUmVnaXN0ZXJzOworICAgIFJlZ2lzdGVyU2V0IG1fc2NyYXRjaFJlZ2lz
dGVyczsKKyAgICBib29sIG1fZGlkUmV1c2VSZWdpc3RlcnM7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERG
R1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIy
Njc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlVUludDMKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIo
KSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxS
ZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVn
IGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgSklUQ29tcGls
ZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBh
dGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7
CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChD
b2RlTwogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1
cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIHRhZ0xvYWRXaXRoUGF0
Y2gsIHBheWxvYWRMb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAogICAg
ICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhf
dD4ocmVzdWx0VGFnR1BSKSwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5
bG9hZEdQUiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICBzYWZl
Q2FzdDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCB1c2VkUmVnaXN0ZXJzKCksCiAgICAgICAg
ICAgICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVn
aXN0ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CkBAIC01OTUs
NiArNTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVl
VGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsCiAgICAgICAgICAgICBiYXNlUGF5bG9hZEdQUiwgaWRl
bnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJl
bnRseVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgY3VycmVudGx5VXNlZFJl
Z2lzdGVycy5jbGVhcihzY3JhdGNoR1BSKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5nZXQoYmFzZVBheWxvYWRHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5nZXQodmFsdWVUYWdHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVy
cy5nZXQodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAg
ICAgICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3Ry
dWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKQEAg
LTYwMiw3ICs2MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2FkU3RvcmVX
aXRoUGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVs
LCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0
PGludDhfdD4odmFsdWVUYWdHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlUGF5bG9hZEdQUiks
Ci0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXJzKCkpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5y
ZWxlYXNlKCkpOwogfQogCkBAIC0zMjkwLDE2ICszMjk1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3By
KCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQu
Z3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHJlc3VsdFRhZ0dQUiA9PSBiYXNlR1BSKQotICAgICAgICAgICAgICAgIHNj
cmF0Y2hHUFIgPSByZXN1bHRQYXlsb2FkR1BSOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHNjcmF0Y2hHUFIgPSByZXN1bHRUYWdHUFI7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLmNvZGVPcmlnaW4sIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwg
cmVzdWx0UGF5bG9hZEdQUiwgc2NyYXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIEludmFsaWRHUFJSZWcs
IGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS5pZGVudGlmaWVy
TnVtYmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMzMTMsMTggKzMzMTIsMTIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsK
LQotICAgICAgICBpZiAocmVzdWx0VGFnR1BSID09IGJhc2VQYXlsb2FkR1BSKQotICAgICAgICAg
ICAgc2NyYXRjaEdQUiA9IHJlc3VsdFBheWxvYWRHUFI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNjcmF0Y2hHUFIgPSByZXN1bHRUYWdHUFI7CiAgICAgICAgIAogICAgICAgICBiYXNlLnVz
ZSgpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS5jb2RlT3JpZ2luLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90
Q2VsbCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlVGFnR1BS
LCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLmlk
ZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzM0NiwxMyArMzMz
OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogCi0gICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgcmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgYmFz
ZS51c2UoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIElu
dmFsaWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgc2Ny
YXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERv
bnRTcGlsbCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgSW52
YWxpZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
LmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzY3LDE1ICszMzU4LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSBy
ZXN1bHRQYXlsb2FkLmdwcigpOwogCi0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2VsZWN0
U2NyYXRjaEdQUihiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFz
ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9h
ZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLmlk
ZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxs
LCBEb250U3BpbGwpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIyNjc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlVUludDMKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7
CiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAg
SklUQ29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9D
b21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSkpKTsKQEAgLTUyMCwxMyArNTIwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlTwogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAgICAg
IGNvZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5
U3RvcmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwg
ZG9uZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJl
c3VsdEdQUiksCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLAorICAg
ICAgICAgICAgdXNlZFJlZ2lzdGVycygpLAogICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRU
b1NwaWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlB
Y2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aC5yZWxlYXNlKCkpOwotCi0KLSAgICBpZiAoc2NyYXRjaEdQUiAhPSByZXN1bHRH
UFIgJiYgc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnICYmIHNwaWxsTW9kZSA9PSBOZWVkVG9T
cGlsbCkKLSAgICAgICAgdW5sb2NrKHNjcmF0Y2hHUFIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEdQUlJlZyB2YWx1ZUdQUiwgRWRnZSB2YWx1ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQgcHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQpCkBAIC01NjgsMTEgKzU2NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGlt
aXplZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50
aWZpZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KKyAgICBSZWdpc3RlclNldCBjdXJyZW50
bHlVc2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOworICAgIGN1cnJlbnRseVVzZWRSZWdp
c3RlcnMuY2xlYXIoc2NyYXRjaEdQUik7CisgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3Rl
cnMuZ2V0KGJhc2VHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQo
dmFsdWVHUFIpKTsKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVy
dHlBY2Nlc3NSZWNvcmQoCiAgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBh
cmUsIHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQ
YXRoLmdldCgpLCBkb25lTGFiZWwsCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VH
UFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNo
R1BSKSkpOworICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8
aW50OF90Pih2YWx1ZUdQUiksIGN1cnJlbnRseVVzZWRSZWdpc3RlcnMpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkBAIC0zMzE5LDE2ICszMzE5
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVzdWx0R1BSID09IGJh
c2VHUFIpCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdEdQUjsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlm
aWVyTnVtYmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTMzMzksMTggKzMzMzMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZXN1
bHRHUFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSB0cnlBbGxvY2F0ZSgp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAg
ICAgICAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJv
LCBiYXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgc2NyYXRj
aEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZp
ZXJOdW1iZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgIApAQCAtMzM3MSwxMyArMzM1OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlk
ZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICAg
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIs
IG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9j
b21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMzODksMTQgKzMzNzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJlc3VsdEdQUik7Ci0gICAg
ICAgIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRl
c3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3Rlcik7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwg
YmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwg
bm90Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmln
aW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGws
IERvbnRTcGlsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDIyIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHVzZShub2RlVXNlLmluZGV4KCkpOwogICAgIH0KKyAgICAKKyAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3Vs
dDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
IGktLTspIHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
OworICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0luVXNlKGdwcikpCisgICAgICAgICAgICAgICAg
cmVzdWx0LnNldChncHIpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBGUFJSZWcgZnBy
ID0gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgIGlmIChtX2ZwcnMuaXNJblVz
ZShmcHIpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoZnByKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIG1hcmtDZWxsQ2Fy
ZChNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBH
UFJSZWcgc2NyYXRjaEdQUjIpOwogICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihNYWNyb0Fz
c2VtYmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIFdyaXRlQmFycmllclVzZUtpbmQpOwpAQCAtOTQyLDEwICs5NTgsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVVSW50MzJUb051bWJlcihOb2RlJik7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklU
Q29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBO
ZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlLCBHUFJSZWcgdmFsdWUsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1w
KCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdl
dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwp
OwogICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVBheWxvYWRH
UFIsIEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiwgRWRnZSB2YWx1
ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtp
bmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAo
KSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxs
b2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVk
QWxsb2NhdG9yLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcGllZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb3BpZWRBbGxvY2F0b3IgewotICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiBwdWJsaWM6CiAgICAgQ29waWVkQWxsb2NhdG9yKCk7CiAgICAgCisgICAgYm9v
bCBmYXN0UGF0aFNob3VsZFN1Y2NlZWQoc2l6ZV90IGJ5dGVzKSBjb25zdDsKICAgICBDaGVja2Vk
Qm9vbGVhbiB0cnlBbGxvY2F0ZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpOwogICAgIENo
ZWNrZWRCb29sZWFuIHRyeVJlYWxsb2NhdGUodm9pZCAqb2xkUHRyLCBzaXplX3Qgb2xkQnl0ZXMs
IHNpemVfdCBuZXdCeXRlcyk7CiAgICAgdm9pZCogZm9yY2VBbGxvY2F0ZShzaXplX3QgYnl0ZXMp
OwpAQCAtNDYsOSArNDYsMTIgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIHsg
cmV0dXJuICEhbV9jdXJyZW50QmxvY2s7IH0KIAotcHJpdmF0ZToKICAgICBDb3BpZWRCbG9jayog
Y3VycmVudEJsb2NrKCkgeyByZXR1cm4gbV9jdXJyZW50QmxvY2s7IH0KIAorICAgIC8vIFllcywg
dGhlc2UgYXJlIHB1YmxpYy4gTm8sIHRoYXQgZG9lc24ndCBtZWFuIHlvdSBjYW4gcGxheSB3aXRo
IHRoZW0uCisgICAgLy8gSWYgSSBoYWQgbWFkZSB0aGVtIHByaXZhdGUgdGhlbiBJJ2QgaGF2ZSB0
byBsaXN0IG9mZiBhbGwgb2YgdGhlIEpJVAorICAgIC8vIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB0
aGF0IGFyZSBlbnRpdGxlZCB0byBtb2RpZnkgdGhlc2UgZGlyZWN0bHksIGFuZAorICAgIC8vIHRo
YXQgd291bGQgaGF2ZSBiZWVuIGdyb3NzLgogICAgIHNpemVfdCBtX2N1cnJlbnRSZW1haW5pbmc7
CiAgICAgY2hhciogbV9jdXJyZW50UGF5bG9hZEVuZDsKICAgICBDb3BpZWRCbG9jayogbV9jdXJy
ZW50QmxvY2s7IApAQCAtNjEsNiArNjQsMTMgQEAgaW5saW5lIENvcGllZEFsbG9jYXRvcjo6Q29w
aWVkQWxsb2NhdG9yKAogewogfQogCitpbmxpbmUgYm9vbCBDb3BpZWRBbGxvY2F0b3I6OmZhc3RQ
YXRoU2hvdWxkU3VjY2VlZChzaXplX3QgYnl0ZXMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJ5
dGVBbGlnbmVkKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGJ5dGVzKSkpOworICAgIAorICAgIHJl
dHVybiBieXRlcyA8PSBtX2N1cnJlbnRSZW1haW5pbmc7Cit9CisKIGlubGluZSBDaGVja2VkQm9v
bGVhbiBDb3BpZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlKHNpemVfdCBieXRlcywgdm9pZCoqIG91
dFB0cikKIHsKICAgICBBU1NFUlQoaXM4Qnl0ZUFsaWduZWQocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oYnl0ZXMpKSk7Cg==
</data>
<flag name="commit-queue"
          id="161194"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152580</attachid>
            <date>2012-07-16 12:01:52 -0700</date>
            <delta_ts>2012-07-16 12:52:25 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>dfgtransition_patch_6.diff</filename>
            <type>text/plain</type>
            <size>67498</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMi0wNy0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBQdXRCeUlkIHRyYW5zaXRpb24gc2hvdWxkIGhhbmRsZSBzdG9yYWdlIGFsbG9jYXRpb24s
IGFuZCBpbmxpbmUgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxMzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBlbmFibGVzIHRoZSBwYXRjaGluZyBvZiBERkcgUHV0QnlJZCB0byBoYW5kbGUg
dGhlIG91dC1vZi1saW5lIHN0b3JhZ2UKKyAgICAgICAgYWxsb2NhdGlvbiBjYXNlLiBGdXJ0aGVy
bW9yZSwgaXQgaW5saW5lcyBvdXQtb2YtbGluZSBzdG9yYWdlIGFsbG9jYXRpb24gKGFuZAorICAg
ICAgICByZWFsbG9jYXRpb24pIGludG8gdGhlIGdlbmVyYXRlZCBzdHVicy4gIAorICAgICAgICAK
KyAgICAgICAgVG8gZG8gdGhpcywgdGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHN0b3Jl
IHRoZSByZWxldmFudCByZWdpc3RlcgorICAgICAgICBhbGxvY2F0aW9uIHN0YXRlIChpLmUuIHRo
ZSBzZXQgb2YgaW4tdXNlIHJlZ2lzdGVycykgaW4gdGhlIHN0cnVjdHVyZSBzdHViCisgICAgICAg
IGluZm8gc28gdGhhdCB0aGUgc3R1YiBnZW5lcmF0aW9uIGNvZGUgY2FuIG1vcmUgZmxleGlibHkg
c2VsZWN0IHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXJzOiBzb21ldGltZXMgaXQgbmVlZHMgbm9u
ZSwgc29tZXRpbWVzIG9uZSAtIG9yIHNvbWV0aW1lcyB1cCB0bworICAgICAgICB0aHJlZS4gTW9y
ZW92ZXIsIHRvIG1ha2UgdGhlIHN0dWIgZ2VuZXJhdGlvbiByZWdpc3RlciBhbGxvY2F0aW9uIHNp
bXBsZSBhbmQKKyAgICAgICAgbWFpbnRhaW5hYmxlLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBy
ZXVzYWJsZSBzY3JhdGNoIHJlZ2lzdGVyIGFsbG9jYXRvcgorICAgICAgICBjbGFzcy4gVGhpcyBy
ZWdpc3RlciBhbGxvY2F0b3IgdW5kZXJzdGFuZHMgdGhhdCBzb21lIHJlZ2lzdGVycyBhcmUgaW4g
dXNlIGJ5CisgICAgICAgIHRoZSBtYWluIHBhdGggY29kZSBhbmQgc28gbXVzdCBiZSBzcGlsbGVk
IGFzIG5lY2Vzc2FyeSwgb3RoZXIgcmVnaXN0ZXJzIGFyZQorICAgICAgICBsb2NrZWQgZm9yIHVz
ZSBpbiB0aGUgc3R1YiBpdHNlbGYgYW5kIHNvIGNhbm5vdCBldmVuIGJlIHNwaWxsZWQsIHdoaWxl
IHN0aWxsCisgICAgICAgIG90aGVycyBtYXkgYmUgYWxsb2NhdGVkIGZvciBzY3JhdGNoIHB1cnBv
c2VzLiBBIHNjcmF0Y2ggcmVnaXN0ZXIgdGhhdCBpcworICAgICAgICB1c2VkIG11c3QgYmUgc3Bp
bGxlZC4gSWYgYSByZWdpc3RlciBpcyBsb2NrZWQsIGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEKKyAg
ICAgICAgc2NyYXRjaCByZWdpc3Rlci4gSWYgYSByZWdpc3RlciBpcyB1c2VkLCBpdCBjYW4gYmUg
dXNlZCBhcyBhIHNjcmF0Y2gKKyAgICAgICAgcmVnaXN0ZXIgc28gbG9uZyBhcyBpdCBpcyBzcGls
bGVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIHN1Yi0xJSBzcGVlZC11cCBvbiBWOCBh
bmQgbmV1dHJhbCBlbHNld2hlcmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoRnVuY3Rp
b25QdHIpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0NDYWxs
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgICogZGZn
L0RGR0dQUkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UHJvcGVy
dHlBY2Nlc3NSZWNvcmQpOgorICAgICAgICAoUHJvcGVydHlBY2Nlc3NSZWNvcmQpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlckJhbms6OmlzSW5Vc2UpOgorICAgICAgICAoUmVnaXN0ZXJCYW5rKToKKyAgICAgICAg
KiBkZmcvREZHUmVnaXN0ZXJTZXQuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAo
UmVnaXN0ZXJTZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpSZWdpc3RlclNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmFzUE9EKToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Y29weUluZm8pOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lz
dGVyU2V0OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpzZXRHUFJCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Y2xlYXIpOgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpnZXRHUFJCeUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6Z2V0
RnJlZUdQUik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEZQUkJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpnZXRGUFJCeUluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpSZWdpc3RlclNldDo6c2V0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6UmVnaXN0ZXJTZXQ6OmdldEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
U2V0OjpudW1iZXJPZlNldEdQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0Ojpu
dW1iZXJPZlNldEZQUnMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyU2V0OjpudW1iZXJP
ZlNldFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OnNldEJpdCk6
CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJTZXQ6OmNsZWFyQml0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlclNldDo6Z2V0Qml0KToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0
cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0
dWIpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAg
IChKU0M6OkRGRzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWls
ZFB1dEJ5SWRMaXN0KToKKyAgICAgICAgKiBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjphbGxvY2F0ZVNjcmF0Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6YWxsb2NhdGVTY3JhdGNoR1BSKToKKyAgICAgICAgKEpTQzo6REZHOjpT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaEZQUik6CisgICAgICAgIChK
U0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpkaWRSZXVzZVJlZ2lzdGVycyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpyZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZl
cik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxh
dGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnVzZWRSZWdpc3Rl
cnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
aGVhcC9Db3BpZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKENvcGllZEFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6OkNvcGllZEFsbG9jYXRvcjo6ZmFzdFBhdGhTaG91bGRTdWNjZWVkKToKKyAgICAg
ICAgKEpTQyk6CisKIDIwMTItMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBERkcgUHV0QnlWYWwgb3Bjb2RlcyBzaG91bGQgYWNjZXB0IG1vcmUgdGhhbiAz
IG9wZXJhbmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNiw5ICsyMTYsMTEgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWR1bmRhbnRQ
aGlFbGltaW5hdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJCYW5rLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDYgKzE1MCw4IEBACiAJCTBGNzY2RDM1MTVBRTI1M0IwMDhGMzYzRSAvKiBKdW1wUmVwbGFj
ZW1lbnRXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQzMzE1QUUyNTM1MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hw
b2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcCAqLzsgfTsKIAkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0MjE1QjJB
M0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyogREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZHU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5
MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKIAkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8q
IERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFG
MTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk1LDYgKzg5Nyw4IEBACiAJCTBGNzY2
RDMzMTVBRTI1MzUwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8q
IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZENDIxNUIyQTNCRDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVy
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyU2V0Lmg7
IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaDsgcGF0aCA9IGRmZy9ERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNh
bXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGlu
Z0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYy
ODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxsSGVscGVycy5oOyBwYXRoID0g
ZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMw
NCw5ICsyMzA4LDExIEBACiAJCQkJMEE0MzM3QkExNTA2MjE4ODAwOTkxQzk1IC8qIERGR1JlZHVu
ZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuY3BwICovLAogCQkJCTBBNDMzN0JEMTUwNjIxOUIwMDk5
MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmggKi8sCiAJCQkJODZFQzlE
QzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAorCQkJCTBGNzY2RDQy
MTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oICovLAogCQkJCTg2QkIwOUJFMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLywKIAkJCQk4NkJCMDlCRjEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovLAogCQkJCTg2RUNBM0Y5MTMyREYyNUEwMDJCMkFE
NyAvKiBERkdTY29yZUJvYXJkLmggKi8sCisJCQkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8q
IERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAogCQkJCTBGMUUzQTY1MTUzQTIxREYw
MDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggKi8sCiAJCQkJMEYxRTNBNTAx
NTM3QzJDQjAwMEY5NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggKi8sCiAJCQkJODZFQzlE
QzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLywKQEAgLTI4NTAs
NiArMjg1Niw4IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzNTE1QUUyNTNCMDA4RjM2M0UgLyogSnVt
cFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzkxNUFF
NEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJ
KHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTMgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUx
LCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTMsIHR5cGVuYW1lIGFyZ1R5cGU0
LCB0eXBlbmFtZSBhcmdUeXBlNT4KKyAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSko
YXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFyZ1R5cGU1KSkKKyAgICAg
ICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgfQorCiAvLyBNU1ZDIGRvZXNuJ3Qgc2VlbSB0byB0
cmVhdCBmdW5jdGlvbnMgd2l0aCBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucyBhcwogLy8g
ZGlmZmVyZW50IHR5cGVzOyB0aGVzZSBtZXRob2RzIGFscmVhZHkgZGVmaW5lZCBmb3IgZmFzdGNh
bGwsIGJlbG93LgogI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMICYmICFPUyhXSU5E
T1dTKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgpAQCAtMjEy
LDcgKzIxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1
ZVRhZ0dQUjsKICNlbmRpZgogICAgICAgICAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKLSAgICAg
ICAgICAgICAgICBpbnQ4X3Qgc2NyYXRjaEdQUjsKKyAgICAgICAgICAgICAgICBERkc6OlJlZ2lz
dGVyU2V0UE9EIHVzZWRSZWdpc3RlcnM7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb0RvbmU7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBkZWx0YUNhbGxUb1N0b3JhZ2VMb2Fk
OwogICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24g
MTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzUpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTY0
Miw2ICs2NjMsMTkgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCAx
KTsKKyAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewogICAgICAgICBwb2tlKGFy
ZzQpOwpAQCAtNzIyLDYgKzc1NiwxNiBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnNCk7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
ZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewogICAgICAgICBH
UFJSZWcgc3JjQSA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
MTIgQEAKICNpZm5kZWYgREZHR1BSSW5mb19oCiAjZGVmaW5lIERGR0dQUkluZm9faAogCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUg
PGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oPgotI2luY2x1ZGUgPGRmZy9ERkdSZWdpc3RlckJh
bmsuaD4KKyNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjI2
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0IKICAgICAgICAgaW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIgPSBtX3By
b3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZVRhZ0dQUjsKICAgICAgICAgaW5mby5wYXRjaC5kZmcu
dmFsdWVHUFIgPSBtX3Byb3BlcnR5QWNjZXNzZXNbaV0ubV92YWx1ZUdQUjsKICNlbmRpZgotICAg
ICAgICBpbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSID0gbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1f
c2NyYXRjaEdQUjsKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzW2ldLm1fdXNlZFJlZ2lzdGVy
cy5jb3B5SW5mbyhpbmZvLnBhdGNoLmRmZy51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgaW5mby5w
YXRjaC5kZmcucmVnaXN0ZXJzRmx1c2hlZCA9IG1fcHJvcGVydHlBY2Nlc3Nlc1tpXS5tX3JlZ2lz
dGVyTW9kZSA9PSBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZDsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdH
UFJJbmZvLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJh
bmsuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKQEAg
LTE2OSw3ICsxNzAsNyBAQCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSwKICAgICAgICAgaW50OF90IGJhc2VHUFIsCiAgICAg
ICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90IHNjcmF0Y2hHUFIsCisgICAgICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBSZWdpc3Rlck1vZGUg
cmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0cnVjdCBQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCB7CiAgICAgICAgIGludDhfdCBiYXNlR1BSLAogICAgICAgICBpbnQ4
X3QgdmFsdWVUYWdHUFIsCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUiwKLSAgICAgICAgaW50OF90
IHNjcmF0Y2hHUFIsCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAog
ICAgICAgICBSZWdpc3Rlck1vZGUgcmVnaXN0ZXJNb2RlID0gUmVnaXN0ZXJzSW5Vc2UpCiAjZW5k
aWYKICAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKQEAgLTIwNCw3ICsyMDUsNyBA
QCBzdHJ1Y3QgUHJvcGVydHlBY2Nlc3NSZWNvcmQgewogICAgICAgICAsIG1fdmFsdWVUYWdHUFIo
dmFsdWVUYWdHUFIpCiAjZW5kaWYKICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQotICAg
ICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQorICAgICAgICAsIG1fdXNlZFJlZ2lzdGVy
cyh1c2VkUmVnaXN0ZXJzKQogICAgICAgICAsIG1fcmVnaXN0ZXJNb2RlKHJlZ2lzdGVyTW9kZSkK
ICAgICB7CiAgICAgfQpAQCAtMjI2LDcgKzIyNyw3IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1Jl
Y29yZCB7CiAgICAgaW50OF90IG1fdmFsdWVUYWdHUFI7CiAjZW5kaWYKICAgICBpbnQ4X3QgbV92
YWx1ZUdQUjsKLSAgICBpbnQ4X3QgbV9zY3JhdGNoR1BSOworICAgIFJlZ2lzdGVyU2V0IG1fdXNl
ZFJlZ2lzdGVyczsKICAgICBSZWdpc3Rlck1vZGUgbV9yZWdpc3Rlck1vZGU7CiB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNiArMTIzMiwxNSBAQCBzaXplX3QgREZHX09QRVJBVElP
TiBvcGVyYXRpb25Jc0Z1bmN0aW9uCiAgICAgcmV0dXJuIGpzSXNGdW5jdGlvblR5cGUoSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFs
bG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJh
c2UtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgIGJhc2Ut
PnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKKyAgICBiYXNlLT5wdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0
LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKK30KKwogZG91YmxlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uRk1vZE9uSW50cyhpbnQzMl90IGEsIGludDMyX3QgYikKIHsKICAgICByZXR1cm4gZm1v
ZChhLCBiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxMjI2NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw3IEBAIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGkKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERGR19P
UEVSQVRJT04gb3BlcmF0aW9uSXNPYmplY3QoRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzRnVuY3Rpb24oRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3Rv
cmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3Bl
cnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogCiAvLyBUaGlzIG1ldGhv
ZCBpcyB1c2VkIHRvIGxvb2t1cCBhbiBleGNlcHRpb24gaGFuZGVyLCBrZXllZCBieSBmYXVsdExv
Y2F0aW9uLCB3aGljaCBpcwogLy8gdGhlIHJldHVybiBsb2NhdGlvbiBmcm9tIG9uZSBvZiB0aGUg
Y2FsbHMgb3V0IHRvIG9uZSBvZiB0aGUgaGVscGVyIG9wZXJhdGlvbnMgYWJvdmUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHJldmlzaW9uIDEy
MjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bmFtZUF0SW5kZXgoQmFua0luZm86OnRvSW5kZXgocmVnKSk7CiAgICAgfQogICAgIAorICAgIGJv
b2wgaXNJblVzZShSZWdJRCByZWcpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNMb2Nr
ZWQocmVnKSB8fCBuYW1lKHJlZykgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKKyAgICB9Cisg
ICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBERkdSZWdpc3RlclNldF9oCisjZGVmaW5lIERGR1JlZ2lzdGVyU2V0X2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNp
bmNsdWRlICJERkdGUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUg
PHd0Zi9CaXRtYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyA9CisgICAgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsKKworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQnl0ZXNJblJlZ2lzdGVyU2V0ID0KKyAgICAodG90YWxO
dW1iZXJPZlJlZ2lzdGVycyArIDcpID4+IDM7CisKK3R5cGVkZWYgdWludDhfdCBSZWdpc3RlclNl
dFBPRFtudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldF07CisKK2NsYXNzIFJlZ2lzdGVyU2V0IHsK
K3B1YmxpYzoKKyAgICBSZWdpc3RlclNldCgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1iZXJPZkJ5dGVzSW5SZWdpc3RlclNldDsgaS0tOykKKyAgICAgICAgICAgIG1fc2V0
W2ldID0gMDsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXRQ
T0QmIG90aGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBtX3NldFtpXSA9IG90aGVyW2ldOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBSZWdpc3RlclNldFBPRCYgYXNQT0QoKSBjb25zdCB7IHJl
dHVybiBtX3NldDsgfQorICAgIAorICAgIHZvaWQgY29weUluZm8oUmVnaXN0ZXJTZXRQT0QmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZCeXRl
c0luUmVnaXN0ZXJTZXQ7IGktLTspCisgICAgICAgICAgICBvdGhlcltpXSA9IG1fc2V0W2ldOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0
Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0R1BS
QnlJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc2V0Qml0KGluZGV4KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbGVhcihHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgY2xlYXJC
aXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoR1BS
UmVnIHJlZykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6dG9J
bmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXRHUFJCeUluZGV4KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gZ2V0Qml0KGluZGV4KTsKKyAgICB9Cisg
ICAgCisgICAgLy8gUmV0dXJuIHRoZSBpbmRleCd0aCBmcmVlIEdQUi4KKyAgICBHUFJSZWcgZ2V0
RnJlZUdQUih1bnNpZ25lZCBpbmRleCA9IDApIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAg
ICAgaWYgKCFnZXRHUFJCeUluZGV4KGkpICYmICFpbmRleC0tKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJ
bnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChGUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgc2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRGUFJCeUluZGV4KHVuc2ln
bmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMpOworICAgICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
KyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKKyAgICB7
CisgICAgICAgIGNsZWFyQml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6
dG9JbmRleChyZWcpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOworICAgIH0KKyAgICAKKyAgICBib29sIGdldEZQ
UkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiBnZXRCaXQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJhbmtJbmZvPgorICAgIHZvaWQgc2V0QnlJbmRleCh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIHNldChCYW5rSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICBib29sIGdl
dEJ5SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KEJhbmtJ
bmZvOjp0b1JlZ2lzdGVyKGluZGV4KSk7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG51bWJl
ck9mU2V0R1BScygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0t
OykgeworICAgICAgICAgICAgaWYgKCFnZXRCaXQoaSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldEZQUnMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgIGlm
ICghZ2V0Qml0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNldFJlZ2lz
dGVycygpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB0b3RhbE51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAg
ICAgICAgICBpZiAoIWdldEJpdChpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIHJlc3VsdCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIHNldEJpdCh1bnNpZ25lZCBpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgbV9zZXRb
aSA+PiAzXSB8PSAoMSA8PCAoaSAmIDcpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbGVhckJp
dCh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVn
aXN0ZXJzKTsKKyAgICAgICAgbV9zZXRbaSA+PiAzXSAmPSB+KDEgPDwgKGkgJiA3KSk7CisgICAg
fQorICAgIAorICAgIGJvb2wgZ2V0Qml0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaSA8IHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gISEo
bV9zZXRbaSA+PiAzXSAmICgxIDw8IChpICYgNykpKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0
ZXJTZXRQT0QgbV9zZXQ7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbHNl
IC8vIEVOQUJMRShERkdfSklUKSAtPiBzbyBpZiBERkcgaXMgZGlzYWJsZWQKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBEZWZpbmUgUmVnaXN0ZXJTZXRQT0QgdG8gc29t
ZXRoaW5nIHRoYXQgaXMgYSBQT0QsIGJ1dCBpcyBvdGhlcndpc2UgdXNlbGVzcywKKy8vIHRvIG1h
a2UgaXQgZWFzaWVyIHRvIHJlZmVyIHRvIHRoaXMgdHlwZSBpbiBjb2RlIHRoYXQgbWF5IGJlIGNv
bXBpbGVkIHdoZW4KKy8vIHRoZSBERkcgaXMgZGlzYWJsZWQuCisKK3N0cnVjdCBSZWdpc3RlclNl
dFBPRCB7IH07CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHUmVnaXN0ZXJTZXRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEyMjY3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NDYWxs
SGVscGVycy5oIgorI2luY2x1ZGUgIkRGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5j
bHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCkBAIC0xNjEsNyArMTYyLDcgQEAgc3RhdGlj
IHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgIEdQUlJlZyByZXN1bHRUYWdH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7
CiAjZW5kaWYKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC5kZmcudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGlj
X2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7CisgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJlZ2lzdGVy
cykuZ2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsK
ICAgICAKICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yMzEsNyAr
MjMyLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRj
aC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZUdQUik7Ci0gICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5k
Zmcuc2NyYXRjaEdQUik7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQo
c3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMpLmdldEZyZWVHUFIoKTsKICAgICAgICAg
Ym9vbCBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXIgc3R1YkppdDsKQEAgLTM4NCw3ICszODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlC
dWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy52YWx1ZVRhZ0dQUik7CiAjZW5k
aWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdGF0
aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmRmZy5zY3JhdGNoR1BSKTsKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC5kZmcudXNlZFJl
Z2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0
dWJKaXQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKTsKICAgICAgICAgCkBAIC02MjksNyArNjMwLDcg
QEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQ
UiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnZhbHVlVGFnR1BSKTsK
ICNlbmRpZgogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1Yklu
Zm8ucGF0Y2guZGZnLnZhbHVlR1BSKTsKLSAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guZGZnLnNjcmF0Y2hHUFIpOworICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2guZGZnLnVzZWRSZWdpc3RlcnMp
LmdldEZyZWVHUFIoKTsKICAgICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAj
aWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgIEdQ
UlJlZyBzY3JhdGNoR1BSMjsKQEAgLTcyMiw4OSArNzIzLDIwMyBAQCBzdGF0aWMgdm9pZCBlbWl0
UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8
R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgR1BS
UmVnIHZhbHVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5kZmcudmFs
dWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHVi
SW5mby5wYXRjaC5kZmcuc2NyYXRjaEdQUik7Ci0gICAgYm9vbCBuZWVkVG9SZXN0b3JlU2NyYXRj
aCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gYmFzZUdQ
Uik7CisgICAgCisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5m
by5wYXRjaC5kZmcudXNlZFJlZ2lzdGVycyk7CisgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVRhZ0dQUik7
CisjZW5kaWYKKyAgICBhbGxvY2F0b3IubG9jayh2YWx1ZUdQUik7CisgICAgCisgICAgQ0NhbGxI
ZWxwZXJzIHN0dWJKaXQoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICAKLSAgICBNYWNyb0Fzc2Vt
YmxlciBzdHViSml0OworICAgIEdQUlJlZyBzY3JhdGNoR1BSMSA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKKyAgICBBU1NFUlQoc2NyYXRjaEdQUjEgIT0gYmFzZUdQUik7CisgICAg
QVNTRVJUKHNjcmF0Y2hHUFIxICE9IHZhbHVlR1BSKTsKKyAgICAKKyAgICBib29sIG5lZWRTZWNv
bmRTY3JhdGNoID0gZmFsc2U7CisgICAgYm9vbCBuZWVkVGhpcmRTY3JhdGNoID0gZmFsc2U7Cisj
aWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIG5l
ZWRTZWNvbmRTY3JhdGNoID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpCisgICAg
ICAgICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICBuZWVk
U2Vjb25kU2NyYXRjaCA9IHRydWU7CisgICAgICAgIG5lZWRUaGlyZFNjcmF0Y2ggPSB0cnVlOwor
ICAgIH0KKworICAgIEdQUlJlZyBzY3JhdGNoR1BSMjsKKyAgICBpZiAobmVlZFNlY29uZFNjcmF0
Y2gpIHsKKyAgICAgICAgc2NyYXRjaEdQUjIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BS
KCk7CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSMiAhPSBiYXNlR1BSKTsKKyAgICAgICAgQVNT
RVJUKHNjcmF0Y2hHUFIyICE9IHZhbHVlR1BSKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIy
ICE9IHNjcmF0Y2hHUFIxKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2NyYXRjaEdQUjIgPSBJbnZh
bGlkR1BSUmVnOworICAgIEdQUlJlZyBzY3JhdGNoR1BSMzsKKyAgICBpZiAobmVlZFRoaXJkU2Ny
YXRjaCkgeworICAgICAgICBzY3JhdGNoR1BSMyA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hH
UFIoKTsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIzICE9IGJhc2VHUFIpOworICAgICAgICBB
U1NFUlQoc2NyYXRjaEdQUjMgIT0gdmFsdWVHUFIpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQ
UjMgIT0gc2NyYXRjaEdQUjEpOworICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUjMgIT0gc2NyYXRj
aEdQUjIpOworICAgIH0gZWxzZQorICAgICAgICBzY3JhdGNoR1BSMyA9IEludmFsaWRHUFJSZWc7
CiAgICAgICAgICAgICAKKyAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1
c2hpbmcoc3R1YkppdCk7CisKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzOwogICAgICAgICAgICAgCi0gICAgaWYgKHNjcmF0Y2hHUFIgPT0gSW52YWxpZEdQUlJlZykg
ewotICAgICAgICBzY3JhdGNoR1BSID0gU3BlY3VsYXRpdmVKSVQ6OnNlbGVjdFNjcmF0Y2hHUFIo
YmFzZUdQUiwgdmFsdWVHUFIpOwotICAgICAgICBzdHViSml0LnB1c2goc2NyYXRjaEdQUik7Ci0g
ICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgQVNT
RVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihvbGRTdHJ1Y3R1cmUpKSk7CiAgICAgCiAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNr
KAogICAgICAgICBvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCBleGVjLT5jb2RlQmxv
Y2soKSwgc3R1YkluZm8sIHN0dWJKaXQsIGZhaWx1cmVDYXNlcywKLSAgICAgICAgc2NyYXRjaEdQ
Uik7CisgICAgICAgIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIAogICAgIGlmIChwdXRLaW5k
ID09IE5vdERpcmVjdCkgewogICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IHByb3RvdHlwZUNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkgewogICAgICAgICAgICAgYWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICgqaXQpLT5zdG9yZWRQ
cm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBzdHViSml0LCBmYWlsdXJl
Q2FzZXMsCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgc2Ny
YXRjaEdQUjEpOwogICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKEdHQykgfHwgRU5BQkxF
KFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIEFTU0VSVChuZWVkU2Vjb25kU2NyYXRjaCk7
CisgICAgQVNTRVJUKHNjcmF0Y2hHUFIyICE9IEludmFsaWRHUFJSZWcpOwogICAgIC8vIE11c3Qg
YWx3YXlzIGVtaXQgdGhpcyB3cml0ZSBiYXJyaWVyIGFzIHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlv
biBpdHNlbGYgcmVxdWlyZXMgaXQKLSAgICBHUFJSZWcgc2NyYXRjaDIgPSBTcGVjdWxhdGl2ZUpJ
VDo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCB2YWx1ZUdQUiwgc2NyYXRjaEdQUik7Ci0gICAg
c3R1YkppdC5wdXNoKHNjcmF0Y2gyKTsKLSAgICBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVy
KHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7Ci0gICAgc3R1YkppdC5wb3Aoc2NyYXRjaDIpOworICAgIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoc3R1YkppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUjEsIHNjcmF0
Y2hHUFIyLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAjZW5kaWYKKyAgICAKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisgICAgCisgICAgYm9vbCBzY3Jh
dGNoR1BSMUhhc1N0b3JhZ2UgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewor
ICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgQ29waWVkQWxsb2NhdG9yKiBjb3BpZWRBbGxvY2F0
b3IgPSAmZ2xvYmFsRGF0YS0+aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAg
ICAgc3R1YkppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJKaXQuYnJhbmNo
U3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHNjcmF0Y2hHUFIxLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOworICAg
ICAgICAgICAgc3R1YkppdC5uZWdQdHIoc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1Ykpp
dC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9y
LT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1Ykpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwgc2NyYXRjaEdQ
UjEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBPcHRpbWlzdGljYWxseSBhc3N1bWUgdGhhdCB0aGUgb2xkIHN0b3JhZ2Ugd2FzIHRoZSB2
ZXJ5IGxhc3QgdGhpbmcKKyAgICAgICAgICAgIC8vIGFsbG9jYXRlZC4KKyAgICAgICAgICAgIHN0
dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZPdXRPZkxpbmVTdG9yYWdlKCkpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCwgc2Ny
YXRjaEdQUjIpOworICAgICAgICAgICAgc3R1YkppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3It
Pm1fY3VycmVudFJlbWFpbmluZywgc2NyYXRjaEdQUjEpOworICAgICAgICAgICAgc3R1YkppdC5z
dWJQdHIoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3Vi
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIob2xkU2l6ZSksIHNjcmF0Y2hHUFIyKTsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5lZWRGdWxsUmVhbGxvYyA9CisgICAg
ICAgICAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBz
Y3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0
dWJKaXQuYnJhbmNoU3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIobmV3U2l6ZSAtIG9sZFNpemUpLCBzY3JhdGNoR1BSMSkpOworICAgICAg
ICAgICAgc3R1YkppdC5zdG9yZVB0cihzY3JhdGNoR1BSMSwgJmNvcGllZEFsbG9jYXRvci0+bV9j
dXJyZW50UmVtYWluaW5nKTsKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSMiwg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZVJlYWxs
b2MgPSBzdHViSml0Lmp1bXAoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmVlZEZ1bGxS
ZWFsbG9jLmxpbmsoJnN0dWJKaXQpOworICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJK
aXQuYnJhbmNoU3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIxKSk7CisgICAgICAgICAgICBzdHViSml0
LnN0b3JlUHRyKHNjcmF0Y2hHUFIxLCAmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5p
bmcpOworICAgICAgICAgICAgc3R1YkppdC5uZWdQdHIoc2NyYXRjaEdQUjEpOworICAgICAgICAg
ICAgc3R1YkppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcygmY29waWVk
QWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRjaEdQUjEpOworICAgICAgICAg
ICAgc3R1YkppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwg
c2NyYXRjaEdQUjEpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSBzY3JhdGNoR1BSMSA9IG5ldyBz
dG9yYWdlLCBzY3JhdGNoR1BSMyA9IG9sZCBzdG9yYWdlLCBzY3JhdGNoR1BSMiA9IGF2YWlsYWJs
ZQorICAgICAgICAgICAgZm9yIChzaXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb2xkU2l6ZTsg
b2Zmc2V0ICs9IHNpemVvZihKU1ZhbHVlKSkgeworICAgICAgICAgICAgICAgIHN0dWJKaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSMywgb2Zmc2V0KSwgc2NyYXRj
aEdQUjIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQUjIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXQpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG9uZVJlYWxsb2MubGluaygmc3R1YkppdCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UjEsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZk91
dE9mTGluZVN0b3JhZ2UoKSkpOworICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2UgPSB0cnVl
OworICAgIH0KIAogICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQogICAgICAgICBzdHViSml0LnN0b3JlUHRy
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3R1Ykpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0LnN0
b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZz
ZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICAgICAgaWYgKCFzY3JhdGNoR1BSMUhhc1N0b3JhZ2UpCisgICAgICAgICAgICBz
dHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBzdHVi
Sml0LnN0b3JlUHRyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
MSwgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9m
KEpTVmFsdWUpKSk7CiAgICAgfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKICAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgICAgIHN0dWJKaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0Ojpv
ZmZzZXRPZk91dE9mTGluZVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICBzdHViSml0
LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9m
ZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihKU1Zh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5j
YWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyAgICAgICAgaWYgKCFzY3JhdGNoR1BS
MUhhc1N0b3JhZ2UpCisgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mT3V0T2ZMaW5lU3RvcmFnZSgpKSwg
c2NyYXRjaEdQUjEpOworICAgICAgICBzdHViSml0LnN0b3JlMzIodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIxLCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CisgICAgICAgIHN0dWJKaXQu
c3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUjEs
IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
dGFnKSkpOwogICAgIH0KICNlbmRpZgogICAgICAgICAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc3VjY2VzczsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWlsdXJlOwogICAgICAg
ICAgICAgCi0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7Ci0gICAgICAgIHN0dWJKaXQu
cG9wKHNjcmF0Y2hHUFIpOworICAgIGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkg
eworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhzdHVi
Sml0KTsKICAgICAgICAgc3VjY2VzcyA9IHN0dWJKaXQuanVtcCgpOwogCiAgICAgICAgIGZhaWx1
cmVDYXNlcy5saW5rKCZzdHViSml0KTsKLSAgICAgICAgc3R1YkppdC5wb3Aoc2NyYXRjaEdQUik7
CisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKHN0dWJK
aXQpOwogICAgICAgICBmYWlsdXJlID0gc3R1YkppdC5qdW1wKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1bXAoKTsKLSAgICAgICAgICAgIAorICAgIAorICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIG9wZXJhdGlvbkNhbGw7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc3VjY2Vzc0luU2xvd1BhdGg7CisgICAgCisgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CisgICAgICAgIAorICAgICAgICBhbGxvY2F0b3Iu
cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhzdHViSml0KTsKKyAgICAgICAgU2NyYXRj
aEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IGdsb2JhbERhdGEtPnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KGFsbG9jYXRvci5kZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemUoKSk7CisgICAgICAgIGFsbG9jYXRv
ci5wcmVzZXJ2ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1
ZmZlciwgc2NyYXRjaEdQUjEpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0dWJKaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xvdC5j
YWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSKTsKKyNlbHNlCisgICAgICAgIHN0dWJKaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xvdC5jYWNoZWRP
ZmZzZXQoKSksIHZhbHVlVGFnR1BSLCB2YWx1ZUdQUik7CisjZW5kaWYKKyAgICAgICAgb3BlcmF0
aW9uQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVVzZWRS
ZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZlcihzdHViSml0LCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNo
R1BSMSk7CisgICAgICAgIHN1Y2Nlc3NJblNsb3dQYXRoID0gc3R1YkppdC5qdW1wKCk7CisgICAg
fQorICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZzdHViSml0
LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKSk7Ci0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKQorICAgIGlm
IChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwogICAgIGVsc2UKICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhmYWlsdXJlQ2FzZXMsIGZhaWx1cmVMYWJlbCk7Ci0gICAgCi0gICAgc3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAotICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAg
KCJERkcgUHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBv
aW50ICVwIiwKLSAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgaWYgKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25S
ZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dCk7CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
c3VjY2Vzc0luU2xvd1BhdGgsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpKTsKKyAgICB9CisgICAgCisg
ICAgc3R1YlJvdXRpbmUgPQorICAgICAgICBjcmVhdGVKSVRTdHViUm91dGluZSgKKyAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUoCisgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAg
ICAgICAgICAgKCJERkcgUHV0QnlJZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENvZGVCbG9jayAlcCwg
cmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpLAorICAgICAgICAgICAgKmdsb2JhbERhdGEsCisgICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAg
ICAgICAgICAgc3RydWN0dXJlKTsKIH0KIAogc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgUHV0S2luZCBwdXRLaW5kKQpAQCAtODI5LDggKzk0NCwxMSBAQCBzdGF0aWMgYm9vbCB0cnlD
YWNoZVB1dEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIC8vIHNraXAgb3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEg
cmVhbGxvYwotICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAgICAvLyBTa2lw
IG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIHJlYWxsb2MsIGlmIHdlIGRvbid0
IGhhdmUKKyAgICAgICAgICAgIC8vIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSBpdCBoYXBwZW4u
CisgICAgICAgICAgICBpZiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPCA2CisgICAgICAg
ICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKQorICAgICAgICAgICAgICAgICYmIG9sZFN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VD
ZWxsKTsKQEAgLTg5Miw4ICsxMDEwLDExIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkUHV0QnlJZExp
c3QoRXhlY1N0YXQKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
Ly8gc2tpcCBvcHRpbWl6aW5nIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSByZWFsbG9jCi0gICAg
ICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIC8vIFNraXAgb3B0aW1pemluZyB0
aGUgY2FzZSB3aGVyZSB3ZSBuZWVkIGEgcmVhbGxvYywgaWYgd2UgZG9uJ3QgaGF2ZQorICAgICAg
ICAgICAgLy8gZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIGl0IGhhcHBlbi4KKyAgICAgICAgICAg
IGlmIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA8IDYKKyAgICAgICAgICAgICAgICAmJiBv
bGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpCisgICAgICAgICAgICAgICAgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3JfaAorI2RlZmluZSBERkdTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3JfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisvLyBUaGlz
IGNsYXNzIHByb3ZpZGVzIGEgbG93LWxldmVsIHJlZ2lzdGVyIGFsbG9jYXRvciBmb3IgdXNlIGlu
IHN0dWJzLgorCitjbGFzcyBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgeworcHVibGljOgorICAg
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcihjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cykKKyAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykKKyAgICAgICAgLCBt
X2RpZFJldXNlUmVnaXN0ZXJzKGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGxvY2soVCByZWcpIHsgbV9sb2NrZWRSZWdpc3RlcnMu
c2V0KHJlZyk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KKyAgICB0
eXBlbmFtZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIGFsbG9jYXRlU2NyYXRjaCgpCisgICAgewor
ICAgICAgICAvLyBGaXJzdCB0cnkgdG8gYWxsb2NhdGUgYSByZWdpc3RlciB0aGF0IGlzIHRvdGFs
bHkgZnJlZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhbmtJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICB0eXBlbmFtZSBCYW5rSW5mbzo6UmVn
aXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICAgICAgaWYg
KCFtX2xvY2tlZFJlZ2lzdGVycy5nZXQocmVnKQorICAgICAgICAgICAgICAgICYmICFtX3VzZWRS
ZWdpc3RlcnMuZ2V0KHJlZykKKyAgICAgICAgICAgICAgICAmJiAhbV9zY3JhdGNoUmVnaXN0ZXJz
LmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAgbV9zY3JhdGNoUmVnaXN0ZXJzLnNldChyZWcp
OworICAgICAgICAgICAgICAgIHJldHVybiByZWc7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIFNpbmNlIHRoYXQgZmFpbGVkLCB0cnkgdG8gYWxsb2NhdGUg
YSByZWdpc3RlciB0aGF0IGlzIG5vdCB5ZXQKKyAgICAgICAgLy8gbG9ja2VkIG9yIHVzZWQgZm9y
IHNjcmF0Y2guCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBCYW5rSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgdHlwZW5hbWUgQmFua0luZm86OlJl
Z2lzdGVyVHlwZSByZWcgPSBCYW5rSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgIGlm
ICghbV9sb2NrZWRSZWdpc3RlcnMuZ2V0KHJlZykgJiYgIW1fc2NyYXRjaFJlZ2lzdGVycy5nZXQo
cmVnKSkgeworICAgICAgICAgICAgICAgIG1fc2NyYXRjaFJlZ2lzdGVycy5zZXQocmVnKTsKKyAg
ICAgICAgICAgICAgICBtX2RpZFJldXNlUmVnaXN0ZXJzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBXZSBmYWlsZWQuCisgICAgICAgIENSQVNIKCk7CisgICAgICAgIC8vIE1ha2Ugc29tZSBz
aWxseSBjb21waWxlcnMgaGFwcHkuCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFt
ZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlPigtMSk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBh
bGxvY2F0ZVNjcmF0Y2hHUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0Y2g8R1BSSW5mbz4oKTsg
fQorICAgIEZQUlJlZyBhbGxvY2F0ZVNjcmF0Y2hGUFIoKSB7IHJldHVybiBhbGxvY2F0ZVNjcmF0
Y2g8RlBSSW5mbz4oKTsgfQorICAgIAorICAgIGJvb2wgZGlkUmV1c2VSZWdpc3RlcnMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlkUmV1c2VSZWdpc3RlcnM7CisgICAgfQorICAg
IAorICAgIHZvaWQgcHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKKyAgICB7CisgICAgICAgIGlmICghbV9kaWRSZXVzZVJlZ2lzdGVycykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9z
Y3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldEZQ
UkJ5SW5kZXgoaSkpIHsKKyAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoOCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSks
IE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMu
Z2V0R1BSQnlJbmRleChpKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAg
ICAgICAgICAgICAgICBqaXQucHVzaChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICB2b2lkIHJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmco
TWFjcm9Bc3NlbWJsZXImIGppdCkKKyAgICB7CisgICAgICAgIGlmICghbV9kaWRSZXVzZVJlZ2lz
dGVycykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBp
ZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJz
LmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LnBvcChHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgaWYgKG1fc2NyYXRjaFJl
Z2lzdGVycy5nZXRGUFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4
KGkpKSB7CisgICAgICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgICAg
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoOCksIE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkgY29u
c3QgeyByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkgKiBzaXpl
b2YoSlNWYWx1ZSk7IH0KKyAgICAKKyAgICB2b2lkIHByZXNlcnZlVXNlZFJlZ2lzdGVyc1RvU2Ny
YXRjaEJ1ZmZlcihNYWNyb0Fzc2VtYmxlciYgaml0LCBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVm
ZmVyLCBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV91c2VkUmVnaXN0ZXJz
LmdldEdQUkJ5SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIHNjcmF0Y2hCdWZmZXItPm1fYnVmZmVyICsgKGNvdW50KyspKTsKKyAg
ICAgICAgICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgIW1fbG9ja2VkUmVn
aXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgIW1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUlu
ZGV4KGkpKQorICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVy
KGkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IEludmFsaWRHUFJS
ZWcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
czsgaS0tOykgeworICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4
KGkpKSB7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc2NyYXRjaEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwg
c2NyYXRjaEdQUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNv
dW50ICogc2l6ZW9mKEpTVmFsdWUpID09IGRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZSgpKTsKKyAg
ICAgICAgCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZz
Y3JhdGNoQnVmZmVyLT5tX2FjdGl2ZUxlbmd0aCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb3VudCAqIHNpemVvZihKU1ZhbHVlKSkpLCBzY3JhdGNoR1BSKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCByZXN0b3JlVXNlZFJlZ2lzdGVyc0Zyb21TY3JhdGNoQnVmZmVyKE1hY3JvQXNzZW1i
bGVyJiBqaXQsIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIEdQUlJlZyBzY3JhdGNoR1BS
ID0gSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIGlmIChzY3JhdGNoR1BSID09IEludmFs
aWRHUFJSZWcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgYSBzY3JhdGNoIHJlZ2lzdGVyLgorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGkt
LTspIHsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRl
eChpKSB8fCBtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86
OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgIAorICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
c2NyYXRjaEJ1ZmZlci0+bV9hY3RpdmVMZW5ndGgpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0
LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSKTsK
KworICAgICAgICAvLyBSZXN0b3JlIGRvdWJsZSByZWdpc3RlcnMgZmlyc3QuCisgICAgICAgIHVu
c2lnbmVkIGNvdW50ID0gbV91c2VkUmVnaXN0ZXJzLm51bWJlck9mU2V0R1BScygpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewor
ICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpKSB7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aEJ1ZmZlci0+bV9idWZmZXIgKyAoY291bnQrKykpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
ICAgICBqaXQubG9hZERvdWJsZShzY3JhdGNoR1BSLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY291bnQgPSAwOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0t
OykgeworICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpKQor
ICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKHNjcmF0Y2hCdWZmZXItPm1fYnVmZmVyICsgKGNv
dW50KyspLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgIFJlZ2lzdGVy
U2V0IG1fbG9ja2VkUmVnaXN0ZXJzOworICAgIFJlZ2lzdGVyU2V0IG1fc2NyYXRjaFJlZ2lzdGVy
czsKKyAgICBib29sIG1fZGlkUmV1c2VSZWdpc3RlcnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIyNjc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlVUludDMKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwg
cmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VU
YWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJh
c2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgSklUQ29tcGlsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6OlBhdGNo
YWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CkBA
IC01NTMsNyArNTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2Rl
TwogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVD
aGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKICAgICAgICAgICAgIHRhZ0xvYWRXaXRoUGF0Y2gs
IHBheWxvYWRMb2FkV2l0aFBhdGNoLCBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLAogICAgICAg
ICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlUGF5bG9hZEdQUiksIHNhZmVDYXN0PGludDhfdD4o
cmVzdWx0VGFnR1BSKSwKLSAgICAgICAgICAgIHNhZmVDYXN0PGludDhfdD4ocmVzdWx0UGF5bG9h
ZEdQUiksIHNhZmVDYXN0PGludDhfdD4oc2NyYXRjaEdQUiksCisgICAgICAgICAgICBzYWZlQ2Fz
dDxpbnQ4X3Q+KHJlc3VsdFBheWxvYWRHUFIpLCB1c2VkUmVnaXN0ZXJzKCksCiAgICAgICAgICAg
ICBzcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwgPyBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0
ZXJzSW5Vc2UgOiBQcm9wZXJ0eUFjY2Vzc1JlY29yZDo6UmVnaXN0ZXJzRmx1c2hlZCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoLnJlbGVhc2UoKSk7CiB9CkBAIC01OTUsNiAr
NTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU8KICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3B0aW1pemVkQ2FsbCwgTm9SZXN1bHQsIHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIsCiAgICAgICAgICAgICBiYXNlUGF5bG9hZEdQUiwgaWRlbnRp
ZmllcihpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfQorICAgIFJlZ2lzdGVyU2V0IGN1cnJlbnRs
eVVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzKCk7CisgICAgY3VycmVudGx5VXNlZFJlZ2lz
dGVycy5jbGVhcihzY3JhdGNoR1BSKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVy
cy5nZXQoYmFzZVBheWxvYWRHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVy
cy5nZXQodmFsdWVUYWdHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5n
ZXQodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgbV9qaXQuYWRkUHJvcGVydHlBY2Nlc3MoCiAgICAg
ICAgIFByb3BlcnR5QWNjZXNzUmVjb3JkKAogICAgICAgICAgICAgY29kZU9yaWdpbiwgc3RydWN0
dXJlVG9Db21wYXJlLCBzdHJ1Y3R1cmVDaGVjaywgcHJvcGVydHlTdG9yYWdlTG9hZCwKQEAgLTYw
Miw3ICs2MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsQ29tcGFjdChwYXlsb2FkU3RvcmVXaXRo
UGF0Y2gubGFiZWwoKSksCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9uZUxhYmVsLCBz
YWZlQ2FzdDxpbnQ4X3Q+KGJhc2VQYXlsb2FkR1BSKSwKICAgICAgICAgICAgIHNhZmVDYXN0PGlu
dDhfdD4odmFsdWVUYWdHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlUGF5bG9hZEdQUiksCi0g
ICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpKSk7CisgICAgICAgICAgICB1
c2VkUmVnaXN0ZXJzKCkpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aC5yZWxl
YXNlKCkpOwogfQogCkBAIC0zMjkwLDE2ICszMjk1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3By
KCk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKHJlc3VsdFRhZ0dQUiA9PSBiYXNlR1BSKQotICAgICAgICAgICAgICAgIHNjcmF0
Y2hHUFIgPSByZXN1bHRQYXlsb2FkR1BSOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNjcmF0Y2hHUFIgPSByZXN1bHRUYWdHUFI7Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLmNvZGVPcmlnaW4sIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiwgc2NyYXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOworICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIEludmFsaWRHUFJSZWcsIGJh
c2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS5pZGVudGlmaWVyTnVt
YmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMzMTMsMTggKzMzMTIsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcg
YmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLQot
ICAgICAgICBpZiAocmVzdWx0VGFnR1BSID09IGJhc2VQYXlsb2FkR1BSKQotICAgICAgICAgICAg
c2NyYXRjaEdQUiA9IHJlc3VsdFBheWxvYWRHUFI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHNjcmF0Y2hHUFIgPSByZXN1bHRUYWdHUFI7CiAgICAgICAgIAogICAgICAgICBiYXNlLnVzZSgp
OwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5j
b2RlT3JpZ2luLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlVGFnR1BSLCBi
YXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLmlkZW50
aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzM0NiwxMyArMzMzOSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogCi0gICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgcmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgYmFzZS51
c2UoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIEludmFs
aWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgc2NyYXRj
aEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRT
cGlsbCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgSW52YWxp
ZEdQUlJlZywgYmFzZUdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLmlk
ZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzY3LDE1ICszMzU4LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9
IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1
bHRQYXlsb2FkLmdwcigpOwogCi0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2VsZWN0U2Ny
YXRjaEdQUihiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKTsKLSAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50
aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLmNvZGVPcmlnaW4sIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBE
b250U3BpbGwpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIyNjc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlVUludDMKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNo
R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAg
ICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklU
Q29tcGlsZXI6OlBhdGNoYWJsZUp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5wYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21w
YXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigt
MSkpKTsKQEAgLTUyMCwxMyArNTIwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZChDb2RlTwogICAgICAgICBQcm9wZXJ0eUFjY2Vzc1JlY29yZCgKICAgICAgICAgICAgIGNv
ZGVPcmlnaW4sIHN0cnVjdHVyZVRvQ29tcGFyZSwgc3RydWN0dXJlQ2hlY2ssIHByb3BlcnR5U3Rv
cmFnZUxvYWQsIGxvYWRXaXRoUGF0Y2gsCiAgICAgICAgICAgICBzbG93UGF0aC5nZXQoKSwgZG9u
ZUxhYmVsLCBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzYWZlQ2FzdDxpbnQ4X3Q+KHJlc3Vs
dEdQUiksCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KHNjcmF0Y2hHUFIpLAorICAgICAg
ICAgICAgdXNlZFJlZ2lzdGVycygpLAogICAgICAgICAgICAgc3BpbGxNb2RlID09IE5lZWRUb1Nw
aWxsID8gUHJvcGVydHlBY2Nlc3NSZWNvcmQ6OlJlZ2lzdGVyc0luVXNlIDogUHJvcGVydHlBY2Nl
c3NSZWNvcmQ6OlJlZ2lzdGVyc0ZsdXNoZWQpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aC5yZWxlYXNlKCkpOwotCi0KLSAgICBpZiAoc2NyYXRjaEdQUiAhPSByZXN1bHRHUFIg
JiYgc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnICYmIHNwaWxsTW9kZSA9PSBOZWVkVG9TcGls
bCkKLSAgICAgICAgdW5sb2NrKHNjcmF0Y2hHUFIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB2YWx1ZUdQUiwgRWRnZSB2YWx1ZVVzZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQgcHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQpCkBAIC01NjgsMTEgKzU2NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRQdXRCeUlkKENvZGVPCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wdGltaXpl
ZENhbGwsIE5vUmVzdWx0LCB2YWx1ZUdQUiwgYmFzZUdQUiwKICAgICAgICAgICAgIGlkZW50aWZp
ZXIoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KKyAgICBSZWdpc3RlclNldCBjdXJyZW50bHlV
c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lzdGVycygpOworICAgIGN1cnJlbnRseVVzZWRSZWdpc3Rl
cnMuY2xlYXIoc2NyYXRjaEdQUik7CisgICAgQVNTRVJUKGN1cnJlbnRseVVzZWRSZWdpc3RlcnMu
Z2V0KGJhc2VHUFIpKTsKKyAgICBBU1NFUlQoY3VycmVudGx5VXNlZFJlZ2lzdGVycy5nZXQodmFs
dWVHUFIpKTsKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcygKICAgICAgICAgUHJvcGVydHlB
Y2Nlc3NSZWNvcmQoCiAgICAgICAgICAgICBjb2RlT3JpZ2luLCBzdHJ1Y3R1cmVUb0NvbXBhcmUs
IHN0cnVjdHVyZUNoZWNrLCBwcm9wZXJ0eVN0b3JhZ2VMb2FkLAogICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkRhdGFMYWJlbENvbXBhY3Qoc3RvcmVXaXRoUGF0Y2gubGFiZWwoKSksIHNsb3dQYXRo
LmdldCgpLCBkb25lTGFiZWwsCi0gICAgICAgICAgICBzYWZlQ2FzdDxpbnQ4X3Q+KGJhc2VHUFIp
LCBzYWZlQ2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc2FmZUNhc3Q8aW50OF90PihzY3JhdGNoR1BS
KSkpOworICAgICAgICAgICAgc2FmZUNhc3Q8aW50OF90PihiYXNlR1BSKSwgc2FmZUNhc3Q8aW50
OF90Pih2YWx1ZUdQUiksIGN1cnJlbnRseVVzZWRSZWdpc3RlcnMpKTsKICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aC5yZWxlYXNlKCkpOwogfQogCkBAIC0zMzE5LDE2ICszMzE5LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAg
IAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVzdWx0R1BSID09IGJhc2VH
UFIpCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHRyeUFsbG9jYXRlKCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdEdQUjsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgc2Ny
YXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVy
TnVtYmVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTMzMzksMTggKzMzMzMsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHRH
UFIgPT0gYmFzZUdQUikKLSAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSB0cnlBbGxvY2F0ZSgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAgICAg
ICAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBi
YXNlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaEdQ
Uiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLmlkZW50aWZpZXJO
dW1iZXIoKSwgbm90Q2VsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIApAQCAtMzM3MSwxMyArMzM1OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICAgICAg
CiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUuY29kZU9yaWdpbiwgYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50
aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICAgICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5v
ZGUuaWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21w
aWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTMzODksMTQgKzMzNzUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAg
IAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQ
dHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cik7CiAgICAgICAgIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUuY29kZU9yaWdpbiwgYmFz
ZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90
Q2VsbCwgRG9udFNwaWxsKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4s
IGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERv
bnRTcGlsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9j
b21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMTIyNjc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDIyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHVzZShub2RlVXNlLmluZGV4KCkpOwogICAgIH0KKyAgICAKKyAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGkt
LTspIHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwor
ICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0luVXNlKGdwcikpCisgICAgICAgICAgICAgICAgcmVz
dWx0LnNldChncHIpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEZQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgICAgICBGUFJSZWcgZnByID0g
RlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgIGlmIChtX2ZwcnMuaXNJblVzZShm
cHIpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoZnByKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIG1hcmtDZWxsQ2FyZChN
YWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJS
ZWcgc2NyYXRjaEdQUjIpOwogICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihNYWNyb0Fzc2Vt
YmxlciYsIEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRj
aEdQUjIsIFdyaXRlQmFycmllclVzZUtpbmQpOwpAQCAtOTQyLDEwICs5NTgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVVSW50MzJUb051bWJlcihOb2RlJik7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29t
cGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZv
aWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3Vs
dEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVk
VG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
LCBHUFJSZWcgdmFsdWUsIEVkZ2UgdmFsdWVVc2UsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCks
IFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9h
ZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0g
SklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwog
ICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIs
IEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiwgRWRnZSB2YWx1ZVVz
ZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxsb2Nh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxs
b2NhdG9yLmgJKHJldmlzaW9uIDEyMjY3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcGllZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb3BpZWRBbGxvY2F0b3IgewotICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiBwdWJsaWM6CiAgICAgQ29waWVkQWxsb2NhdG9yKCk7CiAgICAgCisgICAgYm9vbCBm
YXN0UGF0aFNob3VsZFN1Y2NlZWQoc2l6ZV90IGJ5dGVzKSBjb25zdDsKICAgICBDaGVja2VkQm9v
bGVhbiB0cnlBbGxvY2F0ZShzaXplX3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpOwogICAgIENoZWNr
ZWRCb29sZWFuIHRyeVJlYWxsb2NhdGUodm9pZCAqb2xkUHRyLCBzaXplX3Qgb2xkQnl0ZXMsIHNp
emVfdCBuZXdCeXRlcyk7CiAgICAgdm9pZCogZm9yY2VBbGxvY2F0ZShzaXplX3QgYnl0ZXMpOwpA
QCAtNDYsOSArNDYsMTIgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0
dXJuICEhbV9jdXJyZW50QmxvY2s7IH0KIAotcHJpdmF0ZToKICAgICBDb3BpZWRCbG9jayogY3Vy
cmVudEJsb2NrKCkgeyByZXR1cm4gbV9jdXJyZW50QmxvY2s7IH0KIAorICAgIC8vIFllcywgdGhl
c2UgYXJlIHB1YmxpYy4gTm8sIHRoYXQgZG9lc24ndCBtZWFuIHlvdSBjYW4gcGxheSB3aXRoIHRo
ZW0uCisgICAgLy8gSWYgSSBoYWQgbWFkZSB0aGVtIHByaXZhdGUgdGhlbiBJJ2QgaGF2ZSB0byBs
aXN0IG9mZiBhbGwgb2YgdGhlIEpJVAorICAgIC8vIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB0aGF0
IGFyZSBlbnRpdGxlZCB0byBtb2RpZnkgdGhlc2UgZGlyZWN0bHksIGFuZAorICAgIC8vIHRoYXQg
d291bGQgaGF2ZSBiZWVuIGdyb3NzLgogICAgIHNpemVfdCBtX2N1cnJlbnRSZW1haW5pbmc7CiAg
ICAgY2hhciogbV9jdXJyZW50UGF5bG9hZEVuZDsKICAgICBDb3BpZWRCbG9jayogbV9jdXJyZW50
QmxvY2s7IApAQCAtNjEsNiArNjQsMTMgQEAgaW5saW5lIENvcGllZEFsbG9jYXRvcjo6Q29waWVk
QWxsb2NhdG9yKAogewogfQogCitpbmxpbmUgYm9vbCBDb3BpZWRBbGxvY2F0b3I6OmZhc3RQYXRo
U2hvdWxkU3VjY2VlZChzaXplX3QgYnl0ZXMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJ5dGVB
bGlnbmVkKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGJ5dGVzKSkpOworICAgIAorICAgIHJldHVy
biBieXRlcyA8PSBtX2N1cnJlbnRSZW1haW5pbmc7Cit9CisKIGlubGluZSBDaGVja2VkQm9vbGVh
biBDb3BpZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlKHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0
cikKIHsKICAgICBBU1NFUlQoaXM4Qnl0ZUFsaWduZWQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Ynl0ZXMpKSk7Cg==
</data>
<flag name="review"
          id="161302"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>