<?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>152512</bug_id>
          
          <creation_ts>2015-12-22 13:37:20 -0800</creation_ts>
          <short_desc>FTL B3 does not logicalNot correctly</short_desc>
          <delta_ts>2015-12-22 14:00: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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150957</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 13:37:20 -0800</bug_when>
    <thetext>It was doing bitNot, which for a 32-bit integer means that 1 turns into -2 and 0 turns into -1, both of which evaluate true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150959</commentid>
    <comment_count>1</comment_count>
      <attachid>267803</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 13:42:03 -0800</bug_when>
    <thetext>Created attachment 267803
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150960</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-22 13:42:51 -0800</bug_when>
    <thetext>Attachment 267803 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3Procedure.h:72:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLState.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150962</commentid>
    <comment_count>3</comment_count>
      <attachid>267804</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 13:44:01 -0800</bug_when>
    <thetext>Created attachment 267804
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150964</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-22 13:45:29 -0800</bug_when>
    <thetext>Attachment 267804 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3Procedure.h:72:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLState.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150967</commentid>
    <comment_count>5</comment_count>
      <attachid>267803</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-22 13:49:55 -0800</bug_when>
    <thetext>Comment on attachment 267803
the patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGCommon.h:41
&gt; +#define FTL_USES_B3 1

revert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150968</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-22 14:00:51 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194372</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267803</attachid>
            <date>2015-12-22 13:42:03 -0800</date>
            <delta_ts>2015-12-22 13:49:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29459</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBA
QAorMjAxNS0xMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBCMyBkb2VzIG5vdCBsb2dpY2FsTm90IGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTEyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdtIHdvcmtpbmcgb24gYSBidWcgd2hlcmUg
VjgvcmljaGFyZHMgZG9lcyBub3QgcnVuIGNvcnJlY3RseS4gSSBub3RpY2VkIHRoYXQgdGhlIGNv
ZGVnZW4gd2FzCisgICAgICAgIGRvaW5nIGEgbG9nIG9mIE5vdDMyJ3MgZm9sbG93ZWQgYnkgYnJh
bmNoZXMsIHdoaWNoIHNtZWxsZWQgbGlrZSBiYWRuZXNzLiBUbyBkZWJ1ZyB0aGlzLCBJCisgICAg
ICAgIG5lZWRlZCBCMydzIG9yaWdpbnMgdG8gZHVtcCBhcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBh
IGhleGVkIHBvaW50ZXIgdG8gYSBub2RlLiBUaGUgbm9kZSBpbmRleAorICAgICAgICB3b3VsZCBi
ZSBiZXR0ZXIuIFNvLCBJIGFkZGVkIHRoZSBub3Rpb24gb2YgYW4gb3JpZ2luIHByaW50ZXIgdG8g
UHJvY2VkdXJlLgorCisgICAgICAgIFRoZSBidWcgd2FzIGVhc3kgZW5vdWdoIHRvIGZpeC4gVGhp
cyBpbnRyb2R1Y2VzIE91dHB1dDo6bG9naWNhbE5vdCgpLiBJbiBMTFZNLCBpdCdzIHRoZSBzYW1l
CisgICAgICAgIGFzIGJpdE5vdCgpLiBJbiBCMywgaXQncyBjb21waWxlZCB0byBFcXVhbCh2YWx1
ZSwgMCkuIFdlIGNvdWxkIGhhdmUgYWxzbyBjb21waWxlZCBpdCB0bworICAgICAgICBCaXRYb3Io
dmFsdWUsIDEpLCBleGNlcHQgdGhhdCBCMyB3aWxsIHN0cmVuZ3RoLXJlZHVjZSB0byB0aGF0IGFu
eXdheSB3aGVuZXZlciBpdCdzIHNhZmUuIEl0J3MKKyAgICAgICAgc29ydCBvZiBuaWNlIHRoYXQg
cmlnaHQgbm93LCB5b3UgY291bGQgdXNlIGxvZ2ljYWxOb3QoKSBvbiBub24tYm9vbCB2YWx1ZXMg
YW5kIGdldCBDLWxpa2UKKyAgICAgICAgYmVoYXZpb3IuCisKKyAgICAgICAgUmljaGFyZHMgc3Rp
bGwgZG9lc24ndCBydW4sIHRob3VnaC4gVGhlcmUgYXJlIG1vcmUgYnVncyEKKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMv
QjNCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkJhc2ljQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpCMzo6QmFzaWNCbG9jazo6ZGVlcER1bXApOgorICAgICAgICAqIGIzL0Iz
QmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCMzo6QmFzaWNCbG9jazo6ZnJlcXVlbmN5KToK
KyAgICAgICAgKEpTQzo6QjM6OkRlZXBCYXNpY0Jsb2NrRHVtcDo6RGVlcEJhc2ljQmxvY2tEdW1w
KToKKyAgICAgICAgKEpTQzo6QjM6OkRlZXBCYXNpY0Jsb2NrRHVtcDo6ZHVtcCk6CisgICAgICAg
IChKU0M6OkIzOjpkZWVwRHVtcCk6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3JpZ2luLmg6CisgICAg
ICAgIChKU0M6OkIzOjpPcmlnaW46OmRhdGEpOgorICAgICAgICAqIGIzL0IzT3JpZ2luRHVtcC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6Ok9yaWdpbkR1bXA6Ok9yaWdpbkR1bXApOgorICAg
ICAgICAoSlNDOjpCMzo6T3JpZ2luRHVtcDo6ZHVtcCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1
cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjp+UHJvY2VkdXJlKToKKyAgICAg
ICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6cHJpbnRPcmlnaW4pOgorICAgICAgICAoSlNDOjpCMzo6
UHJvY2VkdXJlOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmR1bXAp
OgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1
cmU6OnNldE9yaWdpblByaW50ZXIpOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6VmFsdWU6OmR1bXBDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6ZGVlcER1bXApOgorICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OkRlZXBWYWx1ZUR1bXA6OkRlZXBWYWx1ZUR1bXApOgorICAgICAgICAoSlNDOjpCMzo6RGVlcFZh
bHVlRHVtcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpkZWVwRHVtcCk6CisgICAgICAgICog
ZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3QpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6Yml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvZ2ljYWxOb3Qp
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6CisgICAgICAgICogZnRsL0ZUTEIz
T3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphU2hyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmxTaHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3RsejMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzMyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0Ojpkb3VibGVFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVFcXVhbE9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVz
c1RoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW5PckVxdWFs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzWmVybzMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6Om5vdFplcm8zMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojph
ZGRJbmNvbWluZ1RvUGhpKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJpdENhc3QpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0Tm90KTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW5zdGFu
Y2VPZkN1c3RvbSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUNvdW50RXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9M
TFZNOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpp
c01pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmlzTm90Qm9v
bGVhbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6aXNCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjp1bmJveEJvb2xlYW4p
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmlzTm90VHlwZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlT2JqZWN0KToK
KyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojph
U2hyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxTaHIpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6Yml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvZ2ljYWxO
b3QpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aW5zZXJ0RWxlbWVudCk6CisgICAgICAg
ICogZnRsL0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgor
CiAyMDE1LTEyLTIyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBPdmVycmlkZXNIYXNJbnN0YW5jZSBmcm9tIFR5cGVJbmZvRmxhZ3MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQzNjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzczLDYgKzM3Myw3IEBACiAJCTBGNDg1MzJBMTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZEMENB
RDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi87IH07CiAJCTBGNEI5NERDMTdCOUYw
NzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVk
QXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0QzkxNjYxQzI5RjRGMjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0QzkxNjUxQzI5RjRG
MjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5oICovOyB9OwogCQkwRjRGMjlERjE4QjZBRDFDMDA1
N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RjI5REQxOEI2QUQx
QzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcCAq
LzsgfTsKIAkJMEY0RjI5RTAxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjRGMjlERTE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9u
Q291bnRFc3RpbWF0aW9uUGhhc2UuaCAqLzsgfTsKIAkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4
IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MEFGM0IxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVj
dHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9OwpAQCAtMjUwNiw2ICsyNTA3LDcgQEAKIAkJMEY0ODUz
MjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJlY292ZXJ5T3Bjb2RlLmg7IHBhdGggPSBmdGwvRlRMUmVj
b3ZlcnlPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0OTNBRjgxNkQw
Q0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVkQXJyYXlJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEM5MTY1MUMyOUY0RjIwMDQzNDFBNiAvKiBC
M09yaWdpbkR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcmlnaW5E
dW1wLmg7IHBhdGggPSBiMy9CM09yaWdpbkR1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0RjI5REQxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50
RXN0aW1hdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9E
RkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNEYyOURFMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVj
dXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oOyBwYXRoID0gZGZn
L0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RydWN0
dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzAxLDYgKzQ3MDMsNyBAQAogCQkJCTBG
RUM4NEQ4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM09wY29kZS5oICovLAogCQkJCTBGRUM4NEQ5MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM09yaWdpbi5jcHAgKi8sCiAJCQkJMEZFQzg0REExQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzT3JpZ2luLmggKi8sCisJCQkJMEY0QzkxNjUxQzI5RjRGMjAwNDM0MUE2IC8q
IEIzT3JpZ2luRHVtcC5oICovLAogCQkJCTBGRUM4NERCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Bh
dGNocG9pbnRTcGVjaWFsLmNwcCAqLywKIAkJCQkwRkVDODREQzFCREFDREFDMDA4MEZGNzQgLyog
QjNQYXRjaHBvaW50U3BlY2lhbC5oICovLAogCQkJCTBGRUM4NEREMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1BhdGNocG9pbnRWYWx1ZS5jcHAgKi8sCkBAIC02OTg2LDYgKzY5ODksNyBAQAogCQkJCTk2
OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzA5NEM0REYxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODBCMUFCM0Q4NTgwMEJCQjhFOCAvKiBC
eXRlY29kZUtpbGxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjRDOTE2NjFDMjlGNEYyMDA0MzQx
QTYgLyogQjNPcmlnaW5EdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMzE3QTlDMjRF
MDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjY2NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5
dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxMyArMTA4LDEz
IEBAIHZvaWQgQmFzaWNCbG9jazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSAKICAgICBvdXQucHJp
bnQoZHVtcFByZWZpeCwgbV9pbmRleCk7CiB9CiAKLXZvaWQgQmFzaWNCbG9jazo6ZGVlcER1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgQmFzaWNCbG9jazo6ZGVlcER1bXAoY29uc3Qg
UHJvY2VkdXJlJiBwcm9jLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmlu
dCgiQkIiLCAqdGhpcywgIjogOyBmcmVxdWVuY3kgPSAiLCBtX2ZyZXF1ZW5jeSwgIlxuIik7CiAg
ICAgaWYgKHByZWRlY2Vzc29ycygpLnNpemUoKSkKICAgICAgICAgb3V0LnByaW50KCIgIFByZWRl
Y2Vzc29yczogIiwgcG9pbnRlckxpc3REdW1wKHByZWRlY2Vzc29ycygpKSwgIlxuIik7CiAgICAg
Zm9yIChWYWx1ZSogdmFsdWUgOiAqdGhpcykKLSAgICAgICAgb3V0LnByaW50KCIgICAgIiwgQjM6
OmRlZXBEdW1wKHZhbHVlKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludCgiICAgICIsIEIzOjpk
ZWVwRHVtcChwcm9jLCB2YWx1ZSksICJcbiIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZnJlcXVl
bmN5KCkgY29uc3QgeyByZXR1cm4gbV9mcmVxdWVuY3k7IH0KIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwotICAgIHZvaWQgZGVlcER1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICB2b2lkIGRlZXBEdW1wKGNvbnN0IFByb2NlZHVyZSYsIFByaW50U3RyZWFtJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwpAQCAtMTMy
LDI2ICsxMzIsMjggQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVlcEJhc2ljQmxvY2tEdW1wIHsKIHB1
YmxpYzoKLSAgICBEZWVwQmFzaWNCbG9ja0R1bXAoY29uc3QgQmFzaWNCbG9jayogYmxvY2spCi0g
ICAgICAgIDogbV9ibG9jayhibG9jaykKKyAgICBEZWVwQmFzaWNCbG9ja0R1bXAoY29uc3QgUHJv
Y2VkdXJlJiBwcm9jLCBjb25zdCBCYXNpY0Jsb2NrKiBibG9jaykKKyAgICAgICAgOiBtX3Byb2Mo
cHJvYykKKyAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgIHsKICAgICB9CiAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2Jsb2Nr
KQotICAgICAgICAgICAgbV9ibG9jay0+ZGVlcER1bXAob3V0KTsKKyAgICAgICAgICAgIG1fYmxv
Y2stPmRlZXBEdW1wKG1fcHJvYywgb3V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3V0
LnByaW50KCI8bnVsbD4iKTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgY29uc3QgUHJvY2VkdXJl
JiBtX3Byb2M7CiAgICAgY29uc3QgQmFzaWNCbG9jayogbV9ibG9jazsKIH07CiAKLWlubGluZSBE
ZWVwQmFzaWNCbG9ja0R1bXAgZGVlcER1bXAoY29uc3QgQmFzaWNCbG9jayogYmxvY2spCitpbmxp
bmUgRGVlcEJhc2ljQmxvY2tEdW1wIGRlZXBEdW1wKGNvbnN0IFByb2NlZHVyZSYgcHJvYywgY29u
c3QgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgcmV0dXJuIERlZXBCYXNpY0Jsb2NrRHVtcChi
bG9jayk7CisgICAgcmV0dXJuIERlZXBCYXNpY0Jsb2NrRHVtcChwcm9jLCBibG9jayk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIsIGRlZXBEdW1w
KG1fdmFsdWUpLCAiOlxuIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5n
ICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAgICAgICAg
ICAgIGxvd2VyKCk7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCkBAIC0yMTQ3LDcgKzIx
NDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fdmFsdWUpLCAi
XG4iKTsKKyAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVt
cChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3JpZ2lu
LmgJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAorICAgIC8vIFlvdSBzaG91
bGQgYXZvaWQgdXNpbmcgdGhpcy4gVXNlIE9yaWdpbkR1bXAgaW5zdGVhZC4KICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcmlnaW5EdW1wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3JpZ2luRHVtcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3JpZ2luRHVtcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBCM09yaWdpbkR1bXBfaAorI2RlZmluZSBCM09yaWdpbkR1bXBfaAorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworI2luY2x1ZGUgIkIzT3JpZ2luLmgiCisjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIE9yaWdpbkR1bXAgewor
cHVibGljOgorICAgIE9yaWdpbkR1bXAoY29uc3QgUHJvY2VkdXJlJiBwcm9jLCBPcmlnaW4gb3Jp
Z2luKQorICAgICAgICA6IG1fcHJvYyhwcm9jKQorICAgICAgICAsIG1fb3JpZ2luKG9yaWdpbikK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cisg
ICAgeworICAgICAgICBtX3Byb2MucHJpbnRPcmlnaW4ob3V0LCBtX29yaWdpbik7CisgICAgfQor
Citwcml2YXRlOgorICAgIGNvbnN0IFByb2NlZHVyZSYgbV9wcm9jOworICAgIE9yaWdpbiBtX29y
aWdpbjsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKKworI2VuZGlmIC8vIEIzT3JpZ2luRHVtcF9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsMTQgQEAgUHJvY2VkdXJlOjp+UHJvY2VkdXJlKCkKIHsKIH0KIAordm9pZCBQcm9jZWR1
cmU6OnByaW50T3JpZ2luKFByaW50U3RyZWFtJiBvdXQsIE9yaWdpbiBvcmlnaW4pIGNvbnN0Cit7
CisgICAgaWYgKG1fb3JpZ2luUHJpbnRlcikKKyAgICAgICAgbV9vcmlnaW5QcmludGVyLT5ydW4o
b3V0LCBvcmlnaW4pOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KG9yaWdpbik7Cit9CisK
IEJhc2ljQmxvY2sqIFByb2NlZHVyZTo6YWRkQmxvY2soZG91YmxlIGZyZXF1ZW5jeSkKIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2sobV9ibG9j
a3Muc2l6ZSgpLCBmcmVxdWVuY3kpKTsKQEAgLTEyNiw3ICsxMzQsNyBAQCB2b2lkIFByb2NlZHVy
ZTo6aW52YWxpZGF0ZUNGRygpCiB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiAqdGhpcykKLSAgICAgICAg
b3V0LnByaW50KGRlZXBEdW1wKGJsb2NrKSk7CisgICAgICAgIG91dC5wcmludChkZWVwRHVtcCgq
dGhpcywgYmxvY2spKTsKICAgICBpZiAobV9ieXByb2R1Y3RzLT5jb3VudCgpKQogICAgICAgICBv
dXQucHJpbnQoKm1fYnlwcm9kdWN0cyk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5j
bHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02MCw2
ICs2MSwxNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvY2VkdXJlKCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgflByb2NlZHVyZSgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2FsbGJhY2s+CisgICAgdm9pZCBzZXRPcmlnaW5QcmludGVyKENhbGxiYWNrJiYgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBtX29yaWdpblByaW50ZXIgPSBjcmVhdGVTaGFyZWRUYXNrPHZv
aWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPigKKyAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxDYWxs
YmFjaz4oY2FsbGJhY2spKTsKKyAgICB9CisKKyAgICAvLyBVc3VhbGx5IHlvdSB1c2UgdGhpcyB2
aWEgT3JpZ2luRHVtcCwgdGhvdWdoIGl0J3MgY29vbCB0byB1c2UgaXQgZGlyZWN0bHkuCisgICAg
dm9pZCBwcmludE9yaWdpbihQcmludFN0cmVhbSYgb3V0LCBPcmlnaW4gb3JpZ2luKSBjb25zdDsK
KwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJhc2ljQmxvY2sqIGFkZEJsb2NrKGRvdWJsZSBmcmVx
dWVuY3kgPSAxKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KQEAgLTI2MSw2ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIG1fbGFzdFBoYXNlTmFtZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlQnlwcm9k
dWN0cz4gbV9ieXByb2R1Y3RzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBaXI6OkNvZGU+IG1fY29k
ZTsKKyAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1f
b3JpZ2luUHJpbnRlcjsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb250cm9sVmFs
dWUuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNPcmlnaW5EdW1w
LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTdGFja1Ns
b3RWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCkBAIC05OSw3ICsxMDAsNyBA
QCB2b2lkIFZhbHVlOjpkdW1wQ2hpbGRyZW4oQ29tbWFQcmludGVyJiBjCiAgICAgICAgIG91dC5w
cmludChjb21tYSwgcG9pbnRlckR1bXAoY2hpbGQpKTsKIH0KIAotdm9pZCBWYWx1ZTo6ZGVlcER1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgVmFsdWU6OmRlZXBEdW1wKGNvbnN0IFBy
b2NlZHVyZSYgcHJvYywgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQo
bV90eXBlLCAiICIsICp0aGlzLCAiID0gIiwgbV9vcGNvZGUpOwogCkBAIC0xMDgsNyArMTA5LDcg
QEAgdm9pZCBWYWx1ZTo6ZGVlcER1bXAoUHJpbnRTdHJlYW0mIG91dCkgYwogICAgIGR1bXBDaGls
ZHJlbihjb21tYSwgb3V0KTsKIAogICAgIGlmIChtX29yaWdpbikKLSAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBtX29yaWdpbik7CisgICAgICAgIG91dC5wcmludChjb21tYSwgT3JpZ2luRHVtcChw
cm9jLCBtX29yaWdpbikpOwogCiAgICAgZHVtcE1ldGEoY29tbWEsIG91dCk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXBsYWNlV2l0aE5vcCgpOwogCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7Ci0gICAgdm9pZCBkZWVwRHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OworICAgIHZvaWQgZGVlcER1bXAoY29uc3QgUHJvY2VkdXJlJiwgUHJpbnRTdHJlYW0mKSBjb25z
dDsKIAogICAgIC8vIFRoaXMgaXMgaG93IHlvdSBjYXN0IFZhbHVlcy4gRm9yIGV4YW1wbGUsIGlm
IHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBwcm92aWRlZCB0aGF0IHdlIGhhdmUgYQogICAgIC8v
IEFyZ3VtZW50UmVnVmFsdWUsIHlvdSBjYW4gZG86CkBAIC0zMTQsMjYgKzMxNCwyOCBAQCBwdWJs
aWM6CiAKIGNsYXNzIERlZXBWYWx1ZUR1bXAgewogcHVibGljOgotICAgIERlZXBWYWx1ZUR1bXAo
Y29uc3QgVmFsdWUqIHZhbHVlKQotICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgRGVlcFZh
bHVlRHVtcChjb25zdCBQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiB2YWx1ZSkKKyAgICAg
ICAgOiBtX3Byb2MocHJvYykKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9
CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAg
IGlmIChtX3ZhbHVlKQotICAgICAgICAgICAgbV92YWx1ZS0+ZGVlcER1bXAob3V0KTsKKyAgICAg
ICAgICAgIG1fdmFsdWUtPmRlZXBEdW1wKG1fcHJvYywgb3V0KTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4iKTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgY29u
c3QgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgY29uc3QgVmFsdWUqIG1fdmFsdWU7CiB9OwogCi1p
bmxpbmUgRGVlcFZhbHVlRHVtcCBkZWVwRHVtcChjb25zdCBWYWx1ZSogdmFsdWUpCitpbmxpbmUg
RGVlcFZhbHVlRHVtcCBkZWVwRHVtcChjb25zdCBQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRGVlcFZhbHVlRHVtcCh2YWx1ZSk7CisgICAgcmV0dXJu
IERlZXBWYWx1ZUR1bXAocHJvYywgdmFsdWUpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTk0
MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAv
LyBXZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhbiBleHBlcmltZW50YWwgdHJhbnNpdGlvbiBmcm9t
IExMVk0gdG8gQjMgYXMgdGhlIGJhY2tlbmQgZm9yIHRoZSBGVEwuIFdlIGRvbid0CiAvLyB5ZXQg
a25vdyBob3cgaXQgd2lsbCB0dXJuIG91dC4gRm9yIG5vdywgdGhpcyBmbGFnIHdpbGwgY29udHJv
bCB3aGV0aGVyIEZUTCB1c2VzIEIzLiBSZW1lbWJlciB0byBzZXQgdGhpcwogLy8gdG8gMCBiZWZv
cmUgY29tbWl0dGluZyEKLSNkZWZpbmUgRlRMX1VTRVNfQjMgMAorI2RlZmluZSBGVExfVVNFU19C
MyAxCiAKIHN0cnVjdCBOb2RlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEIzT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEIzT3V0cHV0LmNwcAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExCM091dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDE4IEBAIFN0
YWNrU2xvdFZhbHVlKiBPdXRwdXQ6OmxvY2tlZFN0YWNrU2xvdCgKICAgICByZXR1cm4gbV9ibG9j
ay0+YXBwZW5kTmV3PFN0YWNrU2xvdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBieXRlcywgU3Rh
Y2tTbG90S2luZDo6TG9ja2VkKTsKIH0KIAorTFZhbHVlIE91dHB1dDo6Yml0Tm90KExWYWx1ZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6Qml0WG9yLCBvcmlnaW4oKSwKKyAgICAgICAgdmFsdWUsCisgICAgICAgIG1fYmxvY2st
PmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlLT50eXBlKCksIC0xKSk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmxvZ2ljYWxOb3QoTFZhbHVlIHZhbHVlKQoreworICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3Jp
Z2luKCksIHZhbHVlLCBpbnQzMlplcm8pOworfQorCiBMVmFsdWUgT3V0cHV0Ojpsb2FkKFR5cGVk
UG9pbnRlciBwb2ludGVyLCBMVHlwZSB0eXBlKQogewogICAgIExWYWx1ZSBsb2FkID0gbV9ibG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHR5cGUsIG9yaWdpbigpLCBw
b2ludGVyLnZhbHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuaAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExC
M091dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAgcHVibGljOgogICAg
IExWYWx1ZSBhU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBsZWZ0LCBj
YXN0VG9JbnQzMihyaWdodCkpOyB9CiAgICAgTFZhbHVlIGxTaHIoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6WlNociwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KICAgICBMVmFs
dWUgYml0Tm90KExWYWx1ZSk7CisgICAgTFZhbHVlIGxvZ2ljYWxOb3QoTFZhbHVlKTsKIAogICAg
IExWYWx1ZSBjdGx6MzIoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNseiwgb3JpZ2luKCksIG9wZXJhbmQpOyB9CiAgICAg
TFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JB
U0goKTsgfQpAQCAtMzM1LDQ0ICszMzYsMTcgQEAgcHVibGljOgogICAgIExWYWx1ZSBsZXNzVGhh
bk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOyB9CiAKICAgICBMVmFsdWUgZG91YmxlRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlRXF1YWxP
clVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbE9yVW5vcmRlcmVkLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0K
ICAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc1RoYW4s
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVx
dWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpH
cmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVH
cmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlckVxdWFsLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsQW5kT3JkZXJl
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQotICAgIHsKLSAgICAgICAgTFZhbHVlIGVxdWFs
T3JVbm9yZGVyZWQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpF
cXVhbE9yVW5vcmRlcmVkLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwotICAgICAgICByZXR1cm4g
Yml0WG9yKGVxdWFsT3JVbm9yZGVyZWQsIGludDMyT25lKTsKLSAgICB9Ci0gICAgTFZhbHVlIGRv
dWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPigKLSAgICAgICAg
ICAgIG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxl
ZnQsIHJpZ2h0KSwKLSAgICAgICAgICAgIGludDMyWmVybyk7Ci0gICAgfQotICAgIExWYWx1ZSBk
b3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KAot
ICAgICAgICAgICAgbV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLAotICAgICAgICAgICAgbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlclRoYW4sIG9yaWdp
bigpLCBsZWZ0LCByaWdodCksCi0gICAgICAgICAgICBpbnQzMlplcm8pOwotICAgIH0KLSAgICBM
VmFsdWUgZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KAotICAgICAgICAgICAgbV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLAotICAgICAgICAgICAg
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpLAotICAgICAgICAgICAgaW50MzJaZXJvKTsKLSAgICB9Ci0gICAg
TFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4oCi0gICAgICAgICAgICBtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksCi0gICAg
ICAgICAgICBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzVGhh
biwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KSwKLSAgICAgICAgICAgIGludDMyWmVybyk7Ci0gICAg
fQorICAgIExWYWx1ZSBkb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVFcXVhbE9yVW5vcmRlcmVkKGxlZnQs
IHJpZ2h0KSk7IH0KKyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUdyZWF0ZXJUaGFu
T3JFcXVhbChsZWZ0LCByaWdodCkpOyB9CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JFcXVh
bE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxO
b3QoZG91YmxlR3JlYXRlclRoYW4obGVmdCwgcmlnaHQpKTsgfQorICAgIExWYWx1ZSBkb3VibGVH
cmVhdGVyVGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJu
IGxvZ2ljYWxOb3QoZG91YmxlTGVzc1RoYW5PckVxdWFsKGxlZnQsIHJpZ2h0KSk7IH0KKyAgICBM
VmFsdWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVMZXNzVGhhbihsZWZ0LCByaWdo
dCkpOyB9CiAKICAgICBMVmFsdWUgaXNaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZh
bHVlLCBpbnQzMlplcm8pOyB9CiAgICAgTFZhbHVlIG5vdFplcm8zMihMVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFs
LCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7IH0KQEAgLTU0MCwxMyArNTE0LDYgQEAgaW5s
aW5lIHZvaWQgT3V0cHV0OjphZGRJbmNvbWluZ1RvUGhpKExWYQogICAgIGFkZEluY29taW5nVG9Q
aGkocGhpLCB0aGVSZXN0Li4uKTsKIH0KIAotaW5saW5lIExWYWx1ZSBPdXRwdXQ6OmJpdE5vdChM
VmFsdWUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkJpdFhvciwgb3JpZ2luKCksCi0gICAgICAgIHZhbHVlLAotICAgICAgICBt
X2Jsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZS0+dHlwZSgp
LCAtMSkpOwotfQotCiBpbmxpbmUgTFZhbHVlIE91dHB1dDo6Yml0Q2FzdChMVmFsdWUgdmFsdWUs
IExUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IGludDY0IHx8
IHR5cGUgPT0gZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3MDAsNyArMjcwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUo
CiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAg
ICAgICAgICAgIG1fb3V0LmJpdE5vdChpc0FycmF5VHlwZShjZWxsLCBtX25vZGUtPmFycmF5TW9k
ZSgpKSkpOworICAgICAgICAgICAgbV9vdXQubG9naWNhbE5vdChpc0FycmF5VHlwZShjZWxsLCBt
X25vZGUtPmFycmF5TW9kZSgpKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KCkKQEAgLTQ4OTksNyArNDg5OSw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlTG9naWNhbE5vdCgpCiAgICAgewotICAgICAgICBzZXRCb29sZWFuKG1f
b3V0LmJpdE5vdChib29saWZ5KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIHNldEJvb2xl
YW4obV9vdXQubG9naWNhbE5vdChib29saWZ5KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgfQog
CiAgICAgdm9pZCBjb21waWxlQ2FsbE9yQ29uc3RydWN0KCkKQEAgLTYxNjgsNyArNjE2OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CiAKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5iaXROb3QobV9vdXQuZXF1
YWwobV9vdXQuY29uc3RJbnQzMigwKSwgdm1DYWxsKG1fb3V0LmludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSksIG1fY2FsbEZyYW1lLCB2YWx1ZSwgY29uc3Ry
dWN0b3IsIGhhc0luc3RhbmNlKSkpKTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5sb2dpY2Fs
Tm90KG1fb3V0LmVxdWFsKG1fb3V0LmNvbnN0SW50MzIoMCksIHZtQ2FsbChtX291dC5pbnQzMiwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20pLCBtX2NhbGxGcmFtZSwg
dmFsdWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZSkpKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZUNvdW50RXhlY3V0aW9uKCkKQEAgLTc2MzEsNyArNzYzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRv
dWJsZU5vdEVxdWFsQW5kT3JkZXJlZChsb3dEb3VibGUoZWRnZSksIG1fb3V0LmRvdWJsZVplcm8p
OwogICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6Ci0gICAgICAgICAgICByZXR1cm4gbV9v
dXQuYml0Tm90KAorICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoCiAgICAgICAg
ICAgICAgICAgZXF1YWxOdWxsT3JVbmRlZmluZWQoCiAgICAgICAgICAgICAgICAgICAgIGVkZ2Us
IENlbGxDYXNlU3BlY3VsYXRlc09iamVjdCwgU3BlY3VsYXRlTnVsbE9yVW5kZWZpbmVkLAogICAg
ICAgICAgICAgICAgICAgICBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKTsKQEAgLTkxMDQsNyAr
OTEwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlz
UHJvdmVuVmFsdWUodHlwZSwgU3BlY01pc2MpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
LSAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE5vdChpc05vdE1pc2ModmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoaXNOb3RNaXNjKHZhbHVlKSk7CiAgICAgfQogICAgIAog
ICAgIExWYWx1ZSBpc05vdEJvb2xlYW4oTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTkxMTksNyArOTExOSw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0Jvb2xl
YW4pKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmJp
dE5vdChpc05vdEJvb2xlYW4oanNWYWx1ZSkpOworICAgICAgICByZXR1cm4gbV9vdXQubG9naWNh
bE5vdChpc05vdEJvb2xlYW4oanNWYWx1ZSkpOwogICAgIH0KICAgICBMVmFsdWUgdW5ib3hCb29s
ZWFuKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKQEAgLTk0MTAsNyArOTQxMCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgTFZhbHVlIGlzTm90VHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbV9vdXQuYml0Tm90KGlzVHlwZShjZWxsLCB0eXBlKSk7Cisg
ICAgICAgIHJldHVybiBtX291dC5sb2dpY2FsTm90KGlzVHlwZShjZWxsLCB0eXBlKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDE5NDM2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGFTaHIoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRBU2hyKG1fYnVpbGRlciwgbGVmdCwgcmln
aHQpOyB9IC8vIGFyaXRobWV0aWMgPSBzaWduZWQKICAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBidWlsZExTaHIobV9idWlsZGVyLCBsZWZ0LCByaWdo
dCk7IH0gLy8gbG9naWNhbCA9IHVuc2lnbmVkCiAgICAgTFZhbHVlIGJpdE5vdChMVmFsdWUgdmFs
dWUpIHsgcmV0dXJuIGJ1aWxkTm90KG1fYnVpbGRlciwgdmFsdWUpOyB9CisgICAgTFZhbHVlIGxv
Z2ljYWxOb3QoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBiaXROb3QodmFsdWUpOyB9CiAgICAgCiAg
ICAgTFZhbHVlIGluc2VydEVsZW1lbnQoTFZhbHVlIHZlY3RvciwgTFZhbHVlIGVsZW1lbnQsIExW
YWx1ZSBpbmRleCkgeyByZXR1cm4gYnVpbGRJbnNlcnRFbGVtZW50KG1fYnVpbGRlciwgdmVjdG9y
LCBlbGVtZW50LCBpbmRleCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
dGF0ZS5jcHAJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBAQCBTdGF0ZTo6U3Rh
dGUoR3JhcGgmIGdyYXBoKQogCiAjaWYgRlRMX1VTRVNfQjMKICAgICBwcm9jID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisKKyAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAorICAg
ICAgICBbdGhpc10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CisgICAg
ICAgICAgICBvdXQucHJpbnQoIkRGRzoiLCBiaXR3aXNlX2Nhc3Q8Tm9kZSo+KG9yaWdpbi5kYXRh
KCkpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYgLy8gRlRMX1VTRVNfQjMKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267804</attachid>
            <date>2015-12-22 13:44:01 -0800</date>
            <delta_ts>2015-12-22 13:52:18 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30607</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxNS0xMi0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBCMyBkb2VzIG5vdCBsb2dpY2FsTm90IGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNTEyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSdtIHdvcmtpbmcgb24gYSBidWcgd2hlcmUg
VjgvcmljaGFyZHMgZG9lcyBub3QgcnVuIGNvcnJlY3RseS4gSSBub3RpY2VkIHRoYXQgdGhlIGNv
ZGVnZW4gd2FzCisgICAgICAgIGRvaW5nIGEgbG9nIG9mIE5vdDMyJ3MgZm9sbG93ZWQgYnkgYnJh
bmNoZXMsIHdoaWNoIHNtZWxsZWQgbGlrZSBiYWRuZXNzLiBUbyBkZWJ1ZyB0aGlzLCBJCisgICAg
ICAgIG5lZWRlZCBCMydzIG9yaWdpbnMgdG8gZHVtcCBhcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBh
IGhleGVkIHBvaW50ZXIgdG8gYSBub2RlLiBUaGUgbm9kZSBpbmRleAorICAgICAgICB3b3VsZCBi
ZSBiZXR0ZXIuIFNvLCBJIGFkZGVkIHRoZSBub3Rpb24gb2YgYW4gb3JpZ2luIHByaW50ZXIgdG8g
UHJvY2VkdXJlLgorCisgICAgICAgIFRoZSBidWcgd2FzIGVhc3kgZW5vdWdoIHRvIGZpeC4gVGhp
cyBpbnRyb2R1Y2VzIE91dHB1dDo6bG9naWNhbE5vdCgpLiBJbiBMTFZNLCBpdCdzIHRoZSBzYW1l
CisgICAgICAgIGFzIGJpdE5vdCgpLiBJbiBCMywgaXQncyBjb21waWxlZCB0byBFcXVhbCh2YWx1
ZSwgMCkuIFdlIGNvdWxkIGhhdmUgYWxzbyBjb21waWxlZCBpdCB0bworICAgICAgICBCaXRYb3Io
dmFsdWUsIDEpLCBleGNlcHQgdGhhdCBCMyB3aWxsIHN0cmVuZ3RoLXJlZHVjZSB0byB0aGF0IGFu
eXdheSB3aGVuZXZlciBpdCdzIHNhZmUuIEl0J3MKKyAgICAgICAgc29ydCBvZiBuaWNlIHRoYXQg
cmlnaHQgbm93LCB5b3UgY291bGQgdXNlIGxvZ2ljYWxOb3QoKSBvbiBub24tYm9vbCB2YWx1ZXMg
YW5kIGdldCBDLWxpa2UKKyAgICAgICAgYmVoYXZpb3IuCisKKyAgICAgICAgUmljaGFyZHMgc3Rp
bGwgZG9lc24ndCBydW4sIHRob3VnaC4gVGhlcmUgYXJlIG1vcmUgYnVncyEKKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMv
QjNCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkJhc2ljQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpCMzo6QmFzaWNCbG9jazo6ZGVlcER1bXApOgorICAgICAgICAqIGIzL0Iz
QmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCMzo6QmFzaWNCbG9jazo6ZnJlcXVlbmN5KToK
KyAgICAgICAgKEpTQzo6QjM6OkRlZXBCYXNpY0Jsb2NrRHVtcDo6RGVlcEJhc2ljQmxvY2tEdW1w
KToKKyAgICAgICAgKEpTQzo6QjM6OkRlZXBCYXNpY0Jsb2NrRHVtcDo6ZHVtcCk6CisgICAgICAg
IChKU0M6OkIzOjpkZWVwRHVtcCk6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3JpZ2luLmg6CisgICAg
ICAgIChKU0M6OkIzOjpPcmlnaW46OmRhdGEpOgorICAgICAgICAqIGIzL0IzT3JpZ2luRHVtcC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6Ok9yaWdpbkR1bXA6Ok9yaWdpbkR1bXApOgorICAg
ICAgICAoSlNDOjpCMzo6T3JpZ2luRHVtcDo6ZHVtcCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1
cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjp+UHJvY2VkdXJlKToKKyAgICAg
ICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6cHJpbnRPcmlnaW4pOgorICAgICAgICAoSlNDOjpCMzo6
UHJvY2VkdXJlOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmR1bXAp
OgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1
cmU6OnNldE9yaWdpblByaW50ZXIpOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6VmFsdWU6OmR1bXBDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZTo6ZGVlcER1bXApOgorICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OkRlZXBWYWx1ZUR1bXA6OkRlZXBWYWx1ZUR1bXApOgorICAgICAgICAoSlNDOjpCMzo6RGVlcFZh
bHVlRHVtcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkIzOjpkZWVwRHVtcCk6CisgICAgICAgICog
ZnRsL0ZUTEIzT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvY2tlZFN0
YWNrU2xvdCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXROb3QpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6bG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpsb2FkKToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFTaHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bFNocik6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjdGx6MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6YWRkV2l0aE92ZXJmbG93MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1Ro
YW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbik6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6ZG91YmxlR3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91Ymxl
R3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5v
dEVxdWFsQW5kT3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNz
VGhhbk9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxlc3NU
aGFuT3JFcXVhbE9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJs
ZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6aXNaZXJvMzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzMyKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZEluY29taW5nVG9QaGkpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6Yml0Q2FzdCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpi
aXROb3QpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQXJyYXkp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExW
TTo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ291bnRFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmJvb2xpZnkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmlzTWlzYyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvTExWTTo6aXNOb3RCb29sZWFuKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjppc0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06OnVuYm94Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6aXNOb3RUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3QpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuaDoK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFTaHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6bFNocik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXROb3QpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjppbnNlcnRFbGVtZW50KToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisKIDIwMTUtMTItMjIgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIE92ZXJyaWRlc0hhc0lu
c3RhbmNlIGZyb20gVHlwZUluZm9GbGFncwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiAr
MzczLDcgQEAKIAkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4NTMy
NjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUw
OEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVy
LmNwcCAqLzsgfTsKIAkJMEY0Qjk0REMxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRC
OTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjRDOTE2NjFDMjlGNEYyMDA0
MzQxQTYgLyogQjNPcmlnaW5EdW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRDOTE2NTFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1wLmgg
Ki87IH07CiAJCTBGNEYyOURGMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25D
b3VudEVzdGltYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRGMjlERDE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0
aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwICovOyB9OwogCQkwRjRGMjlFMDE4QjZBRDFDMDA1
N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEYyOURFMThCNkFEMUMw
MDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oICovOyB9
OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUwQUYz
QjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi87IH07CkBA
IC0yNTA2LDYgKzI1MDcsNyBAQAogCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVj
b3ZlcnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3Zl
cnlPcGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRCOTREQjE3QjlGMDc1MDBE
RDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0QzkxNjUxQzI5RjRGMjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM09yaWdpbkR1bXAuaDsgcGF0aCA9IGIzL0IzT3JpZ2luRHVt
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRGMjlERDE4QjZBRDFDMDA1N0JD
MTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1h
dGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RjI5REUxOEI2
QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50
RXN0aW1hdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRm
Zy9ERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ3MDEsNiArNDcwMyw3IEBACiAJCQkJMEZFQzg0RDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
T3Bjb2RlLmggKi8sCiAJCQkJMEZFQzg0RDkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3JpZ2luLmNw
cCAqLywKIAkJCQkwRkVDODREQTFCREFDREFDMDA4MEZGNzQgLyogQjNPcmlnaW4uaCAqLywKKwkJ
CQkwRjRDOTE2NTFDMjlGNEYyMDA0MzQxQTYgLyogQjNPcmlnaW5EdW1wLmggKi8sCiAJCQkJMEZF
Qzg0REIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFNwZWNpYWwuY3BwICovLAogCQkJ
CTBGRUM4NERDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRTcGVjaWFsLmggKi8sCiAJ
CQkJMEZFQzg0REQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCAqLywK
QEAgLTY5ODYsNiArNjk4OSw3IEBACiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDk0QzRERjFBRTQzOTUzMDA0
MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyREQ4MEIxQUIzRDg1ODAwQkJCOEU4IC8qIEJ5dGVjb2RlS2lsbHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNEM5MTY2MUMyOUY0RjIwMDQzNDFBNiAvKiBCM09yaWdpbkR1bXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAv
KiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAx
OTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgdm9pZCBCYXNpY0Jsb2NrOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIAogICAgIG91dC5wcmludChkdW1wUHJlZml4LCBtX2luZGV4KTsKIH0K
IAotdm9pZCBCYXNpY0Jsb2NrOjpkZWVwRHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9p
ZCBCYXNpY0Jsb2NrOjpkZWVwRHVtcChjb25zdCBQcm9jZWR1cmUmIHByb2MsIFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJCQiIsICp0aGlzLCAiOiA7IGZyZXF1ZW5j
eSA9ICIsIG1fZnJlcXVlbmN5LCAiXG4iKTsKICAgICBpZiAocHJlZGVjZXNzb3JzKCkuc2l6ZSgp
KQogICAgICAgICBvdXQucHJpbnQoIiAgUHJlZGVjZXNzb3JzOiAiLCBwb2ludGVyTGlzdER1bXAo
cHJlZGVjZXNzb3JzKCkpLCAiXG4iKTsKICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICp0aGlzKQot
ICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBCMzo6ZGVlcER1bXAodmFsdWUpLCAiXG4iKTsKKyAg
ICAgICAgb3V0LnByaW50KCIgICAgIiwgQjM6OmRlZXBEdW1wKHByb2MsIHZhbHVlKSwgIlxuIik7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTk0MzY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcg
QEAgcHVibGljOgogICAgIGRvdWJsZSBmcmVxdWVuY3koKSBjb25zdCB7IHJldHVybiBtX2ZyZXF1
ZW5jeTsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgdm9pZCBk
ZWVwRHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZGVlcER1bXAoY29uc3QgUHJv
Y2VkdXJlJiwgUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQ7CkBAIC0xMzIsMjYgKzEzMiwyOCBAQCBwcml2YXRlOgogCiBj
bGFzcyBEZWVwQmFzaWNCbG9ja0R1bXAgewogcHVibGljOgotICAgIERlZXBCYXNpY0Jsb2NrRHVt
cChjb25zdCBCYXNpY0Jsb2NrKiBibG9jaykKLSAgICAgICAgOiBtX2Jsb2NrKGJsb2NrKQorICAg
IERlZXBCYXNpY0Jsb2NrRHVtcChjb25zdCBQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEJhc2ljQmxv
Y2sqIGJsb2NrKQorICAgICAgICA6IG1fcHJvYyhwcm9jKQorICAgICAgICAsIG1fYmxvY2soYmxv
Y2spCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgIHsKICAgICAgICAgaWYgKG1fYmxvY2spCi0gICAgICAgICAgICBtX2Jsb2NrLT5kZWVw
RHVtcChvdXQpOworICAgICAgICAgICAgbV9ibG9jay0+ZGVlcER1bXAobV9wcm9jLCBvdXQpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIpOwogICAgIH0KIAog
cHJpdmF0ZToKKyAgICBjb25zdCBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBjb25zdCBCYXNpY0Js
b2NrKiBtX2Jsb2NrOwogfTsKIAotaW5saW5lIERlZXBCYXNpY0Jsb2NrRHVtcCBkZWVwRHVtcChj
b25zdCBCYXNpY0Jsb2NrKiBibG9jaykKK2lubGluZSBEZWVwQmFzaWNCbG9ja0R1bXAgZGVlcER1
bXAoY29uc3QgUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAg
ICByZXR1cm4gRGVlcEJhc2ljQmxvY2tEdW1wKGJsb2NrKTsKKyAgICByZXR1cm4gRGVlcEJhc2lj
QmxvY2tEdW1wKHByb2MsIGJsb2NrKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24g
MTk0MzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0
PigpKTsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiTG93ZXJpbmcgIiwgZGVlcER1bXAobV92YWx1ZSksICI6XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgZGVlcER1bXAobV9wcm9jZWR1cmUsIG1f
dmFsdWUpLCAiOlxuIik7CiAgICAgICAgICAgICAgICAgbG93ZXIoKTsKICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBt
X2luc3RzLmxhc3QoKSkKQEAgLTIxNDcsNyArMjE0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3Qg
bG93ZXIgIiwgZGVlcER1bXAobV92YWx1ZSksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJGQVRB
TDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIlxu
Iik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcmlnaW4uaAkocmV2aXNpb24gMTk0MzY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCisgICAgLy8gWW91IHNob3VsZCBhdm9pZCB1c2luZyB0aGlzLiBVc2UgT3Jp
Z2luRHVtcCBpbnN0ZWFkLgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09yaWdpbkR1bXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcmlnaW5EdW1wLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcmlnaW5EdW1wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzT3JpZ2luRHVtcF9oCisjZGVmaW5lIEIz
T3JpZ2luRHVtcF9oCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNPcmlnaW4u
aCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKKworY2xhc3MgT3JpZ2luRHVtcCB7CitwdWJsaWM6CisgICAgT3JpZ2luRHVtcChjb25z
dCBQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4pCisgICAgICAgIDogbV9wcm9jKHByb2Mp
CisgICAgICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJvYy5wcmludE9y
aWdpbihvdXQsIG1fb3JpZ2luKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgUHJvY2Vk
dXJlJiBtX3Byb2M7CisgICAgT3JpZ2luIG1fb3JpZ2luOworfTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNPcmln
aW5EdW1wX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3Bw
CShyZXZpc2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxNCBAQCBQcm9jZWR1cmU6On5Qcm9j
ZWR1cmUoKQogewogfQogCit2b2lkIFByb2NlZHVyZTo6cHJpbnRPcmlnaW4oUHJpbnRTdHJlYW0m
IG91dCwgT3JpZ2luIG9yaWdpbikgY29uc3QKK3sKKyAgICBpZiAobV9vcmlnaW5QcmludGVyKQor
ICAgICAgICBtX29yaWdpblByaW50ZXItPnJ1bihvdXQsIG9yaWdpbik7CisgICAgZWxzZQorICAg
ICAgICBvdXQucHJpbnQob3JpZ2luKTsKK30KKwogQmFzaWNCbG9jayogUHJvY2VkdXJlOjphZGRC
bG9jayhkb3VibGUgZnJlcXVlbmN5KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2Nr
PiBibG9jayhuZXcgQmFzaWNCbG9jayhtX2Jsb2Nrcy5zaXplKCksIGZyZXF1ZW5jeSkpOwpAQCAt
MTI2LDcgKzEzNCw3IEBAIHZvaWQgUHJvY2VkdXJlOjppbnZhbGlkYXRlQ0ZHKCkKIHZvaWQgUHJv
Y2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6ICp0aGlzKQotICAgICAgICBvdXQucHJpbnQoZGVlcER1bXAoYmxvY2spKTsK
KyAgICAgICAgb3V0LnByaW50KGRlZXBEdW1wKCp0aGlzLCBibG9jaykpOwogICAgIGlmIChtX2J5
cHJvZHVjdHMtPmNvdW50KCkpCiAgICAgICAgIG91dC5wcmludCgqbV9ieXByb2R1Y3RzKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAxOTQz
NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTYwLDYgKzYxLDE2IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBQcm9jZWR1cmUoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+UHJvY2Vk
dXJlKCk7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KKyAgICB2b2lkIHNldE9y
aWdpblByaW50ZXIoQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG1fb3JpZ2lu
UHJpbnRlciA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+KAor
ICAgICAgICAgICAgc3RkOjpmb3J3YXJkPENhbGxiYWNrPihjYWxsYmFjaykpOworICAgIH0KKwor
ICAgIC8vIFVzdWFsbHkgeW91IHVzZSB0aGlzIHZpYSBPcmlnaW5EdW1wLCB0aG91Z2ggaXQncyBj
b29sIHRvIHVzZSBpdCBkaXJlY3RseS4KKyAgICB2b2lkIHByaW50T3JpZ2luKFByaW50U3RyZWFt
JiBvdXQsIE9yaWdpbiBvcmlnaW4pIGNvbnN0OworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmFz
aWNCbG9jayogYWRkQmxvY2soZG91YmxlIGZyZXF1ZW5jeSA9IDEpOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtMjYxLDYg
KzI3Miw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhhc2VOYW1lOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBtX2J5cHJvZHVjdHM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFpcjo6Q29kZT4gbV9jb2RlOworICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CShyZXZpc2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCM0NDYWxsVmFs
dWUuaCIKICNpbmNsdWRlICJCM0NvbnRyb2xWYWx1ZS5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFs
dWUuaCIKKyNpbmNsdWRlICJCM09yaWdpbkR1bXAuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJCM1N0YWNrU2xvdFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNVcHNp
bG9uVmFsdWUuaCIKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgVmFsdWU6OmR1bXBDaGlsZHJlbihD
b21tYVByaW50ZXImIGMKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChjaGls
ZCkpOwogfQogCi12b2lkIFZhbHVlOjpkZWVwRHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
dm9pZCBWYWx1ZTo6ZGVlcER1bXAoY29uc3QgUHJvY2VkdXJlJiBwcm9jLCBQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewogICAgIG91dC5wcmludChtX3R5cGUsICIgIiwgKnRoaXMsICIgPSAiLCBt
X29wY29kZSk7CiAKQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lkIFZhbHVlOjpkZWVwRHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjCiAgICAgZHVtcENoaWxkcmVuKGNvbW1hLCBvdXQpOwogCiAgICAgaWYg
KG1fb3JpZ2luKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsIG1fb3JpZ2luKTsKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCBPcmlnaW5EdW1wKHByb2MsIG1fb3JpZ2luKSk7CiAKICAgICBkdW1w
TWV0YShjb21tYSwgb3V0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShy
ZXZpc2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcGxhY2VX
aXRoTm9wKCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICB2b2lk
IGRlZXBEdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBkZWVwRHVtcChjb25zdCBQ
cm9jZWR1cmUmLCBQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBpcyBob3cgeW91
IGNhc3QgVmFsdWVzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIHBy
b3ZpZGVkIHRoYXQgd2UgaGF2ZSBhCiAgICAgLy8gQXJndW1lbnRSZWdWYWx1ZSwgeW91IGNhbiBk
bzoKQEAgLTMxNCwyNiArMzE0LDI4IEBAIHB1YmxpYzoKIAogY2xhc3MgRGVlcFZhbHVlRHVtcCB7
CiBwdWJsaWM6Ci0gICAgRGVlcFZhbHVlRHVtcChjb25zdCBWYWx1ZSogdmFsdWUpCi0gICAgICAg
IDogbV92YWx1ZSh2YWx1ZSkKKyAgICBEZWVwVmFsdWVEdW1wKGNvbnN0IFByb2NlZHVyZSYgcHJv
YywgY29uc3QgVmFsdWUqIHZhbHVlKQorICAgICAgICA6IG1fcHJvYyhwcm9jKQorICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fdmFsdWUpCi0gICAgICAgICAgICBt
X3ZhbHVlLT5kZWVwRHVtcChvdXQpOworICAgICAgICAgICAgbV92YWx1ZS0+ZGVlcER1bXAobV9w
cm9jLCBvdXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIp
OwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBjb25zdCBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBj
b25zdCBWYWx1ZSogbV92YWx1ZTsKIH07CiAKLWlubGluZSBEZWVwVmFsdWVEdW1wIGRlZXBEdW1w
KGNvbnN0IFZhbHVlKiB2YWx1ZSkKK2lubGluZSBEZWVwVmFsdWVEdW1wIGRlZXBEdW1wKGNvbnN0
IFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIHZhbHVlKQogewotICAgIHJldHVybiBEZWVw
VmFsdWVEdW1wKHZhbHVlKTsKKyAgICByZXR1cm4gRGVlcFZhbHVlRHVtcChwcm9jLCB2YWx1ZSk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExCM091dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExCM091dHB1dC5jcHAJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
NywxOCBAQCBTdGFja1Nsb3RWYWx1ZSogT3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3QoCiAgICAgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxTdGFja1Nsb3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
Ynl0ZXMsIFN0YWNrU2xvdEtpbmQ6OkxvY2tlZCk7CiB9CiAKK0xWYWx1ZSBPdXRwdXQ6OmJpdE5v
dChMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFs
dWU+KG1fcHJvYywgQjM6OkJpdFhvciwgb3JpZ2luKCksCisgICAgICAgIHZhbHVlLAorICAgICAg
ICBtX2Jsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZS0+dHlw
ZSgpLCAtMSkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpsb2dpY2FsTm90KExWYWx1ZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsKK30KKwogTFZhbHVlIE91dHB1dDo6
bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgdHlwZSkKIHsKICAgICBMVmFsdWUgbG9h
ZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCB0eXBlLCBv
cmlnaW4oKSwgcG9pbnRlci52YWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQjNPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEIzT3V0cHV0LmgJKHJldmlzaW9uIDE5NDM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIHB1
YmxpYzoKICAgICBMVmFsdWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTU2hyLCBvcmlnaW4o
KSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsgfQogICAgIExWYWx1ZSBsU2hyKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OlpTaHIsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOyB9
CiAgICAgTFZhbHVlIGJpdE5vdChMVmFsdWUpOworICAgIExWYWx1ZSBsb2dpY2FsTm90KExWYWx1
ZSk7CiAKICAgICBMVmFsdWUgY3RsejMyKExWYWx1ZSBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDbHosIG9yaWdpbigpLCBvcGVyYW5k
KTsgfQogICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IENSQVNIKCk7IH0KQEAgLTMzNSw0NCArMzM2LDE3IEBAIHB1YmxpYzoKICAgICBMVmFs
dWUgbGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsgfQogCiAgICAgTFZhbHVlIGRvdWJsZUVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRv
dWJsZUVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWxPclVub3JkZXJl
ZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUxl
c3NUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzRXF1YWwsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW4oTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6R3JlYXRlclRoYW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFs
dWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJF
cXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVOb3RFcXVh
bEFuZE9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKLSAgICB7Ci0gICAgICAgIExW
YWx1ZSBlcXVhbE9yVW5vcmRlcmVkID0gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6RXF1YWxPclVub3JkZXJlZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAgICAg
ICAgcmV0dXJuIGJpdFhvcihlcXVhbE9yVW5vcmRlcmVkLCBpbnQzMk9uZSk7Ci0gICAgfQotICAg
IExWYWx1ZSBkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
Ci0gICAgICAgICAgICBtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksCi0gICAgICAgICAgICBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVyRXF1YWwsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCksCi0gICAgICAgICAgICBpbnQzMlplcm8pOwotICAgIH0KLSAg
ICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPigKLSAgICAgICAgICAgIG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwKLSAgICAg
ICAgICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJU
aGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpLAotICAgICAgICAgICAgaW50MzJaZXJvKTsKLSAg
ICB9Ci0gICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPigKLSAgICAgICAgICAgIG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwKLSAg
ICAgICAgICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NF
cXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KSwKLSAgICAgICAgICAgIGludDMyWmVybyk7Ci0g
ICAgfQotICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KAotICAgICAgICAgICAgbV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdp
bigpLAotICAgICAgICAgICAgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6TGVzc1RoYW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCksCi0gICAgICAgICAgICBpbnQzMlpl
cm8pOwotICAgIH0KKyAgICBMVmFsdWUgZG91YmxlTm90RXF1YWxBbmRPcmRlcmVkKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlRXF1YWxPclVub3Jk
ZXJlZChsZWZ0LCByaWdodCkpOyB9CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JVbm9yZGVy
ZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVH
cmVhdGVyVGhhbk9yRXF1YWwobGVmdCwgcmlnaHQpKTsgfQorICAgIExWYWx1ZSBkb3VibGVMZXNz
VGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVy
biBsb2dpY2FsTm90KGRvdWJsZUdyZWF0ZXJUaGFuKGxlZnQsIHJpZ2h0KSk7IH0KKyAgICBMVmFs
dWUgZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NUaGFuT3JFcXVhbChsZWZ0LCByaWdodCkp
OyB9CisgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlTGVzc1RoYW4o
bGVmdCwgcmlnaHQpKTsgfQogCiAgICAgTFZhbHVlIGlzWmVybzMyKExWYWx1ZSB2YWx1ZSkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9y
aWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQogICAgIExWYWx1ZSBub3RaZXJvMzIoTFZhbHVl
IHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpOb3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQzMlplcm8pOyB9CkBAIC01NDAsMTMgKzUx
NCw2IEBAIGlubGluZSB2b2lkIE91dHB1dDo6YWRkSW5jb21pbmdUb1BoaShMVmEKICAgICBhZGRJ
bmNvbWluZ1RvUGhpKHBoaSwgdGhlUmVzdC4uLik7CiB9CiAKLWlubGluZSBMVmFsdWUgT3V0cHV0
OjpiaXROb3QoTFZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRYb3IsIG9yaWdpbigpLAotICAgICAgICB2YWx1ZSwK
LSAgICAgICAgbV9ibG9jay0+YXBwZW5kSW50Q29uc3RhbnQobV9wcm9jLCBvcmlnaW4oKSwgdmFs
dWUtPnR5cGUoKSwgLTEpKTsKLX0KLQogaW5saW5lIExWYWx1ZSBPdXRwdXQ6OmJpdENhc3QoTFZh
bHVlIHZhbHVlLCBMVHlwZSB0eXBlKQogewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9
PSBpbnQ2NCB8fCB0eXBlID09IGRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDM2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzAwLDcgKzI3MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
c3BlY3VsYXRlKAogICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2Vs
bCksIDAsCi0gICAgICAgICAgICBtX291dC5iaXROb3QoaXNBcnJheVR5cGUoY2VsbCwgbV9ub2Rl
LT5hcnJheU1vZGUoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmxvZ2ljYWxOb3QoaXNBcnJheVR5
cGUoY2VsbCwgbV9ub2RlLT5hcnJheU1vZGUoKSkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBp
bGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCkBAIC00ODk5LDcgKzQ4OTksNyBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgY29tcGlsZUxvZ2ljYWxOb3QoKQogICAgIHsKLSAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5iaXROb3QoYm9vbGlmeShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0LmxvZ2ljYWxOb3QoYm9vbGlmeShtX25vZGUtPmNoaWxkMSgpKSkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUNhbGxPckNvbnN0cnVjdCgpCkBAIC02MTY4LDcg
KzYxNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHNldEJvb2xlYW4obV9vdXQuYml0Tm90
KG1fb3V0LmVxdWFsKG1fb3V0LmNvbnN0SW50MzIoMCksIHZtQ2FsbChtX291dC5pbnQzMiwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20pLCBtX2NhbGxGcmFtZSwgdmFs
dWUsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZSkpKSk7CisgICAgICAgIHNldEJvb2xlYW4obV9v
dXQubG9naWNhbE5vdChtX291dC5lcXVhbChtX291dC5jb25zdEludDMyKDApLCB2bUNhbGwobV9v
dXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tKSwgbV9j
YWxsRnJhbWUsIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2UpKSkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVDb3VudEV4ZWN1dGlvbigpCkBAIC03NjMxLDcgKzc2MzEsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIHJldHVy
biBtX291dC5kb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQobG93RG91YmxlKGVkZ2UpLCBtX291dC5k
b3VibGVaZXJvKTsKICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgotICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmJpdE5vdCgKKyAgICAgICAgICAgIHJldHVybiBtX291dC5sb2dpY2FsTm90
KAogICAgICAgICAgICAgICAgIGVxdWFsTnVsbE9yVW5kZWZpbmVkKAogICAgICAgICAgICAgICAg
ICAgICBlZGdlLCBDZWxsQ2FzZVNwZWN1bGF0ZXNPYmplY3QsIFNwZWN1bGF0ZU51bGxPclVuZGVm
aW5lZCwKICAgICAgICAgICAgICAgICAgICAgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CkBA
IC05MTA0LDcgKzkxMDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBw
cm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIFNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVy
biBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC5iaXROb3QoaXNOb3RNaXNjKHZhbHVlKSk7
CisgICAgICAgIHJldHVybiBtX291dC5sb2dpY2FsTm90KGlzTm90TWlzYyh2YWx1ZSkpOwogICAg
IH0KICAgICAKICAgICBMVmFsdWUgaXNOb3RCb29sZWFuKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkBAIC05MTE5LDcgKzkxMTksNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUs
IFNwZWNCb29sZWFuKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVy
biBtX291dC5iaXROb3QoaXNOb3RCb29sZWFuKGpzVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LmxvZ2ljYWxOb3QoaXNOb3RCb29sZWFuKGpzVmFsdWUpKTsKICAgICB9CiAgICAgTFZhbHVl
IHVuYm94Qm9vbGVhbihMVmFsdWUganNWYWx1ZSkKICAgICB7CkBAIC05NDEwLDcgKzk0MTAsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIExWYWx1ZSBpc05vdFR5cGUoTFZhbHVlIGNlbGwsIEpTVHlw
ZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE5vdChpc1R5cGUoY2VsbCwg
dHlwZSkpOworICAgICAgICByZXR1cm4gbV9vdXQubG9naWNhbE5vdChpc1R5cGUoY2VsbCwgdHlw
ZSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdChFZGdlIGVkZ2UsIExW
YWx1ZSBjZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZp
c2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBhU2hy
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGJ1aWxkQVNocihtX2J1aWxkZXIs
IGxlZnQsIHJpZ2h0KTsgfSAvLyBhcml0aG1ldGljID0gc2lnbmVkCiAgICAgTFZhbHVlIGxTaHIo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gYnVpbGRMU2hyKG1fYnVpbGRlciwg
bGVmdCwgcmlnaHQpOyB9IC8vIGxvZ2ljYWwgPSB1bnNpZ25lZAogICAgIExWYWx1ZSBiaXROb3Qo
TFZhbHVlIHZhbHVlKSB7IHJldHVybiBidWlsZE5vdChtX2J1aWxkZXIsIHZhbHVlKTsgfQorICAg
IExWYWx1ZSBsb2dpY2FsTm90KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gYml0Tm90KHZhbHVlKTsg
fQogICAgIAogICAgIExWYWx1ZSBpbnNlcnRFbGVtZW50KExWYWx1ZSB2ZWN0b3IsIExWYWx1ZSBl
bGVtZW50LCBMVmFsdWUgaW5kZXgpIHsgcmV0dXJuIGJ1aWxkSW5zZXJ0RWxlbWVudChtX2J1aWxk
ZXIsIHZlY3RvciwgZWxlbWVudCwgaW5kZXgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU3RhdGUuY3BwCShyZXZpc2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTEgQEAg
U3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKIAogI2lmIEZUTF9VU0VTX0IzCiAgICAgcHJvYyA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworCisgICAgcHJvYy0+c2V0T3JpZ2luUHJp
bnRlcigKKyAgICAgICAgW3RoaXNdIChQcmludFN0cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdp
bikgeworICAgICAgICAgICAgb3V0LnByaW50KCJERkc6IiwgYml0d2lzZV9jYXN0PE5vZGUqPihv
cmlnaW4uZGF0YSgpKSk7CisgICAgICAgIH0pOwogI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiB9CiAK
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTQzNzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEyLTIyICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgRlRMIEIzIGRvZXMgbm90IGxvZ2ljYWxOb3QgY29ycmVj
dGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGNoYW5nZSBpbnRyb2R1Y2VzIHlldCBhbm90aGVyIHVzZSBvZiBTaGFyZWRUYXNrIGluIEpTQy4g
V2hpbGUgZG9pbmcgdGhpcywgSSBub3RpY2VkIHRoYXQKKyAgICAgICAgU2hhcmVkVGFzazo6cnVu
KCkgYWx3YXlzIGRlbWFuZHMgdGhhdCB3aGF0ZXZlciBhcmd1bWVudHMgdGhlIGNhbGxiYWNrIHRh
a2VzLCB0aGV5IG11c3QgYmUKKyAgICAgICAgcGFzc2VkIGFzIHJ2YWx1ZSByZWZlcmVuY2VzLiBU
aGlzIHdhcyBhIGNsZWFyIG1pc3VzZSBvZiBwZXJmZWN0IGZvcndhcmRpbmcuIFRoaXMgY2hhbmdl
IG1ha2VzCisgICAgICAgIFNoYXJlZFRhc2sncyBhcHByb2FjaCB0byBmb3J3YXJkaW5nIG1hdGNo
IHdoYXQgd2Ugd2VyZSBhbHJlYWR5IGRvaW5nIGluIFNjb3BlZExhbWJkYS4KKworICAgICAgICAq
IHd0Zi9TaGFyZWRUYXNrLmg6CisKIDIwMTUtMTItMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBQZXJmb3JtcyBETlMgcHJlZmV0
Y2ggd2hlbiBhIHByb3h5IGlzIGNvbmZpZ3VyZWQgKGluZm9ybWF0aW9uIGxlYWspCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TaGFyZWRUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U2hhcmVkVGFzay5oCShyZXZpc2lvbiAxOTQzNjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9TaGFyZWRU
YXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFNoYXJl
ZFRhc2soKSB7IH0KICAgICB2aXJ0dWFsIH5TaGFyZWRUYXNrKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IFJlc3VsdFR5cGUgcnVuKEFyZ3VtZW50VHlwZXMmJi4uLikgPSAwOworICAgIHZpcnR1YWwgUmVz
dWx0VHlwZSBydW4oQXJndW1lbnRUeXBlcy4uLikgPSAwOwogfTsKIAogLy8gVGhpcyBpcyBhIHV0
aWxpdHkgY2xhc3MgdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIFNoYXJlZFRhc2sgc3ViY2xh
c3MgdXNpbmcgYSBsYW1iZGEuIFVzdWFsbHksCkBAIC04NSw5ICs4NSw5IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgUmVzdWx0VHlwZSBydW4oQXJndW1lbnRUeXBlcyYmLi4uIGFy
Z3VtZW50cykgb3ZlcnJpZGUKKyAgICBSZXN1bHRUeXBlIHJ1bihBcmd1bWVudFR5cGVzLi4uIGFy
Z3VtZW50cykgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0b3Ioc3RkOjpm
b3J3YXJkPEFyZ3VtZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOworICAgICAgICByZXR1cm4gbV9m
dW5jdG9yKGFyZ3VtZW50cy4uLik7CiAgICAgfQogCiAgICAgRnVuY3RvciBtX2Z1bmN0b3I7Cg==
</data>
<flag name="review"
          id="292810"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>