<?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>105400</bug_id>
          
          <creation_ts>2012-12-19 01:03:21 -0800</creation_ts>
          <short_desc>DFG Arrayify slow path should be out-of-line</short_desc>
          <delta_ts>2012-12-21 14:35:51 -0800</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>
          <dependson>105401</dependson>
          <blocked>105624</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794428</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 01:03:21 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794429</commentid>
    <comment_count>1</comment_count>
      <attachid>180114</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 01:04:17 -0800</bug_when>
    <thetext>Created attachment 180114
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795875</commentid>
    <comment_count>2</comment_count>
      <attachid>180425</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-20 15:43:39 -0800</bug_when>
    <thetext>Created attachment 180425
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795881</commentid>
    <comment_count>3</comment_count>
      <attachid>180425</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 15:49:19 -0800</bug_when>
    <thetext>Comment on attachment 180425
the patch

Attachment 180425 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15456183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795885</commentid>
    <comment_count>4</comment_count>
      <attachid>180425</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 15:50:54 -0800</bug_when>
    <thetext>Comment on attachment 180425
the patch

Attachment 180425 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15461112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795886</commentid>
    <comment_count>5</comment_count>
      <attachid>180425</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-20 15:51:04 -0800</bug_when>
    <thetext>Comment on attachment 180425
the patch

Attachment 180425 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15464100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795891</commentid>
    <comment_count>6</comment_count>
      <attachid>180425</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-12-20 15:54:10 -0800</bug_when>
    <thetext>Comment on attachment 180425
the patch

r+ with green bots &amp; no testapi change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796213</commentid>
    <comment_count>7</comment_count>
      <attachid>180496</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-21 02:20:22 -0800</bug_when>
    <thetext>Created attachment 180496
patch for landing

Will wait to see if the build systems are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796215</commentid>
    <comment_count>8</comment_count>
      <attachid>180497</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-21 02:21:38 -0800</bug_when>
    <thetext>Created attachment 180497
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796224</commentid>
    <comment_count>9</comment_count>
      <attachid>180497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 02:51:15 -0800</bug_when>
    <thetext>Comment on attachment 180497
patch for landing

Attachment 180497 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15457365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796467</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-21 14:35:51 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/138399</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180114</attachid>
            <date>2012-12-19 01:04:17 -0800</date>
            <delta_ts>2012-12-20 15:43:39 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>arrayify.patch</filename>
            <type>text/plain</type>
            <size>26505</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MTMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEFycmF5aWZ5IHNsb3cgcGF0aCBzaG91bGQgYmUgb3V0LW9mLWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTQwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpERkc6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I6OkFycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I6Omdl
bmVyYXRlSW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6CisgICAgICAgICogZGZn
L0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjphcHBlbmRFeGl0SW5mbyk6CisgICAgICAgIChKSVRDb21waWxlcik6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpmaWxsKToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpvcGVyYXRvciEpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0aW9uQ2hlY2spOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKwogMjAxMi0x
Mi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3hpZXMg
c2hvdWxkIHNldCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTM4MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsOCBAQAogCQkw
RkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyog
T3B0aW9ucy5jcHAgKi87IH07CiAJCTBGRUIzRUNEMTYyMzdGNEQwMEFCNjdBRCAvKiBUeXBlZEFy
cmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQjNFQ0IxNjIzN0Y0NzAwQUI2N0FEIC8qIFR5cGVkQXJyYXlEZXNjcmlwdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQjNF
Q0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAv
KiBNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAv
KiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLzsgfTsKKwkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUz
IC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEZGNDI3MzExNThFQkQ1NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3MkYx
NThFQkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBV
RGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZGNDI3MzAxNThFQkQ0NDAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxl
ci5jcHAgKi87IH07CiAJCTBGRjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2Rl
LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjcz
NDE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jICovOyB9OwpAQCAtMTA5NSw2ICsx
MDk3LDggQEAKIAkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkVCM0VDQjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheURlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2
N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFRkM5QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdEp1bXBQbGFj
ZWhvbGRlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0SnVt
cFBsYWNlaG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzJGMTU4
RUJENDQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzMwMTU4RUJENDQwMDRDQjlG
RiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gVURpczg2RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9VRGlz
ODZEaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjcz
NDE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmM7IG5hbWUgPSB1ZGlzODZfZGVjb2RlLmM7IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2
L3VkaXM4Nl9kZWNvZGUuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NTgsNyAr
MjQ2Miw2IEBACiAJCTg2RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1OTg3RjJDMTY3RkU4NEIwMDND
MkY4RCAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8sCiAJCQkJMEY2MjAxNkQxNDNG
Q0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovLAogCQkJCTBGNjIwMTZFMTQz
RkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmggKi8sCiAJCQkJMEY2MjAxNkYxNDNG
Q0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCAqLywKQEAgLTI1MTksMTAgKzI1MjIs
MTMgQEAKIAkJCQkwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCAqLywK
IAkJCQkwRkMwOTc4RTE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgKi8sCiAJCQkJ
MEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLywKKwkJCQk2NTk4N0Yy
QzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovLAogCQkJ
CTBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovLAog
CQkJCTBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLywK
IAkJCQkwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQu
Y3BwICovLAogCQkJCTBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGls
ZXI2NC5jcHAgKi8sCisJCQkJMEZFRkM5QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIuY3BwICovLAorCQkJCTBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi8sCiAJCQkJMEZGRkM5NEYxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR1BoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHUGhhc2UuaCAqLywKIAkJCQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwICovLApAQCAtMzE4MSw2ICszMTg3LDcgQEAKIAkJCQkw
RjEzOTEyQTE2NzcxQzM2MDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9m
aWxlZEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMEM0QUMxNjgxMDMwMjAwMTcw
MTFEIC8qIEpTU2NyaXB0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFRkM5QUIx
NjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzc5OSw2ICszODA2LDcgQEAKIAkJCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcg
LyogUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5
MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3QzBDNEFEMTY4MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvcl9oCisjZGVmaW5lIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKworI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgor
I2luY2x1ZGUgIkRGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJERkdTbG93
UGF0aEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Ns
YXNzIEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4geworcHVibGljOgorICAgIEFycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZSYgbm9kZSwgR1BSUmVnIGJhc2VHUFIs
CisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiwgR1BSUmVnIHRlbXBHUFIsIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIpCisgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQorICAgICAgICAsIG1fb3Aobm9kZS5vcCgpKQorICAg
ICAgICAsIG1fYXJyYXlNb2RlKG5vZGUuYXJyYXlNb2RlKCkpCisgICAgICAgICwgbV9zdHJ1Y3R1
cmUobm9kZS5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLnN0cnVjdHVyZSgpIDog
MCkKKyAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgLCBtX3Byb3BlcnR5R1BS
KHByb3BlcnR5R1BSKQorICAgICAgICAsIG1fdGVtcEdQUih0ZW1wR1BSKQorICAgICAgICAsIG1f
c3RydWN0dXJlR1BSKHN0cnVjdHVyZUdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09
IEFycmF5aWZ5IHx8IG1fb3AgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSk7CisgICAgICAgIAorICAg
ICAgICBqaXQtPnNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9wbGFucywgSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vcCAhPSBBcnJheWlmeVRvU3Ry
dWN0dXJlKQorICAgICAgICAgICAgbV9pbnRlcmNlcHRzSnVtcCA9IGppdC0+c3BlY3VsYXRpb25D
aGVjayhCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG1fYmFzZUdQ
UiksIE5vTm9kZSk7CisgICAgICAgIGlmIChtX3Byb3BlcnR5R1BSICE9IEludmFsaWRHUFJSZWcp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgbV9iYWRQ
cm9wZXJ0eUp1bXAgPSBqaXQtPnNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcCA9IGppdC0+c3BlY3VsYXRpb25DaGVjayhCYWRJ
bmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG1fYmFzZUdQUiksIE5vTm9k
ZSk7CisgICAgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChT
cGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHsKKyAgICAgICAgbGlua0Zyb20oaml0KTsKKyAgICAg
ICAgCisgICAgICAgIEFTU0VSVChtX29wID09IEFycmF5aWZ5IHx8IG1fb3AgPT0gQXJyYXlpZnlU
b1N0cnVjdHVyZSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeSkgewor
ICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlR1BSICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBtX2ludGVyY2VwdHNKdW1wLmZpbGwoCisgICAgICAgICAg
ICAgICAgaml0LT5tX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybykpKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fcHJvcGVydHlHUFIgIT0gSW52YWxp
ZEdQUlJlZykgeworICAgICAgICAgICAgc3dpdGNoIChtX2FycmF5TW9kZS50eXBlKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAgICAg
ICBtX2JhZFByb3BlcnR5SnVtcC5maWxsKGppdC0+bV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5R1BSLAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1JTl9TUEFSU0Vf
QVJSQVlfSU5ERVgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGppdC0+c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7CisgICAgICAg
IHN3aXRjaCAobV9hcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgIGNhc2UgQXJyYXk6OkludDMy
OgorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUludDMyLCBt
X3RlbXBHUFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVu
c3VyZURvdWJsZSwgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICBpZiAobV9hcnJheU1v
ZGUuY29udmVyc2lvbigpID09IEFycmF5OjpSYWdlQ29udmVydCkKKyAgICAgICAgICAgICAgICBq
aXQtPmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmFnZUVuc3VyZUNvbnRpZ3VvdXMsIG1fdGVtcEdQ
UiwgbV9iYXNlR1BSKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqaXQtPmNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQ29udGlndW91cywgbV90ZW1wR1BSLCBtX2Jhc2VH
UFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFn
ZToKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICAgICAgICAg
IGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UsIG1fdGVtcEdQ
UiwgbV9iYXNlR1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgaml0
LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX3N0cnVjdHVyZSk7CisgICAgICAgICAgICBtX2JhZEluZGV4aW5nVHlwZS5maWxsKAorICAg
ICAgICAgICAgICAgIGppdC0+bV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAor
ICAgICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZSkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gQWxhcywgd2UgbmVlZCB0byByZWxvYWQgdGhlIHN0cnVjdHVyZSBiZWNhdXNl
IHNpbGVudCBzcGlsbGluZyBkb2VzIG5vdCBzYXZlCisgICAgICAgICAgICAvLyB0ZW1wb3Jhcmll
cy4gTm9yIHdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28uIEVpdGhlciB3YXkgd2Un
cmUgdGFsa2luZworICAgICAgICAgICAgLy8gYWJvdXQgYSBsb2FkLgorICAgICAgICAgICAgaml0
LT5tX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhhdCB3ZSBoYXZl
IHRoZSBraW5kIG9mIGFycmF5IHN0b3JhZ2UgdGhhdCB3ZSB3YW50ZWQgdG8gZ2V0LgorICAgICAg
ICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ss
IHdoaWNoIHdpbGwgcmVzdWx0IGluIHRoZSAKKyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIG9wZXJh
dGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYXJyYXlpZmljYXRpb24gYmVpbmcgcmVleGVjdXRl
ZC4KKyAgICAgICAgICAgIC8vIFRoYXQncyBmaW5lLCBzaW5jZSBhcnJheWlmaWNhdGlvbiBpcyBu
b3QgdXNlci12aXNpYmxlLgorICAgICAgICAgICAgaml0LT5tX2ppdC5sb2FkOCgKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3N0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BSKTsKKyAgICAgICAgICAgIGp1
bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUoc3RydWN0dXJlR1BSLCBub2RlLmFycmF5TW9kZSgp
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGp1bXBUbyhqaXQpOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgTm9kZVR5cGUgbV9vcDsKKyAgICBBcnJheU1vZGUgbV9hcnJheU1v
ZGU7CisgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOwor
ICAgIEdQUlJlZyBtX3Byb3BlcnR5R1BSOworICAgIEdQUlJlZyBtX3RlbXBHUFI7CisgICAgR1BS
UmVnIG1fc3RydWN0dXJlR1BSOworICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9pbnRlcmNl
cHRzSnVtcDsKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIG1fYmFkUHJvcGVydHlKdW1wOwor
ICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9iYWRJbmRleGluZ1R5cGVKdW1wOworICAgIFZl
Y3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEzODEwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0
cygpOyArK2kpIHsKICAgICAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3Ny
RXhpdChpKTsKICAgICAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICBtX2V4aXRT
aXRlTGFiZWxzLmFwcGVuZChtX2V4aXRDb21waWxhdGlvbkluZm9baV0uZmFpbHVyZUp1bXAoKS5s
YWJlbCgpKTsKKyAgICAgICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChtX2V4aXRD
b21waWxhdGlvbkluZm9baV0ubV9mYWlsdXJlSnVtcC5sYWJlbCgpKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBtX2V4aXRTaXRlTGFiZWxzLmFwcGVuZChjb2RlQmxvY2soKS0+
d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zb3VyY2VMYWJlbCgpKTsKICAgICAg
ICAgfQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZP
U1JFeGl0cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5v
c3JFeGl0KGkpOwotICAgICAgICBKdW1wJiBmYWlsdXJlSnVtcCA9IG1fZXhpdENvbXBpbGF0aW9u
SW5mb1tpXS5mYWlsdXJlSnVtcCgpOworICAgICAgICBKdW1wJiBmYWlsdXJlSnVtcCA9IG1fZXhp
dENvbXBpbGF0aW9uSW5mb1tpXS5tX2ZhaWx1cmVKdW1wOwogICAgICAgICBBU1NFUlQoIWZhaWx1
cmVKdW1wLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CiAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2lu
dEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
ICAgIGZhaWx1cmVKdW1wLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMzgxMDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUx
LDcgQEAgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVENvZGVHZW5lcmF0b3I7CiBjbGFzcyBO
b2RlVG9SZWdpc3Rlck1hcDsKK2NsYXNzIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI7CiBjbGFzcyBT
bG93UGF0aEdlbmVyYXRvcjsKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogY2xhc3MgU3BlY3VsYXRp
b25SZWNvdmVyeTsKQEAgLTM0NCw3ICszNDUsMTIgQEAgcHVibGljOgogICAgIFNwZWN1bGF0ZWRU
eXBlIGdldFNwZWN1bGF0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIGdldFNwZWN1
bGF0aW9uKGdyYXBoKClbbm9kZUluZGV4XSk7IH0KICAgICBTcGVjdWxhdGVkVHlwZSBnZXRTcGVj
dWxhdGlvbihFZGdlIG5vZGVVc2UpIHsgcmV0dXJuIGdldFNwZWN1bGF0aW9uKG5vZGVVc2UuaW5k
ZXgoKSk7IH0KIAotICAgIHZvaWQgYXBwZW5kRXhpdEp1bXAoTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
anVtcFRvRmFpbCkgeyBtX2V4aXRDb21waWxhdGlvbkluZm8uYXBwZW5kKE9TUkV4aXRDb21waWxh
dGlvbkluZm8oanVtcFRvRmFpbCkpOyB9CisgICAgdm9pZCBhcHBlbmRFeGl0SW5mbyhNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSkKKyAgICB7
CisgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8gaW5mbzsKKyAgICAgICAgaW5mby5tX2Zh
aWx1cmVKdW1wID0ganVtcFRvRmFpbDsKKyAgICAgICAgbV9leGl0Q29tcGlsYXRpb25JbmZvLmFw
cGVuZChpbmZvKTsKKyAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQqIGFk
ZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC00MjMsNiArNDI5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgT1NSRXhp
dEp1bXBQbGFjZWhvbGRlcjsKKyAgICAKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB0
byBjb21waWxlLgogICAgIHZvaWQgY29tcGlsZUVudHJ5KCk7CiAgICAgdm9pZCBjb21waWxlQm9k
eShTcGVjdWxhdGl2ZUpJVCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHJldmlzaW9uIDEzODEwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLWNsYXNzIE9TUkV4aXRDb21waWxhdGlvbkluZm8gewotcHVibGljOgotICAg
IE9TUkV4aXRDb21waWxhdGlvbkluZm8oTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFpbHVyZUp1bXAp
Ci0gICAgICAgIDogbV9mYWlsdXJlSnVtcChmYWlsdXJlSnVtcCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWx1cmVKdW1wKCkgeyByZXR1cm4gbV9mYWlsdXJl
SnVtcDsgfQotCi1wcml2YXRlOgorc3RydWN0IE9TUkV4aXRDb21waWxhdGlvbkluZm8gewogICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fZmFpbHVyZUp1bXA7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRKdW1wUGxhY2Vob2xkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgiCisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0pJVENvbXBpbGVyLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpmaWxs
KEpJVENvbXBpbGVyJiBqaXQsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBqdW1wKQorewor
ICAgIGlmICghKnRoaXMpCisgICAgICAgIHJldHVybjsKKyAgICBqaXQubV9leGl0Q29tcGlsYXRp
b25JbmZvW21faW5kZXhdLm1fZmFpbHVyZUp1bXAgPSBqdW1wOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXJfaAorI2RlZmluZSBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyX2gKKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNs
dWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEpJVENvbXBpbGVyOworY2xhc3MgU3Bl
Y3VsYXRpdmVKSVQ7CisKK2NsYXNzIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgeworcHVibGljOgor
ICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoKQorICAgICAgICA6IG1faW5kZXgoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNwZWN1bGF0aXZlSklUOworICAgIAorICAgIE9TUkV4aXRKdW1wUGxh
Y2Vob2xkZXIodW5zaWduZWQgaW5kZXgpCisgICAgICAgIDogbV9pbmRleChpbmRleCkKKyAgICB7
CisgICAgfQorCitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQorICAgIAor
ICAgIHZvaWQgZmlsbChKSVRDb21waWxlciYsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJik7
CisgICAgCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1faW5kZXg7Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8v
IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXJfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTM4MTA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlv
bkNoZWNrKEV4CiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm47CiAgICAg
QVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1l
bnRUeXBlcyk7Ci0gICAgbV9qaXQuYXBwZW5kRXhpdEp1bXAoanVtcFRvRmFpbCk7CisgICAgbV9q
aXQuYXBwZW5kRXhpdEluZm8oanVtcFRvRmFpbCk7CiAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFw
cGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5ncmFwaCgpLm1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwgdGhpcywgbV9zdHJlYW0t
PnNpemUoKSkpOwogfQogCkBAIC0xMTksNiArMTE5LDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0aW9uQ2hlY2soRXgKICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCk7CiB9CiAKK09TUkV4aXRKdW1wUGxh
Y2Vob2xkZXIgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwg
SlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4KQoreworICAg
IGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgcmV0dXJuIE9TUkV4aXRKdW1wUGxhY2Vob2xk
ZXIoKTsKKyAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hl
Y2tpbmdBcmd1bWVudFR5cGVzKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1faml0LmNvZGVCbG9j
aygpLT5udW1iZXJPZk9TUkV4aXRzKCk7CisgICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oKTsKKyAg
ICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2Rl
SW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIE9TUkV4aXRKdW1w
UGxhY2Vob2xkZXIoaW5kZXgpOworfQorCitPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNW
YWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNlKQoreworICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRl
eCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgIHJldHVybiBz
cGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSk7Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwg
SlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKQogewogICAgIEFTU0VSVChhdCht
X2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwpA
QCAtMTM5LDcgKzE1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2so
RXgKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhp
dCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgIG1faml0LmNvZGVCbG9jaygp
LT5hcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KHJlY292ZXJ5KTsKLSAgICBtX2ppdC5hcHBlbmRF
eGl0SnVtcChqdW1wVG9GYWlsKTsKKyAgICBtX2ppdC5hcHBlbmRFeGl0SW5mbyhqdW1wVG9GYWls
KTsKICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpz
VmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZv
cihub2RlSW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpLCBtX2ppdC5jb2RlQmxvY2soKS0+
bnVtYmVyT2ZTcGVjdWxhdGlvblJlY292ZXJpZXMoKSkpOwogfQogCkBAIC0xNjEsNyArMTc4LDcg
QEAgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCogU3BlY3VsYXRpdmVKSQogICAgIGlmICghbV9j
b21waWxlT2theSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUlu
ZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7Ci0gICAgbV9qaXQu
YXBwZW5kRXhpdEp1bXAoSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgbV9qaXQuYXBwZW5kRXhp
dEluZm8oSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNv
ZGVCbG9jaygpLT5vc3JFeGl0KAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NS
RXhpdCgKICAgICAgICAgICAgIE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9u
IDEzODEwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0dlbmVyYXRp
b25JbmZvLmgiCiAjaW5jbHVkZSAiREZHSklUQ29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdPU1JF
eGl0LmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUg
IkRGR09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgi
CiAjaW5jbHVkZSAiREZHVmFsdWVTb3VyY2UuaCIKQEAgLTI0MzUsNiArMjQzNiw5IEBAIHB1Ymxp
YzoKICAgICAvLyBBZGQgYSBzcGVjdWxhdGlvbiBjaGVjayB3aXRob3V0IGFkZGl0aW9uYWwgcmVj
b3ZlcnkuCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNl
LCBOb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpOwogICAgIHZvaWQg
c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgRWRnZSwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CisgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24gY2hlY2sg
d2l0aG91dCBhZGRpdGlvbmFsIHJlY292ZXJ5LCBhbmQgd2l0aCBhIHByb21pc2UgdG8gc3VwcGx5
IGEganVtcCBsYXRlci4KKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIHNwZWN1bGF0aW9uQ2hl
Y2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRleCk7CisgICAgT1NSRXhpdEp1bXBQ
bGFjZWhvbGRlciBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBFZGdl
KTsKICAgICAvLyBBZGQgYSBzZXQgb2Ygc3BlY3VsYXRpb24gY2hlY2tzIHdpdGhvdXQgYWRkaXRp
b25hbCByZWNvdmVyeS4KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFs
dWVTb3VyY2UsIE5vZGVJbmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1w
c1RvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBFZGdlLCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180425</attachid>
            <date>2012-12-20 15:43:39 -0800</date>
            <delta_ts>2012-12-21 02:20:22 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>thingy.patch</filename>
            <type>text/plain</type>
            <size>28565</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MzA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEyLTEyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEFycmF5aWZ5IHNsb3cgcGF0aCBzaG91bGQgYmUgb3V0LW9mLWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTQwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2Vu
ZXJhdG9yOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpB
cnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0ZUludGVybmFsKToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpmaWxsKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOjpvcGVyYXRvciEpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2spOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorCiAyMDEyLTEyLTIwICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEpJVDogQ2hhbmdl
IHVuaW5pdGlhbGl6ZWQgcG9pbnRlciB2YWx1ZSAtMSB0byBjb25zdGFudApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlzaW9uIDEzODMwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjM0LDggKzE2MzQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQog
ICAgICAgICBKU1N0cmluZ1JlZiBlcnJvck1lc3NhZ2UgPSAwOwogICAgICAgICBpbnQgZXJyb3JM
aW5lID0gMDsKICAgICAgICAgSlNTY3JpcHRSZWYgc2NyaXB0T2JqZWN0ID0gSlNTY3JpcHRDcmVh
dGVGcm9tU3RyaW5nKGNvbnRleHRHcm91cCwgdXJsLCAxLCBzY3JpcHQsICZlcnJvck1lc3NhZ2Us
ICZlcnJvckxpbmUpOwotICAgICAgICBBU1NFUlQoKCFzY3JpcHRPYmplY3QpICE9ICghZXJyb3JN
ZXNzYWdlKSk7Ci0gICAgICAgIGlmICghc2NyaXB0T2JqZWN0KSB7CisgICAgICAgIEFTU0VSVCgo
IXNjcmlwdE9iamVjdCkgIT0gKCFleGNlcHRpb24pKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikg
ewogICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiBUZXN0IHNjcmlwdCBkaWQgbm90IHBhcnNlXG5c
dCVzOiVkXG5cdCIsIHNjcmlwdFBhdGgsIGVycm9yTGluZSk7CiAgICAgICAgICAgICBDRlN0cmlu
Z1JlZiBlcnJvckNGID0gSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZXJyb3JNZXNzYWdlKTsKICAgICAgICAgICAgIENGU2hvdyhlcnJvckNGKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzgzMDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTBGMDVDM0I0MTY4
M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNCMjE2ODNDRjhGMDBC
QUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMz
MiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0
aW9uRWZmb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OwogCQkwRjBCODM5QjE0
QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjU4LDYgKzI1OSw4IEBACiAJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAv
KiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsKIAkJMEZF
QjNFQ0QxNjIzN0Y0RDAwQUI2N0FEIC8qIFR5cGVkQXJyYXlEZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVCM0VDQjE2MjM3RjQ3MDBB
QjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFj
cm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLzsg
fTsKKwkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
RkM5QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwICov
OyB9OworCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhv
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
RkM5QTgxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY0MjczMTE1
OEVCRDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNz
ZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGNDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjczMDE1OEVC
RDQ0MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEZGNDI3NDAx
NThFQkU4QjAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzM0MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlz
ODZfZGVjb2RlLmMgKi87IH07CkBAIC04OTEsNiArODk0LDcgQEAKIC8qIEVuZCBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDc3NkJEMTRGRjAwMjgwMDEw
MjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRDb21waWxhdGlvbkVmZm9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGgg
PSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDk1LDYgKzEwOTksOCBAQAogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAvKiBUeXBlZEFy
cmF5RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFy
cmF5RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVCM0VDRTE2
MjM3RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkVGQzlBNzE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFj
ZWhvbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFRkM5QTgxNjgxQTNCMDAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGNDI3MkYxNThFQkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEaXNhc3NlbWJsZXIuaDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNDI3MzAxNThF
QkQ0NDAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBVRGlzODZEaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNz
ZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRjQyNzM0MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHVkaXM4Nl9kZWNvZGUuYzsgcGF0aCA9IGRpc2Fzc2Vt
Ymxlci91ZGlzODYvdWRpczg2X2RlY29kZS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ1OCw3ICsyNDY0LDYgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNjU5ODdGMkMx
NjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLywKIAkJCQkw
RjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCiAJCQkJ
MEY2MjAxNkUxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCAqLywKIAkJCQkw
RjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oICovLApAQCAtMjQ2
Niw2ICsyNDcxLDcgQEAKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1l
bnRQb3NpdGlvbi5oICovLAogCQkJCTBGMTYwMTVBMTU2MTk4QkYwMEMyNTg3QyAvKiBERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjE2MDE1QjE1NjE5OEJGMDBD
MjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oICovLAorCQkJCTBGMDVD
M0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8s
CiAJCQkJMEY2Mzk0ODExNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5jcHAgKi8sCiAJ
CQkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovLAogCQkJCTBG
QzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuY3BwICovLApAQCAt
MjUxOSwxMCArMjUyNSwxMyBAQAogCQkJCTBGRDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdP
U1JFbnRyeS5oICovLAogCQkJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0
LmNwcCAqLywKIAkJCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICov
LAorCQkJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25J
bmZvLmggKi8sCiAJCQkJMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlci5jcHAgKi8sCiAJCQkJMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRD
b21waWxlci5oICovLAogCQkJCTBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdPU1JFeGl0
Q29tcGlsZXIzMl82NC5jcHAgKi8sCiAJCQkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlcjY0LmNwcCAqLywKKwkJCQkwRkVGQzlBNzE2ODFBM0IwMDA1NjdGNTMg
LyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgKi8sCisJCQkJMEZFRkM5QTgxNjgxQTNC
MDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLywKIAkJCQkwRkZGQzk0
RjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuY3BwICovLAogCQkJCTBGRkZDOTUwMTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCkBAIC0zMTgxLDYgKzMx
OTAsOCBAQAogCQkJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJDMTY3NzFDM0QwMDlDQ0IwNyAv
KiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MwQzRB
QzE2ODEwMzAyMDAxNzAxMUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFGNDVCIC8qIERGR0Fy
cmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzc5OSw2ICszODEw
LDcgQEAKIAkJCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNl
cXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAv
KiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzBD
NEFEMTY4MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cl9oCisjZGVmaW5lIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3JfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0Fy
cmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAi
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCitjbGFzcyBBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yIDogcHVibGljIEp1bXBpbmdTbG93
UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+IHsKK3B1YmxpYzoKKyAgICBB
cnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGUmIG5vZGUsIEdQUlJlZyBi
YXNlR1BSLAorICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0ZW1wR1BSLCBHUFJS
ZWcgc3RydWN0dXJlR1BSKQorICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKKyAgICAgICAgLCBtX29wKG5vZGUub3Ao
KSkKKyAgICAgICAgLCBtX2FycmF5TW9kZShub2RlLmFycmF5TW9kZSgpKQorICAgICAgICAsIG1f
c3RydWN0dXJlKG5vZGUub3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS5zdHJ1Y3R1
cmUoKSA6IDApCisgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCisgICAgICAgICwgbV9wcm9w
ZXJ0eUdQUihwcm9wZXJ0eUdQUikKKyAgICAgICAgLCBtX3RlbXBHUFIodGVtcEdQUikKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZUdQUihzdHJ1Y3R1cmVHUFIpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9vcCA9PSBBcnJheWlmeSB8fCBtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpOworICAgICAg
ICAKKyAgICAgICAgaml0LT5zaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwoZmFsc2UsIG1fcGxh
bnMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fcHJvcGVydHlHUFIg
IT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgc3dpdGNoIChtX2FycmF5TW9kZS50eXBl
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAgICAg
ICAgICAgICAgICBtX2JhZFByb3BlcnR5SnVtcCA9IGppdC0+c3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wID0gaml0LT5zcGVj
dWxhdGlvbkNoZWNrKEJhZEluZGV4aW5nVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
bV9iYXNlR1BSKSwgTm9Ob2RlKTsKKyAgICB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBn
ZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpCisgICAgeworICAgICAgICBsaW5r
RnJvbShqaXQpOworICAgICAgICAKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQXJyYXlpZnkgfHwg
bV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3By
b3BlcnR5R1BSICE9IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hcnJh
eU1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3Vv
dXM6CisgICAgICAgICAgICAgICAgbV9iYWRQcm9wZXJ0eUp1bXAuZmlsbChqaXQsIGppdC0+bV9q
aXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIG1fcHJvcGVydHlHUFIsCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQorICAgICAgICAgICAgaml0LT5zaWxlbnRT
cGlsbChtX3BsYW5zW2ldKTsKKyAgICAgICAgc3dpdGNoIChtX2FycmF5TW9kZS50eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRW5zdXJlSW50MzIsIG1fdGVtcEdQUiwgbV9iYXNlR1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAgICBqaXQt
PmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCBtX3RlbXBHUFIsIG1fYmFzZUdQ
Uik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoK
KyAgICAgICAgICAgIGlmIChtX2FycmF5TW9kZS5jb252ZXJzaW9uKCkgPT0gQXJyYXk6OlJhZ2VD
b252ZXJ0KQorICAgICAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25SYWdl
RW5zdXJlQ29udGlndW91cywgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250
aWd1b3VzLCBtX3RlbXBHUFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgorICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0
QXJyYXlTdG9yYWdlOgorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVu
c3VyZUFycmF5U3RvcmFnZSwgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXpl
KCk7IGktLTspCisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAKKyAgICAgICAgaWYgKG1fb3AgPT0gQXJyYXlpZnlUb1N0cnVj
dHVyZSkgeworICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1f
YmFkSW5kZXhpbmdUeXBlSnVtcC5maWxsKAorICAgICAgICAgICAgICAgIGppdCwgaml0LT5tX2pp
dC5icmFuY2hXZWFrUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIG1f
c3RydWN0dXJlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBBbGFzLCB3ZSBu
ZWVkIHRvIHJlbG9hZCB0aGUgc3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNwaWxsaW5nIGRvZXMg
bm90IHNhdmUKKyAgICAgICAgICAgIC8vIHRlbXBvcmFyaWVzLiBOb3Igd291bGQgaXQgYmUgdXNl
ZnVsIGZvciBpdCB0byBkbyBzby4gRWl0aGVyIHdheSB3ZSdyZSB0YWxraW5nCisgICAgICAgICAg
ICAvLyBhYm91dCBhIGxvYWQuCisgICAgICAgICAgICBqaXQtPm1faml0LmxvYWRQdHIoCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGtpbmQgb2YgYXJyYXkgc3Rv
cmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBpcyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBjaGVjaywgd2hpY2ggd2lsbCByZXN1bHQgaW4g
dGhlIAorICAgICAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8g
dGhpcyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgorICAgICAgICAgICAgLy8gVGhh
dCdzIGZpbmUsIHNpbmNlIGFycmF5aWZpY2F0aW9uIGlzIG5vdCB1c2VyLXZpc2libGUuCisgICAg
ICAgICAgICBqaXQtPm1faml0LmxvYWQ4KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG1fc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgp
KSwgbV9zdHJ1Y3R1cmVHUFIpOworICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZp
bGwoCisgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1v
ZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGp1bXBUbyhqaXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTm9kZVR5cGUg
bV9vcDsKKyAgICBBcnJheU1vZGUgbV9hcnJheU1vZGU7CisgICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIEdQUlJlZyBtX3Byb3BlcnR5R1BSOwor
ICAgIEdQUlJlZyBtX3RlbXBHUFI7CisgICAgR1BSUmVnIG1fc3RydWN0dXJlR1BSOworICAgIE9T
UkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9iYWRQcm9wZXJ0eUp1bXA7CisgICAgT1NSRXhpdEp1bXBQ
bGFjZWhvbGRlciBtX2JhZEluZGV4aW5nVHlwZUp1bXA7CisgICAgVmVjdG9yPFNpbGVudFJlZ2lz
dGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0FycmF5aWZ5U2xv
d1BhdGhHZW5lcmF0b3JfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUg
IkRGR0pJVENvbXBpbGVyLmgiCisjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIE9TUkV4aXRKdW1wUGxhY2Vob2xk
ZXI6OmZpbGwoSklUQ29tcGlsZXImIGppdCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
JiBqdW1wcykKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAgaml0Lm1f
ZXhpdENvbXBpbGF0aW9uSW5mb1ttX2luZGV4XS5tX2ZhaWx1cmVKdW1wcyA9IGp1bXBzOworfQor
Cit2b2lkIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6OmZpbGwoU3BlY3VsYXRpdmVKSVQqIGppdCwg
Y29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wcykKK3sKKyAgICBmaWxsKGppdC0+
bV9qaXQsIGp1bXBzKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyX2gKKyNkZWZp
bmUgREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCitjbGFzcyBKSVRDb21waWxlcjsKK2NsYXNzIFNwZWN1bGF0aXZlSklUOworCitjbGFzcyBP
U1JFeGl0SnVtcFBsYWNlaG9sZGVyIHsKK3B1YmxpYzoKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyKCkKKyAgICAgICAgOiBtX2luZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTcGVjdWxh
dGl2ZUpJVDsKKyAgICAKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKHVuc2lnbmVkIGluZGV4
KQorICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgeworICAgIH0KKworcHVibGljOgorICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KKyAgICAKKyAgICB2b2lkIGZpbGwoSklUQ29tcGls
ZXImLCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmKTsKKyAgICB2b2lkIGZpbGwoU3Bl
Y3VsYXRpdmVKSVQqLCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmKTsKKyAgICAKK3By
aXZhdGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMzgzMDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkRGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC0xMTksNiAr
MTIwLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXgKICAgICBz
cGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVt
cFRvRmFpbCk7CiB9CiAKK09TUkV4aXRKdW1wUGxhY2Vob2xkZXIgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBOb2RlSW5kZXggbm9kZUluZGV4KQoreworICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAg
ICAgcmV0dXJuIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoKTsKKyAgICBBU1NFUlQoYXQobV9jb21w
aWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7Cisg
ICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oKTsKKyAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5k
T1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6
ZSgpKSk7CisgICAgcmV0dXJuIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoaW5kZXgpOworfQorCitP
U1JFeGl0SnVtcFBsYWNlaG9sZGVyIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNlKQor
eworICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2lu
Z0FyZ3VtZW50VHlwZXMpOworICAgIHJldHVybiBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFs
dWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1
bXBzVG9GYWlsKQogewogICAgIGlmICghbV9jb21waWxlT2theSkKQEAgLTU0OCwxMSArNTY2LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUKICAgICB9CiAgICAg
ICAgIAogICAgIC8vIFdlIGNhbiBza2lwIGFsbCB0aGF0IGNvbWVzIG5leHQgaWYgd2UgYWxyZWFk
eSBoYXZlIGFycmF5IHN0b3JhZ2UuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmU7
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIAogICAgIGlmIChu
b2RlLm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICBkb25lLmFwcGVuZCht
X2ppdC5icmFuY2hXZWFrUHRyKAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLAorICAg
ICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAogICAgICAgICAgICAgbm9kZS5zdHJ1
Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7CkBAIC01NjIsNzcgKzU4MCwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgICAgIG1faml0LmxvYWQ4KAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAotICAgICAgICBkb25l
ID0ganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLmFycmF5TW9kZSgp
LCB0cnVlKTsKLSAgICB9Ci0gICAgICAgIAotICAgIC8vIElmIHdlJ3JlIGFsbGVnZWRseSBjcmVh
dGluZyBjb250aWd1b3VzIHN0b3JhZ2UgYW5kIHRoZSBpbmRleCBpcyBib2d1cywgdGhlbgotICAg
IC8vIGp1c3QgZG9uJ3QuCi0gICAgaWYgKHByb3BlcnR5UmVnICE9IEludmFsaWRHUFJSZWcpIHsK
LSAgICAgICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgpLnR5cGUoKSkgewotICAgICAgICBjYXNl
IEFycmF5OjpJbnQzMjoKLSAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICBjYXNl
IEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIE5vdyBjYWxsIG91
dCB0byBjcmVhdGUgdGhlIGFycmF5IHN0b3JhZ2UuCi0gICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnModGVtcEdQUik7Ci0gICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgpLnR5cGUoKSkgewotICAg
IGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3Vy
ZUludDMyLCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJh
eTo6RG91YmxlOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZURvdWJsZSwg
dGVtcEdQUiwgYmFzZVJlZyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXk6OkNvbnRp
Z3VvdXM6Ci0gICAgICAgIGlmIChub2RlLmFycmF5TW9kZSgpLmNvbnZlcnNpb24oKSA9PSBBcnJh
eTo6UmFnZUNvbnZlcnQpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJhZ2VF
bnN1cmVDb250aWd1b3VzLCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzLCB0ZW1wR1BSLCBi
YXNlUmVnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgot
ICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlLCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRl
bXBHUFIsIG5vZGUuYXJyYXlNb2RlKCkpKTsKICAgICB9Ci0gICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycyh0ZW1wR1BSKTsKLSAgICAKLSAgICBpZiAobm9kZS5vcCgpID09IEFycmF5aWZ5VG9TdHJ1
Y3R1cmUpIHsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIEJhZEluZGV4
aW5nVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIE5vTm9kZSwKLSAg
ICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIG5vZGUuc3Ry
dWN0dXJlKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBBbGFzLCB3ZSBuZWVkIHRvIHJl
bG9hZCB0aGUgc3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNwaWxsaW5nIGRvZXMgbm90IHNhdmUK
LSAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRv
IGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAgICAgLy8gYWJvdXQgYSBsb2Fk
LgotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
CiAgICAgCi0gICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBv
ZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KLSAgICAgICAgLy8gTm90ZSB0
aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdoaWNoIHdpbGwgcmVz
dWx0IGluIHRoZSAKLSAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcg
dG8gdGhpcyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgotICAgICAgICAvLyBUaGF0
J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KLSAgICAg
ICAgbV9qaXQubG9hZDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgTm9Ob2RlLAotICAgICAgICAg
ICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShzdHJ1Y3R1cmVHUFIsIG5vZGUuYXJyYXlN
b2RlKCkpKTsKLSAgICB9CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoYWRvcHRQdHIobmV3IEFy
cmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0dXJlR1BSKSkpOwogICAgIAotICAg
IGRvbmUubGluaygmbV9qaXQpOwogICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTM4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZH
R2VuZXJhdGlvbkluZm8uaCIKICNpbmNsdWRlICJERkdKSVRDb21waWxlci5oIgogI2luY2x1ZGUg
IkRGR09TUkV4aXQuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgiCiAj
aW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4uaCIKICNpbmNsdWRlICJERkdWYWx1ZVNvdXJjZS5oIgpAQCAtMjQ0NSw2ICsyNDQ2LDkg
QEAgcHVibGljOgogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrIHdpdGhvdXQgYWRkaXRp
b25hbCByZWNvdmVyeS4KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFs
dWVTb3VyY2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAg
ICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBFZGdlLCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKTsKKyAgICAvLyBBZGQgYSBzcGVjdWxhdGlv
biBjaGVjayB3aXRob3V0IGFkZGl0aW9uYWwgcmVjb3ZlcnksIGFuZCB3aXRoIGEgcHJvbWlzZSB0
byBzdXBwbHkgYSBqdW1wIGxhdGVyLgorICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgc3BlY3Vs
YXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4KTsKKyAgICBPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3Vy
Y2UsIEVkZ2UpOwogICAgIC8vIEFkZCBhIHNldCBvZiBzcGVjdWxhdGlvbiBjaGVja3Mgd2l0aG91
dCBhZGRpdGlvbmFsIHJlY292ZXJ5LgogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2lu
ZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIGp1bXBzVG9GYWlsKTsKICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpT
VmFsdWVTb3VyY2UsIEVkZ2UsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNU
b0ZhaWwpOwo=
</data>
<flag name="review"
          id="197685"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="197689"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180496</attachid>
            <date>2012-12-21 02:20:22 -0800</date>
            <delta_ts>2012-12-21 02:21:38 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>thingy.patch</filename>
            <type>text/plain</type>
            <size>31351</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTEyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEFycmF5aWZ5IHNsb3cgcGF0aCBzaG91bGQgYmUgb3V0LW9mLWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTQwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAKKyAgICAgICAgVGhlIGludGVy
ZXN0aW5nIGJpdCBvZiB0aGlzIGNoYW5nZSBpcyBhbGxvd2luZyBvdXQtb2YtbGluZSBzbG93IHBh
dGggZ2VuZXJhdG9ycworICAgICAgICB0byBlbWl0IHNwZWN1bGF0aW9uIGNoZWNrcy4gVGhpcyBp
cyBhY2NvbXBsaXNoZWQgYnkgaGF2aW5nIGEgdmVyc2lvbiBvZgorICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKCkgdGhhdCByZXR1cm5zIGEganVtcCBwbGFjZWhvbGRlciBpbnN0ZWFkIG9mIHRha2lu
ZyBhIGp1bXAgKG9yCisgICAgICAgIGp1bXAgbGlzdCkgYXMgYW4gYXJndW1lbnQuIFlvdSBjYW4g
dGhlbiBmaWxsIGluIHRoYXQganVtcCBwbGFjZWhvbGRlciBhdCBhCisgICAgICAgIGxhdGVyIHRp
bWUsIHNvIGxvbmcgYXMgeW91IGRvIGl0IGJlZm9yZSBPU1IgZXhpdCBsaW5raW5nLiBTbG93IHBh
dGggZ2VuZXJhdG9ycworICAgICAgICBydW4gYmVmb3JlIGxpbmtpbmcsIHNvIHRoYXQganVzdCBu
YXR1cmFsbHkgZW5kcyB1cCB3b3JraW5nLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpc24ndCBy
ZWFsbHkgYSBiaWcgd2luLCBidXQgd2Uga25vdyB0aGF0IG91dC1vZi1saW5pbmcgc2xvdyBwYXRo
cyBpcworICAgICAgICBnZW5lcmFsbHkgYSBnb29kIHRoaW5nIHRvIGRvLCBzbyBpdCdzIGZhaXIg
dG8gYXNzdW1lIHRoYXQgdGhpcyBpcyBhIG1vdmUgaW4gdGhlCisgICAgICAgIHJpZ2h0IGRpcmVj
dGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEFycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3I6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlSW50ZXJuYWwpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChE
RkcpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6OmZpbGwpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmg6IEFkZGVkLgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIpOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXIpOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6Om9wZXJhdG9yISk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayk6CisgICAgICAgIChERkcpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlmeSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisKIDIwMTItMTIt
MjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbGx5IGZv
dW5kIHRoZSBwcm9ibGVtLiAgVXNpbmcgdGhlIHdyb25nIEpTQ29udGV4dEdyb3VwLgpAQCAtMTQ1
LDIzICsxODcsNiBAQAogICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKICAgICAgICAgKEpT
T2JqZWN0KToKIAotMjAxMi0xMi0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgot
Ci0gICAgICAgIFRpZHkgdXAgSlNTY3JpcHRSZWYgQVBJCi0gICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0NzAKLQotICAgICAgICBSZXZpZXdlZCBieSBB
bmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgUGVvcGxlIGZvdW5kIHRoZSBBUEkncyB1c2Ugb2Yg
YSBjb250ZXh0IGNvbmZ1c2luZywgc28gd2UnbGwgc3dpdGNoIHRvIGEgSlNDb250ZXh0R3JvdXAg
YmFzZWQKLSAgICAgICAgQVBJLCBhbmQgZHJvcCBhIG51bWJlciBvZiB0aGUgdW5uZWNlc3Nhcnkg
dXNlcyBvZiBjb250ZXh0cy4KLQotICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6Ci0gICAg
ICAgIChPcGFxdWVKU1NjcmlwdDo6Z2xvYmFsRGF0YSk6Ci0gICAgICAgIChwYXJzZVNjcmlwdCk6
Ci0gICAgICAgICogQVBJL0pTU2NyaXB0UmVmUHJpdmF0ZS5oOgotICAgICAgICAqIEFQSS90ZXN0
cy90ZXN0YXBpLmM6Ci0gICAgICAgIChtYWluKToKLQogMjAxMi0xMi0xOSAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1MgcGFyc2luZyBm
b3IgQ1NTIHRyYW5zaXRpb25zIHVucHJlZml4ZWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAogICAgIGRm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwCisgICAgZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCiAgICAgZGZnL0RG
R09wZXJhdGlvbnMuY3BwCiAgICAgZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oIFwKQEAg
LTIyOSw2ICsyMzAsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlci5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM4MzAxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsx
MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcCBcCiAg
ICAgZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcCBcCiAgICAgZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcCBcCisgICAgZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIFwK
ICAgICBkZmcvREZHUGhhc2UuY3BwIFwKICAgICBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIFwKICAgICBkZmcvREZHUmVwYXRjaC5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw2ICs1OCw3IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMEYwNUMzQjQxNjgzQ0Y5MjAw
QkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAv
KiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJ
VENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZv
cnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CiAJCTBGMEI4MzlCMTRCQ0Y0NjAw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0yNTgsNiArMjU5LDggQEAKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
MjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkVCM0VDRDE2
MjM3RjREMDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUIzRUNCMTYyMzdGNDcwMEFCNjdBRCAv
KiBUeXBlZEFycmF5RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVCM0VDRTE2MjM3RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovOyB9OworCQkw
RkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVGQzlBNzE2
ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgKi87IH07CisJ
CTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVGQzlBODE2
ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRjQyNzMxMTU4RUJENTQw
MDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRjQyNzJGMTU4RUJENDQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY0
MjczMjE1OEVCRDU4MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzMwMTU4RUJENDQwMDRD
QjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQkwRkY0Mjc0MDE1OEVCRThC
MDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3MzQxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNv
ZGUuYyAqLzsgfTsKQEAgLTg5MSw2ICs4OTQsNyBAQAogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMEYwNUMzQjIxNjgzQ0Y4RjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8q
IEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVENvbXBpbGF0aW9uRWZmb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50
L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTUs
NiArMTA5OSw4IEBACiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFQjNFQ0IxNjIzN0Y0NzAwQUI2N0FEIC8qIFR5cGVkQXJyYXlEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVkQXJyYXlEZXNj
cmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRUNFMTYyMzdGNjcw
MEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRKdW1w
UGxhY2Vob2xkZXIuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMg
LyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjcy
RjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0Rpc2Fzc2Vt
Ymxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0MjczMDE1OEVCRDQ0MDA0
Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVEaXM4NkRpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIv
VURpczg2RGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZG
NDI3MzQxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5jOyBuYW1lID0gdWRpczg2X2RlY29kZS5jOyBwYXRoID0gZGlzYXNzZW1ibGVyL3Vk
aXM4Ni91ZGlzODZfZGVjb2RlLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU4
LDcgKzI0NjQsNiBAQAogCQk4NkVDOURCMzEzMjhERjQ0MDAyQjJBRDcgLyogZGZnICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2NTk4N0YyQzE2N0ZFODRC
MDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovLAogCQkJCTBGNjIwMTZE
MTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLywKIAkJCQkwRjYyMDE2
RTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5oICovLAogCQkJCTBGNjIwMTZG
MTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi8sCkBAIC0yNDY2LDYgKzI0
NzEsNyBAQAogCQkJCTBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0
aW9uLmggKi8sCiAJCQkJMEYxNjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGMTYwMTVCMTU2MTk4QkYwMEMyNTg3QyAv
KiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8sCisJCQkJMEYwNUMzQjIxNjgz
Q0Y4RjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCAqLywKIAkJCQkw
RjYzOTQ4MTE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCAqLywKIAkJCQkwRjYz
OTQ4MjE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggKi8sCiAJCQkJMEZDMDk3NkIx
NDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgKi8sCkBAIC0yNTE5LDEw
ICsyNTI1LDEzIEBACiAJCQkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5
LmggKi8sCiAJCQkJMEZDMDk3OEUxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICov
LAogCQkJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggKi8sCisJCQkJ
NjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAq
LywKIAkJCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNw
cCAqLywKIAkJCQkwRkMwOTc2RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
LmggKi8sCiAJCQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcCAqLywKIAkJCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyNjQuY3BwICovLAorCQkJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdP
U1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLywKKwkJCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICovLAogCQkJCTBGRkZDOTRGMTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTAxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR1BoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTExNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKQEAgLTMxODEsNiArMzE5MCw4IEBA
CiAJCQkJMEYxMzkxMkExNjc3MUMzNjAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5j
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMzkxMkMxNjc3MUMzRDAwOUNDQjA3IC8qIFByb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzBDNEFDMTY4MTAz
MDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjA1QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNzk5LDYgKzM4MTAsNyBAQAog
CQkJCTBGMTM5MTI5MTY3NzFDMzMwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMEM0QUQxNjgx
MDY3RTAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUZD
OUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yX2gKKyNk
ZWZpbmUgREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQXJyYXlNb2Rl
LmgiCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdEp1bXBQbGFj
ZWhvbGRlci5oIgorI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJERkdTbG93
UGF0aEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Ns
YXNzIEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4geworcHVibGljOgorICAgIEFycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZSYgbm9kZSwgR1BSUmVnIGJhc2VHUFIs
CisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiwgR1BSUmVnIHRlbXBHUFIsIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIpCisgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQorICAgICAgICAsIG1fb3Aobm9kZS5vcCgpKQorICAg
ICAgICAsIG1fYXJyYXlNb2RlKG5vZGUuYXJyYXlNb2RlKCkpCisgICAgICAgICwgbV9zdHJ1Y3R1
cmUobm9kZS5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLnN0cnVjdHVyZSgpIDog
MCkKKyAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgLCBtX3Byb3BlcnR5R1BS
KHByb3BlcnR5R1BSKQorICAgICAgICAsIG1fdGVtcEdQUih0ZW1wR1BSKQorICAgICAgICAsIG1f
c3RydWN0dXJlR1BSKHN0cnVjdHVyZUdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09
IEFycmF5aWZ5IHx8IG1fb3AgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSk7CisgICAgICAgIAorICAg
ICAgICBqaXQtPnNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9wbGFucywgSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIAorICAgICAgICBpZiAobV9wcm9wZXJ0eUdQUiAhPSBJbnZh
bGlkR1BSUmVnKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fYXJyYXlNb2RlLnR5cGUoKSkgewor
ICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpE
b3VibGU6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAg
ICAgIG1fYmFkUHJvcGVydHlKdW1wID0gaml0LT5zcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAgPSBqaXQtPnNwZWN1bGF0aW9u
Q2hlY2soQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChtX2Jhc2VH
UFIpLCBOb05vZGUpOworICAgIH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGdlbmVyYXRl
SW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyAgICB7CisgICAgICAgIGxpbmtGcm9tKGpp
dCk7CisgICAgICAgIAorICAgICAgICBBU1NFUlQobV9vcCA9PSBBcnJheWlmeSB8fCBtX29wID09
IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fcHJvcGVydHlH
UFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgc3dpdGNoIChtX2FycmF5TW9kZS50
eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAg
ICAgICAgICAgICAgICBtX2JhZFByb3BlcnR5SnVtcC5maWxsKGppdCwgaml0LT5tX2ppdC5icmFu
Y2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
bV9wcm9wZXJ0eUdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1f
cGxhbnNbaV0pOworICAgICAgICBzd2l0Y2ggKG1fYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVy
YXRpb25FbnN1cmVJbnQzMiwgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgIGppdC0+Y2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25FbnN1cmVEb3VibGUsIG1fdGVtcEdQUiwgbV9iYXNlR1BSKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAg
ICAgICAgaWYgKG1fYXJyYXlNb2RlLmNvbnZlcnNpb24oKSA9PSBBcnJheTo6UmFnZUNvbnZlcnQp
CisgICAgICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJhZ2VFbnN1cmVD
b250aWd1b3VzLCBtX3RlbXBHUFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMs
IG1fdGVtcEdQUiwgbV9iYXNlR1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEFycmF5OjpBcnJheVN0b3JhZ2U6CisgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2U6CisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJy
YXlTdG9yYWdlLCBtX3RlbXBHUFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0t
OykKKyAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgIAorICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7
CisgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgbV9iYWRJbmRl
eGluZ1R5cGVKdW1wLmZpbGwoCisgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5j
aFdlYWtQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8g
cmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2
ZQorICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9y
IGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKKyAgICAgICAgICAgIC8vIGFi
b3V0IGEgbG9hZC4KKyAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRo
YXQgd2Ugd2FudGVkIHRvIGdldC4KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEg
YmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCisg
ICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFy
cmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCisgICAgICAgICAgICAvLyBUaGF0J3MgZmlu
ZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KKyAgICAgICAgICAg
IGppdC0+bV9qaXQubG9hZDgoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0
cnVjdHVyZUdQUik7CisgICAgICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgKKyAg
ICAgICAgICAgICAgICBqaXQsIGppdC0+anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShtX3N0
cnVjdHVyZUdQUiwgbV9hcnJheU1vZGUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
anVtcFRvKGppdCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBOb2RlVHlwZSBtX29wOwor
ICAgIEFycmF5TW9kZSBtX2FycmF5TW9kZTsKKyAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwor
ICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgR1BSUmVnIG1fcHJvcGVydHlHUFI7CisgICAgR1BS
UmVnIG1fdGVtcEdQUjsKKyAgICBHUFJSZWcgbV9zdHJ1Y3R1cmVHUFI7CisgICAgT1NSRXhpdEp1
bXBQbGFjZWhvbGRlciBtX2JhZFByb3BlcnR5SnVtcDsKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyIG1fYmFkSW5kZXhpbmdUeXBlSnVtcDsKKyAgICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZl
UGxhbiwgMj4gbV9wbGFuczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEp1
bXBQbGFjZWhvbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRKdW1w
UGxhY2Vob2xkZXIuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHSklU
Q29tcGlsZXIuaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3ZvaWQgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjo6Zmls
bChKSVRDb21waWxlciYgaml0LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBz
KQoreworICAgIGlmICghKnRoaXMpCisgICAgICAgIHJldHVybjsKKyAgICBqaXQubV9leGl0Q29t
cGlsYXRpb25JbmZvW21faW5kZXhdLm1fZmFpbHVyZUp1bXBzID0ganVtcHM7Cit9CisKK3ZvaWQg
T1NSRXhpdEp1bXBQbGFjZWhvbGRlcjo6ZmlsbChTcGVjdWxhdGl2ZUpJVCogaml0LCBjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzKQoreworICAgIGZpbGwoaml0LT5tX2ppdCwg
anVtcHMpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
SnVtcFBsYWNlaG9sZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXJfaAorI2RlZmluZSBERkdP
U1JFeGl0SnVtcFBsYWNlaG9sZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Ns
YXNzIEpJVENvbXBpbGVyOworY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CisKK2NsYXNzIE9TUkV4aXRK
dW1wUGxhY2Vob2xkZXIgeworcHVibGljOgorICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoKQor
ICAgICAgICA6IG1faW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQor
ICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNwZWN1bGF0aXZlSklU
OworICAgIAorICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIodW5zaWduZWQgaW5kZXgpCisgICAg
ICAgIDogbV9pbmRleChpbmRleCkKKyAgICB7CisgICAgfQorCitwdWJsaWM6CisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKTsgfQorICAgIAorICAgIHZvaWQgZmlsbChKSVRDb21waWxlciYsIGNv
bnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYpOworICAgIHZvaWQgZmlsbChTcGVjdWxhdGl2
ZUpJVCosIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYpOworICAgIAorcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBtX2luZGV4OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdPU1JFeGl0SnVtcFBs
YWNlaG9sZGVyX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEzODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHQ2Fs
bEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0
aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTExOSw2ICsxMjAsMjMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeAogICAgIHNwZWN1bGF0
aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJjZSwgbm9kZVVzZS5pbmRleCgpLCBqdW1wVG9GYWls
KTsKIH0KIAorT1NSRXhpdEp1bXBQbGFjZWhvbGRlciBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJ
bmRleCBub2RlSW5kZXgpCit7CisgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICByZXR1
cm4gT1NSRXhpdEp1bXBQbGFjZWhvbGRlcigpOworICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRl
eCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gbV9qaXQuY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsKKyAgICBtX2pp
dC5hcHBlbmRFeGl0SW5mbygpOworICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0
KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXplKCkpKTsK
KyAgICByZXR1cm4gT1NSRXhpdEp1bXBQbGFjZWhvbGRlcihpbmRleCk7Cit9CisKK09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQg
a2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBFZGdlIG5vZGVVc2UpCit7CisgICAg
QVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1l
bnRUeXBlcyk7CisgICAgcmV0dXJuIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJj
ZSwgbm9kZVVzZS5pbmRleCgpKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJ
bmRleCBub2RlSW5kZXgsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0Zh
aWwpCiB7CiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpAQCAtNTQ4LDExICs1NjYsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSYgbm9kZQogICAgIH0KICAgICAgICAgCiAg
ICAgLy8gV2UgY2FuIHNraXAgYWxsIHRoYXQgY29tZXMgbmV4dCBpZiB3ZSBhbHJlYWR5IGhhdmUg
YXJyYXkgc3RvcmFnZS4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgCiAgICAgaWYgKG5vZGUub3Ao
KSA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7Ci0gICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJy
YW5jaFdlYWtQdHIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsCisgICAgICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCiAgICAgICAgICAgICBub2RlLnN0cnVjdHVyZSgp
KSk7CiAgICAgfSBlbHNlIHsKQEAgLTU2Miw3NyArNTgwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUKICAgICAgICAgbV9qaXQubG9hZDgoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgCi0gICAgICAgIGRvbmUgPSBqdW1w
U2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUuYXJyYXlNb2RlKCksIHRydWUp
OwotICAgIH0KLSAgICAgICAgCi0gICAgLy8gSWYgd2UncmUgYWxsZWdlZGx5IGNyZWF0aW5nIGNv
bnRpZ3VvdXMgc3RvcmFnZSBhbmQgdGhlIGluZGV4IGlzIGJvZ3VzLCB0aGVuCi0gICAgLy8ganVz
dCBkb24ndC4KLSAgICBpZiAocHJvcGVydHlSZWcgIT0gSW52YWxpZEdQUlJlZykgewotICAgICAg
ICBzd2l0Y2ggKG5vZGUuYXJyYXlNb2RlKCkudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgQXJyYXk6
OkludDMyOgotICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgIGNhc2UgQXJyYXk6
OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAg
ICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRF
WCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8gTm93IGNhbGwgb3V0IHRvIGNy
ZWF0ZSB0aGUgYXJyYXkgc3RvcmFnZS4KLSAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyh0ZW1w
R1BSKTsKLSAgICBzd2l0Y2ggKG5vZGUuYXJyYXlNb2RlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBB
cnJheTo6SW50MzI6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlSW50MzIs
IHRlbXBHUFIsIGJhc2VSZWcpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5OjpEb3Vi
bGU6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCB0ZW1wR1BS
LCBiYXNlUmVnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6Q29udGlndW91czoK
LSAgICAgICAgaWYgKG5vZGUuYXJyYXlNb2RlKCkuY29udmVyc2lvbigpID09IEFycmF5OjpSYWdl
Q29udmVydCkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmFnZUVuc3VyZUNv
bnRpZ3VvdXMsIHRlbXBHUFIsIGJhc2VSZWcpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMsIHRlbXBHUFIsIGJhc2VSZWcp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6Ci0gICAgY2Fz
ZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25FbnN1cmVBcnJheVN0b3JhZ2UsIHRlbXBHUFIsIGJhc2VSZWcpOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwg
bm9kZS5hcnJheU1vZGUoKSkpOwogICAgIH0KLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHRl
bXBHUFIpOwotICAgIAotICAgIGlmIChub2RlLm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkg
ewotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgTm9Ob2RlLAotICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90
RXF1YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgbm9kZS5zdHJ1Y3R1cmUo
KSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRo
ZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAg
ICAvLyB0ZW1wb3Jhcmllcy4gTm9yIHdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28u
IEVpdGhlciB3YXkgd2UncmUgdGFsa2luZwotICAgICAgICAvLyBhYm91dCBhIGxvYWQuCi0gICAg
ICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAK
LSAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBraW5kIG9mIGFycmF5
IHN0b3JhZ2UgdGhhdCB3ZSB3YW50ZWQgdG8gZ2V0LgotICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBpcyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBjaGVjaywgd2hpY2ggd2lsbCByZXN1bHQgaW4g
dGhlIAotICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlz
IGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCi0gICAgICAgIC8vIFRoYXQncyBmaW5l
LCBzaW5jZSBhcnJheWlmaWNhdGlvbiBpcyBub3QgdXNlci12aXNpYmxlLgotICAgICAgICBtX2pp
dC5sb2FkOCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBOb05vZGUsCi0gICAgICAgICAgICBqdW1w
U2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHN0cnVjdHVyZUdQUiwgbm9kZS5hcnJheU1vZGUoKSkp
OwotICAgIH0KKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihhZG9wdFB0cihuZXcgQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1Y3R1cmVHUFIpKSk7CiAgICAgCi0gICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAxMzgzMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJERkdHZW5lcmF0
aW9uSW5mby5oIgogI2luY2x1ZGUgIkRGR0pJVENvbXBpbGVyLmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdC5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRl
ICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
IgogI2luY2x1ZGUgIkRGR1ZhbHVlU291cmNlLmgiCkBAIC0yNDQ1LDYgKzI0NDYsOSBAQCBwdWJs
aWM6CiAgICAgLy8gQWRkIGEgc3BlY3VsYXRpb24gY2hlY2sgd2l0aG91dCBhZGRpdGlvbmFsIHJl
Y292ZXJ5LgogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJj
ZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKTsKICAgICB2b2lk
IHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIEVkZ2UsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpOworICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNr
IHdpdGhvdXQgYWRkaXRpb25hbCByZWNvdmVyeSwgYW5kIHdpdGggYSBwcm9taXNlIHRvIHN1cHBs
eSBhIGp1bXAgbGF0ZXIuCisgICAgT1NSRXhpdEp1bXBQbGFjZWhvbGRlciBzcGVjdWxhdGlvbkNo
ZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlSW5kZXgpOworICAgIE9TUkV4aXRKdW1w
UGxhY2Vob2xkZXIgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgRWRn
ZSk7CiAgICAgLy8gQWRkIGEgc2V0IG9mIHNwZWN1bGF0aW9uIGNoZWNrcyB3aXRob3V0IGFkZGl0
aW9uYWwgcmVjb3ZlcnkuCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1Zh
bHVlU291cmNlLCBOb2RlSW5kZXgsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVt
cHNUb0ZhaWwpOwogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNv
dXJjZSwgRWRnZSwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180497</attachid>
            <date>2012-12-21 02:21:38 -0800</date>
            <delta_ts>2012-12-21 02:51:15 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>thingy.patch</filename>
            <type>text/plain</type>
            <size>30629</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTEyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEFycmF5aWZ5IHNsb3cgcGF0aCBzaG91bGQgYmUgb3V0LW9mLWxpbmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTQwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAKKyAgICAgICAgVGhlIGludGVy
ZXN0aW5nIGJpdCBvZiB0aGlzIGNoYW5nZSBpcyBhbGxvd2luZyBvdXQtb2YtbGluZSBzbG93IHBh
dGggZ2VuZXJhdG9ycworICAgICAgICB0byBlbWl0IHNwZWN1bGF0aW9uIGNoZWNrcy4gVGhpcyBp
cyBhY2NvbXBsaXNoZWQgYnkgaGF2aW5nIGEgdmVyc2lvbiBvZgorICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKCkgdGhhdCByZXR1cm5zIGEganVtcCBwbGFjZWhvbGRlciBpbnN0ZWFkIG9mIHRha2lu
ZyBhIGp1bXAgKG9yCisgICAgICAgIGp1bXAgbGlzdCkgYXMgYW4gYXJndW1lbnQuIFlvdSBjYW4g
dGhlbiBmaWxsIGluIHRoYXQganVtcCBwbGFjZWhvbGRlciBhdCBhCisgICAgICAgIGxhdGVyIHRp
bWUsIHNvIGxvbmcgYXMgeW91IGRvIGl0IGJlZm9yZSBPU1IgZXhpdCBsaW5raW5nLiBTbG93IHBh
dGggZ2VuZXJhdG9ycworICAgICAgICBydW4gYmVmb3JlIGxpbmtpbmcsIHNvIHRoYXQganVzdCBu
YXR1cmFsbHkgZW5kcyB1cCB3b3JraW5nLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpc24ndCBy
ZWFsbHkgYSBiaWcgd2luLCBidXQgd2Uga25vdyB0aGF0IG91dC1vZi1saW5pbmcgc2xvdyBwYXRo
cyBpcworICAgICAgICBnZW5lcmFsbHkgYSBnb29kIHRoaW5nIHRvIGRvLCBzbyBpdCdzIGZhaXIg
dG8gYXNzdW1lIHRoYXQgdGhpcyBpcyBhIG1vdmUgaW4gdGhlCisgICAgICAgIHJpZ2h0IGRpcmVj
dGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEFycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3I6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlSW50ZXJuYWwpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChE
RkcpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6OmZpbGwpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmg6IEFkZGVkLgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIpOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXIpOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6Om9wZXJhdG9yISk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayk6CisgICAgICAgIChERkcpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlmeSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisKIDIwMTItMTIt
MjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbGx5IGZv
dW5kIHRoZSBwcm9ibGVtLiAgVXNpbmcgdGhlIHdyb25nIEpTQ29udGV4dEdyb3VwLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM4MzAxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2
ICs5NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHAKICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCiAgICAgZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAorICAgIGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmNwcAogICAgIGRmZy9ERkdPcGVyYXRpb25zLmNwcAogICAgIGRmZy9ERkdQaGFzZS5jcHAK
ICAgICBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4MzAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suaCBcCkBAIC0yMjksNiArMjMwLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDEzODMwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgXAogICAg
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0SnVt
cFBsYWNlaG9sZGVyLmNwcCBcCiAgICAgZGZnL0RGR1BoYXNlLmNwcCBcCiAgICAgZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR1JlcGF0Y2guY3BwIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzgzMDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0
ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJ
CTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNC
MjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDc3NkJGMTRG
RjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8q
IEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9Owog
CQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU4LDYgKzI1OSw4IEBACiAJCTBGRTIyOEVFMTQzNkFC
MkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAq
LzsgfTsKIAkJMEZFQjNFQ0QxNjIzN0Y0RDAwQUI2N0FEIC8qIFR5cGVkQXJyYXlEZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVCM0VD
QjE2MjM3RjQ3MDBBQjY3QUQgLyogVHlwZWRBcnJheURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVCM0VDRjE2MjM3RjZDMDBB
QjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1i
bGVyLmNwcCAqLzsgfTsKKwkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFRkM5QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIuY3BwICovOyB9OworCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhp
dEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFRkM5QTgxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5
RkYgLyogRGlzYXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEZGNDI3MzIxNThFQkQ1ODAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY0MjczMDE1OEVCRDQ0MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsK
IAkJMEZGNDI3NDAxNThFQkU4QjAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzM0MTU4RUJEOTQwMDRD
QjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgKi87IH07CkBAIC04OTEsNiArODk0LDcgQEAKIC8qIEVu
ZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCisJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDc3NkJE
MTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb21waWxhdGlvbkVmZm9ydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5
cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDk1LDYgKzEwOTksOCBAQAogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZD
NDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRUNCMTYyMzdGNDcwMEFCNjdB
RCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlZEFycmF5RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVGQzlBNzE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0
SnVtcFBsYWNlaG9sZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFRkM5
QTgxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBw
YXRoID0gZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZGNDI3MkYxNThFQkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXNhc3NlbWJsZXIuaDsgcGF0aCA9IGRp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGNDI3MzAxNThFQkQ0NDAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVRGlzODZEaXNhc3NlbWJsZXIuY3BwOyBw
YXRoID0gZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRjQyNzM0MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2Rl
LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHVkaXM4Nl9kZWNvZGUuYzsgcGF0
aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X2RlY29kZS5jOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjQ1OCw3ICsyNDY0LDYgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIy
QUQ3IC8qIGRmZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8u
aCAqLywKIAkJCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgKi8sCiAJCQkJMEY2MjAxNkUxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUu
aCAqLywKIAkJCQkwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5o
ICovLApAQCAtMjQ2Niw2ICsyNDcxLDcgQEAKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYg
LyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovLAogCQkJCTBGMTYwMTVBMTU2MTk4QkYwMEMyNTg3
QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjE2MDE1
QjE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oICov
LAorCQkJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2Vu
ZXJhdG9yLmggKi8sCiAJCQkJMEY2Mzk0ODExNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9k
ZS5jcHAgKi8sCiAJCQkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5o
ICovLAogCQkJCTBGQzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMu
Y3BwICovLApAQCAtMjUxOSwxMCArMjUyNSwxMyBAQAogCQkJCTBGRDgyRTUzMTQxREFFREUwMDE3
OUM5NCAvKiBERkdPU1JFbnRyeS5oICovLAogCQkJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAv
KiBERkdPU1JFeGl0LmNwcCAqLywKIAkJCQkwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZH
T1NSRXhpdC5oICovLAorCQkJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAvKiBERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmggKi8sCiAJCQkJMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5jcHAgKi8sCiAJCQkJMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8q
IERGR09TUkV4aXRDb21waWxlci5oICovLAogCQkJCTBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAv
KiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgKi8sCiAJCQkJMEZDMDk3NzAxNDY5M0FFRjAw
Q0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLywKKwkJCQkwRkVGQzlBNzE2ODFB
M0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgKi8sCisJCQkJMEZF
RkM5QTgxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLywK
IAkJCQkwRkZGQzk0RjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuY3BwICovLAogCQkJCTBG
RkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCkBA
IC0zMTgxLDYgKzMxOTAsOCBAQAogCQkJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9m
aWxlckJ5dGVjb2RlU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJDMTY3NzFD
M0QwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0MwQzRBQzE2ODEwMzAyMDAxNzAxMUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1
bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFG
NDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
Mzc5OSw2ICszODEwLDcgQEAKIAkJCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcgLyogUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTJCMTY3NzFD
M0EwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3QzBDNEFEMTY4MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQ
bGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvcl9oCisjZGVmaW5lIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3JfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2lu
Y2x1ZGUgIkRGR0FycmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUg
IkRGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgi
CisjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJERkdTcGVjdWxh
dGl2ZUpJVC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCitjbGFzcyBBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yIDogcHVibGlj
IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+IHsKK3B1
YmxpYzoKKyAgICBBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGUmIG5v
ZGUsIEdQUlJlZyBiYXNlR1BSLAorICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0
ZW1wR1BSLCBHUFJSZWcgc3RydWN0dXJlR1BSKQorICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdl
bmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKKyAgICAgICAgLCBt
X29wKG5vZGUub3AoKSkKKyAgICAgICAgLCBtX2FycmF5TW9kZShub2RlLmFycmF5TW9kZSgpKQor
ICAgICAgICAsIG1fc3RydWN0dXJlKG5vZGUub3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8g
bm9kZS5zdHJ1Y3R1cmUoKSA6IDApCisgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCisgICAg
ICAgICwgbV9wcm9wZXJ0eUdQUihwcm9wZXJ0eUdQUikKKyAgICAgICAgLCBtX3RlbXBHUFIodGVt
cEdQUikKKyAgICAgICAgLCBtX3N0cnVjdHVyZUdQUihzdHJ1Y3R1cmVHUFIpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9vcCA9PSBBcnJheWlmeSB8fCBtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1
cmUpOworICAgICAgICAKKyAgICAgICAgaml0LT5zaWxlbnRTcGlsbEFsbFJlZ2lzdGVyc0ltcGwo
ZmFsc2UsIG1fcGxhbnMsIEludmFsaWRHUFJSZWcpOworICAgICAgICAKKyAgICAgICAgaWYgKG1f
cHJvcGVydHlHUFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgc3dpdGNoIChtX2Fy
cmF5TW9kZS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAg
ICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGln
dW91czoKKyAgICAgICAgICAgICAgICBtX2JhZFByb3BlcnR5SnVtcCA9IGppdC0+c3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1w
ID0gaml0LT5zcGVjdWxhdGlvbkNoZWNrKEJhZEluZGV4aW5nVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwobV9iYXNlR1BSKSwgTm9Ob2RlKTsKKyAgICB9CisgICAgCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpCisgICAgewor
ICAgICAgICBsaW5rRnJvbShqaXQpOworICAgICAgICAKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0g
QXJyYXlpZnkgfHwgbV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChtX3Byb3BlcnR5R1BSICE9IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAobV9hcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MjoKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgICAgIGNhc2UgQXJy
YXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAgICAgICAgbV9iYWRQcm9wZXJ0eUp1bXAuZmlsbChq
aXQsIGppdC0+bV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIG1fcHJvcGVydHlHUFIsCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
aml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsKKyAgICAgICAgc3dpdGNoIChtX2FycmF5TW9k
ZS50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgICAgICBqaXQt
PmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlSW50MzIsIG1fdGVtcEdQUiwgbV9iYXNlR1BS
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAg
ICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlLCBtX3RlbXBH
UFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcnJheTo6
Q29udGlndW91czoKKyAgICAgICAgICAgIGlmIChtX2FycmF5TW9kZS5jb252ZXJzaW9uKCkgPT0g
QXJyYXk6OlJhZ2VDb252ZXJ0KQorICAgICAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihv
cGVyYXRpb25SYWdlRW5zdXJlQ29udGlndW91cywgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRp
b25FbnN1cmVDb250aWd1b3VzLCBtX3RlbXBHUFIsIG1fYmFzZUdQUik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgorICAgICAgICBjYXNlIEFy
cmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZSwgbV90ZW1wR1BSLCBtX2Jhc2VHUFIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBDUkFTSCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9wbGFucy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFu
c1tpXSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAKKyAgICAgICAgaWYgKG1fb3AgPT0gQXJy
YXlpZnlUb1N0cnVjdHVyZSkgeworICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAg
ICAgICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcC5maWxsKAorICAgICAgICAgICAgICAgIGpp
dCwgaml0LT5tX2ppdC5icmFuY2hXZWFrUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAg
ICAgICAgICAgIG1fc3RydWN0dXJlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBBbGFzLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUgc3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNw
aWxsaW5nIGRvZXMgbm90IHNhdmUKKyAgICAgICAgICAgIC8vIHRlbXBvcmFyaWVzLiBOb3Igd291
bGQgaXQgYmUgdXNlZnVsIGZvciBpdCB0byBkbyBzby4gRWl0aGVyIHdheSB3ZSdyZSB0YWxraW5n
CisgICAgICAgICAgICAvLyBhYm91dCBhIGxvYWQuCisgICAgICAgICAgICBqaXQtPm1faml0Lmxv
YWRQdHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGtpbmQg
b2YgYXJyYXkgc3RvcmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBpcyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBjaGVjaywgd2hpY2ggd2ls
bCByZXN1bHQgaW4gdGhlIAorICAgICAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJl
c3BvbmRpbmcgdG8gdGhpcyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgorICAgICAg
ICAgICAgLy8gVGhhdCdzIGZpbmUsIHNpbmNlIGFycmF5aWZpY2F0aW9uIGlzIG5vdCB1c2VyLXZp
c2libGUuCisgICAgICAgICAgICBqaXQtPm1faml0LmxvYWQ4KAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOworICAgICAgICAgICAgbV9iYWRJbmRleGlu
Z1R5cGVKdW1wLmZpbGwoCisgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53
YW50ZWRBcnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGp1bXBUbyhqaXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgTm9kZVR5cGUgbV9vcDsKKyAgICBBcnJheU1vZGUgbV9hcnJheU1vZGU7CisgICAgU3RydWN0
dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgIEdQUlJlZyBtX3By
b3BlcnR5R1BSOworICAgIEdQUlJlZyBtX3RlbXBHUFI7CisgICAgR1BSUmVnIG1fc3RydWN0dXJl
R1BSOworICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9iYWRQcm9wZXJ0eUp1bXA7CisgICAg
T1NSRXhpdEp1bXBQbGFjZWhvbGRlciBtX2JhZEluZGV4aW5nVHlwZUp1bXA7CisgICAgVmVjdG9y
PFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERG
R0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3JfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KworI2luY2x1ZGUgIkRGR0pJVENvbXBpbGVyLmgiCisjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVK
SVQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIE9TUkV4aXRK
dW1wUGxhY2Vob2xkZXI6OmZpbGwoSklUQ29tcGlsZXImIGppdCwgY29uc3QgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0JiBqdW1wcykKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47
CisgICAgaml0Lm1fZXhpdENvbXBpbGF0aW9uSW5mb1ttX2luZGV4XS5tX2ZhaWx1cmVKdW1wcyA9
IGp1bXBzOworfQorCit2b2lkIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI6OmZpbGwoU3BlY3VsYXRp
dmVKSVQqIGppdCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wcykKK3sKKyAg
ICBmaWxsKGppdC0+bV9qaXQsIGp1bXBzKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyX2gKKyNkZWZpbmUgREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlcl9oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCitjbGFzcyBKSVRDb21waWxlcjsKK2NsYXNzIFNwZWN1bGF0aXZlSklU
OworCitjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIHsKK3B1YmxpYzoKKyAgICBPU1JFeGl0
SnVtcFBsYWNlaG9sZGVyKCkKKyAgICAgICAgOiBtX2luZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVDsKKyAgICAKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyKHVu
c2lnbmVkIGluZGV4KQorICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgeworICAgIH0KKwor
cHVibGljOgorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KKyAgICAKKyAgICB2b2lkIGZp
bGwoSklUQ29tcGlsZXImLCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmKTsKKyAgICB2
b2lkIGZpbGwoU3BlY3VsYXRpdmVKSVQqLCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYg
Ly8gREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMzgzMDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CkBAIC0xMTksNiArMTIwLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hl
Y2soRXgKICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2Uu
aW5kZXgoKSwganVtcFRvRmFpbCk7CiB9CiAKK09TUkV4aXRKdW1wUGxhY2Vob2xkZXIgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4KQoreworICAgIGlmICghbV9jb21waWxl
T2theSkKKyAgICAgICAgcmV0dXJuIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoKTsKKyAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZk9T
UkV4aXRzKCk7CisgICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oKTsKKyAgICBtX2ppdC5jb2RlQmxv
Y2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0Lmdy
YXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCB0aGlzLCBt
X3N0cmVhbS0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIoaW5k
ZXgpOworfQorCitPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRn
ZSBub2RlVXNlKQoreworICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8
IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgIHJldHVybiBzcGVjdWxhdGlvbkNoZWNr
KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSk7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmIGp1bXBzVG9GYWlsKQogewogICAgIGlmICghbV9jb21waWxlT2theSkKQEAgLTU0
OCwxMSArNTY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUK
ICAgICB9CiAgICAgICAgIAogICAgIC8vIFdlIGNhbiBza2lwIGFsbCB0aGF0IGNvbWVzIG5leHQg
aWYgd2UgYWxyZWFkeSBoYXZlIGFycmF5IHN0b3JhZ2UuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IGRvbmU7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAg
IAogICAgIGlmIChub2RlLm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkVxdWFsLAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigKKyAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAogICAgICAgICAg
ICAgbm9kZS5zdHJ1Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7CkBAIC01NjIsNzcgKzU4MCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgICAgIG1faml0
LmxvYWQ4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAot
ICAgICAgICBkb25lID0ganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2Rl
LmFycmF5TW9kZSgpLCB0cnVlKTsKLSAgICB9Ci0gICAgICAgIAotICAgIC8vIElmIHdlJ3JlIGFs
bGVnZWRseSBjcmVhdGluZyBjb250aWd1b3VzIHN0b3JhZ2UgYW5kIHRoZSBpbmRleCBpcyBib2d1
cywgdGhlbgotICAgIC8vIGp1c3QgZG9uJ3QuCi0gICAgaWYgKHByb3BlcnR5UmVnICE9IEludmFs
aWRHUFJSZWcpIHsKLSAgICAgICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgpLnR5cGUoKSkgewot
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgot
ICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKLSAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKE1J
Tl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8v
IE5vdyBjYWxsIG91dCB0byBjcmVhdGUgdGhlIGFycmF5IHN0b3JhZ2UuCi0gICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnModGVtcEdQUik7Ci0gICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgpLnR5
cGUoKSkgewotICAgIGNhc2UgQXJyYXk6OkludDMyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkVuc3VyZUludDMyLCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVu
c3VyZURvdWJsZSwgdGVtcEdQUiwgYmFzZVJlZyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgIGlmIChub2RlLmFycmF5TW9kZSgpLmNvbnZlcnNp
b24oKSA9PSBBcnJheTo6UmFnZUNvbnZlcnQpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJhZ2VFbnN1cmVDb250aWd1b3VzLCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3Vz
LCB0ZW1wR1BSLCBiYXNlUmVnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6QXJy
YXlTdG9yYWdlOgotICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlLCB0ZW1wR1BSLCBiYXNl
UmVnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVk
QXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUuYXJyYXlNb2RlKCkpKTsKICAgICB9Ci0gICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycyh0ZW1wR1BSKTsKLSAgICAKLSAgICBpZiAobm9kZS5vcCgpID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAg
ICAgIEJhZEluZGV4aW5nVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAg
ICAgIG5vZGUuc3RydWN0dXJlKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBBbGFzLCB3
ZSBuZWVkIHRvIHJlbG9hZCB0aGUgc3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNwaWxsaW5nIGRv
ZXMgbm90IHNhdmUKLSAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2Vm
dWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAgICAgLy8g
YWJvdXQgYSBsb2FkLgotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgCi0gICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2
ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KLSAgICAg
ICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdo
aWNoIHdpbGwgcmVzdWx0IGluIHRoZSAKLSAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNv
cnJlc3BvbmRpbmcgdG8gdGhpcyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgotICAg
ICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlz
aWJsZS4KLSAgICAgICAgbV9qaXQubG9hZDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVHUFIpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgQmFk
SW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgTm9Ob2Rl
LAotICAgICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShzdHJ1Y3R1cmVHUFIs
IG5vZGUuYXJyYXlNb2RlKCkpKTsKLSAgICB9CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoYWRv
cHRQdHIobmV3IEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgIHNsb3dQYXRoLCB0
aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0dXJlR1BSKSkp
OwogICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIG5vUmVzdWx0KG1fY29tcGlsZUlu
ZGV4KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTM4MzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiREZHR2VuZXJhdGlvbkluZm8uaCIKICNpbmNsdWRlICJERkdKSVRDb21waWxlci5o
IgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0SnVtcFBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NpbGVu
dFJlZ2lzdGVyU2F2ZVBsYW4uaCIKICNpbmNsdWRlICJERkdWYWx1ZVNvdXJjZS5oIgpAQCAtMjQ0
NSw2ICsyNDQ2LDkgQEAgcHVibGljOgogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrIHdp
dGhvdXQgYWRkaXRpb25hbCByZWNvdmVyeS4KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhp
dEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVt
cFRvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBFZGdlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKTsKKyAgICAvLyBBZGQg
YSBzcGVjdWxhdGlvbiBjaGVjayB3aXRob3V0IGFkZGl0aW9uYWwgcmVjb3ZlcnksIGFuZCB3aXRo
IGEgcHJvbWlzZSB0byBzdXBwbHkgYSBqdW1wIGxhdGVyLgorICAgIE9TUkV4aXRKdW1wUGxhY2Vo
b2xkZXIgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4
KTsKKyAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQs
IEpTVmFsdWVTb3VyY2UsIEVkZ2UpOwogICAgIC8vIEFkZCBhIHNldCBvZiBzcGVjdWxhdGlvbiBj
aGVja3Mgd2l0aG91dCBhZGRpdGlvbmFsIHJlY292ZXJ5LgogICAgIHZvaWQgc3BlY3VsYXRpb25D
aGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsKICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2so
RXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIEVkZ2UsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYganVtcHNUb0ZhaWwpOwo=
</data>
<flag name="commit-queue"
          id="197784"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>