<?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>26340</bug_id>
          
          <creation_ts>2009-06-11 20:04:25 -0700</creation_ts>
          <short_desc>[Qt] Build break introduced by r44550</short_desc>
          <delta_ts>2009-06-15 04:58:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>26293</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Laszlo Gombos">laszlo.gombos</reporter>
          <assigned_to name="Joseph Ligman">joseph.ligman</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>joseph.ligman</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125431</commentid>
    <comment_count>0</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-06-11 20:04:25 -0700</bug_when>
    <thetext>I found two problems:
 1. JavaScriptCore/runtime/JSONObject.cpp needs to be listed as a LUT_FILE as well
 2. name collision between WebCore/inspector/JSONObject.cpp and the newly created JavaScriptCore/runtime/JSONObject.cpp (all .o&apos;s are generated in the same dir for QtWebKit)

I was not sure how to resolve 2. I few ideas:
 - rename one of the JSONObject.cpp (e.g. to InspectorJSONObject.cpp)
 - create JavaScriptCore library first and and link it to WebCore to avoid collision

Will submit patch for 1. (LUT_FILE); this should at least fix the standalone jsc build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125432</commentid>
    <comment_count>1</comment_count>
      <attachid>31190</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-06-11 20:08:14 -0700</bug_when>
    <thetext>Created attachment 31190
Add JSONObject.cpp to LUT files for JavaScripCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125465</commentid>
    <comment_count>2</comment_count>
      <attachid>31190</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-12 05:17:00 -0700</bug_when>
    <thetext>Comment on attachment 31190
Add JSONObject.cpp to LUT files for JavaScripCore

&gt; --- JavaScriptCore/JavaScriptCore.pri	(revision 44621)
&gt; +++ JavaScriptCore/JavaScriptCore.pri	(working copy)
&gt; @@ -69,6 +69,7 @@ include(pcre/pcre.pri)
&gt;  
&gt;  LUT_FILES += \
&gt;      runtime/DatePrototype.cpp \
&gt; +    runtime/JSONObject.cpp \
&gt;      runtime/NumberConstructor.cpp \
&gt;      runtime/StringPrototype.cpp \
&gt;      runtime/ArrayPrototype.cpp \

Looks fine. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125471</commentid>
    <comment_count>3</comment_count>
      <attachid>31190</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-06-12 08:02:19 -0700</bug_when>
    <thetext>Comment on attachment 31190
Add JSONObject.cpp to LUT files for JavaScripCore

Landed as http://trac.webkit.org/changeset/44623.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125472</commentid>
    <comment_count>4</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-06-12 08:03:09 -0700</bug_when>
    <thetext>Based on some discussions on #webkit the proposal to resolve the remaining build break is to rename WebCore/inspector/JSONObject.cpp to InspectorJSONObject.cpp (and change the class name as well).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125476</commentid>
    <comment_count>5</comment_count>
      <attachid>31199</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-06-12 09:50:09 -0700</bug_when>
    <thetext>Created attachment 31199
Fix Qt build break by rename JSONObject in inspector

I don&apos;t have all the ports so was unable to verify all builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125489</commentid>
    <comment_count>6</comment_count>
      <attachid>31204</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-06-12 11:27:55 -0700</bug_when>
    <thetext>Created attachment 31204
Fix Qt build break by rename JSONObject in inspector


There was a problem with the ChangeLog in the previous patch. 
I don&apos;t have all the ports so I am unable to verify all builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125493</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-06-12 11:33:00 -0700</bug_when>
    <thetext>Did you use svn mv for the file move?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125521</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-06-12 13:51:23 -0700</bug_when>
    <thetext>Sorry I did not. I can do that, but maybe pfeldman will have some other comments. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125554</commentid>
    <comment_count>9</comment_count>
      <attachid>31190</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-12 15:30:43 -0700</bug_when>
    <thetext>Comment on attachment 31190
Add JSONObject.cpp to LUT files for JavaScripCore

Clearing review flag as the patch has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125618</commentid>
    <comment_count>10</comment_count>
      <attachid>31235</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2009-06-13 07:40:41 -0700</bug_when>
    <thetext>Created attachment 31235
Fix Qt build break by rename JSONObject in inspector

This one uses svn move instead of just add and delete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125690</commentid>
    <comment_count>11</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-06-13 16:08:08 -0700</bug_when>
    <thetext>Now that I look at JSONObject, it is just to similar to ScriptObject. I think it can go, and just make ScriptObject support JSON stringify and creation from a JSON string. Dimitri, Pavel, do you think that would work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125694</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-06-13 16:45:02 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 26293 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125749</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-06-14 00:48:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Now that I look at JSONObject, it is just to similar to ScriptObject. I think
&gt; it can go, and just make ScriptObject support JSON stringify and creation from
&gt; a JSON string. Dimitri, Pavel, do you think that would work?
&gt; 

I agree that there is a redundancy here. However, I am not sure that Script* is now exactly what we need, so we might need to tweak them a bit. To reduce the number of the moving parts, I&apos;d suggest that this one is fixed as suggested (via renaming Inspector&apos;s one to a more specific name) now. In the meanwhile, I would like to learn more on the new stringify API in WebKit and find a good way of Script*, new JSON.stringify and Chromium&apos;s JSON capabilities playing together nicely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125781</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-06-14 10:39:09 -0700</bug_when>
    <thetext>I am fine with Pavel&apos;s opinion. I kinda like Timothy&apos;s suggestion though. Color me ambivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125926</commentid>
    <comment_count>15</comment_count>
      <attachid>31235</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-06-15 04:52:24 -0700</bug_when>
    <thetext>Comment on attachment 31235
Fix Qt build break by rename JSONObject in inspector

Thanks Joe!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125927</commentid>
    <comment_count>16</comment_count>
      <attachid>31235</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-06-15 04:54:10 -0700</bug_when>
    <thetext>Comment on attachment 31235
Fix Qt build break by rename JSONObject in inspector

Landed in 44682. Clearning review but leaving the bug open for further discussion around the json classes. Pavel, Timothy, do you prefer a separate bugzilla entry for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125928</commentid>
    <comment_count>17</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-06-15 04:58:29 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 31235 [review])
&gt; Landed in 44682. Clearning review but leaving the bug open for further
&gt; discussion around the json classes. Pavel, Timothy, do you prefer a separate
&gt; bugzilla entry for that?

I think discussions are in https://bugs.webkit.org/show_bug.cgi?id=26293

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31190</attachid>
            <date>2009-06-11 20:08:14 -0700</date>
            <delta_ts>2009-06-12 15:30:43 -0700</delta_ts>
            <desc>Add JSONObject.cpp to LUT files for JavaScripCore</desc>
            <filename>patch_26340.txt</filename>
            <type>text/plain</type>
            <size>990</size>
            <attacher name="Laszlo Gombos">laszlo.gombos</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0NjIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDYtMTEgIExhc3psbyBH
b21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIGJyZWFrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjM0MAorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUucHJpOiBBZGQgSlNPTk9iamVjdC5jcHAgdG8gTFVUIGZpbGVzLgor
CiAyMDA5LTA2LTExICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChidWlsZCBmaXgpLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnByaQkocmV2aXNpb24gNDQ2MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgaW5jbHVkZShwY3JlL3BjcmUu
cHJpKQogCiBMVVRfRklMRVMgKz0gXAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgXAor
ICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuY3BwIFwKICAgICBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31199</attachid>
            <date>2009-06-12 09:50:09 -0700</date>
            <delta_ts>2009-06-12 11:27:55 -0700</delta_ts>
            <desc>Fix Qt build break by rename JSONObject in inspector</desc>
            <filename>bug26340.patch</filename>
            <type>text/plain</type>
            <size>33712</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ2MjMpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEyIEBADQorMjAwOS0wNi0xMiAgSm9l
IExpZ21hbiAgPGpvc2VwaC5saWdtYW5Abm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuDQorICAgICAgICBbUXRdIEZpeCBidWlsZCBicmVhaw0KKyAgICAg
ICAgQWRkIEpTT05PYmplY3QuY3BwIHRvIExVVCBmaWxlcw0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzQwDQorDQorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnByaTogDQorDQogMjAwOS0wNi0xMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdv
bWJvc0Bub2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBKYW4gTWljaGFlbCBBbG9u
em8uDQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNDQ2MjMpDQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkNCkBAIC0xLDMgKzEsNDIgQEANCisyMDA5LTA2LTEyICBKb2UgTGlnbWFuICA8am9zZXBo
LmxpZ21hbkBub2tpYS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4NCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIGJyZWFrDQorICAgICAgICBSZW5hbWUgSlNPTk9i
amVjdCB0byBJbnNwZWN0b3JKU09OT2JqZWN0DQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNDANCisNCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
DQorICAgICAgICAqIFdlYkNvcmUucHJvOg0KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoNCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Og0KKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6DQorICAgICAgICAqIGluc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHA6DQorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFk
ZFRvQ29uc29sZSk6DQorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwOg0KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZTo6YmluZCk6DQorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
LmNwcDoNCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5k
KToNCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoNCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6bmV3SW5zcGVjdG9ySlNPTk9iamVjdCk6DQor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUp
Og0KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjphZGRSZXNvdXJjZSk6DQor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZVJlc291cmNlKToNCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2UpOg0KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjphZGRET01TdG9yYWdlKToNCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6DQorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JKU09OT2JqZWN0LmNwcDogQWRkZWQuDQorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySlNPTk9iamVjdDo6SW5zcGVjdG9ySlNPTk9iamVjdCk6DQorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KToNCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JK
U09OT2JqZWN0OjpzY3JpcHRPYmplY3QpOg0KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckpT
T05PYmplY3Q6OmNyZWF0ZU5ldyk6DQorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JKU09O
T2JqZWN0Lmg6IEFkZGVkLg0KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2Uu
Y3BwOg0KKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlSGVhZGVyc09iamVjdCk6DQorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6DQorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6DQor
ICAgICAgICAqIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcDogUmVtb3ZlZC4NCisgICAgICAgICog
aW5zcGVjdG9yL0pTT05PYmplY3QuaDogUmVtb3ZlZC4NCisNCiAyMDA5LTA2LTEyICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4NCiANCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4NCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDQ2MjMpDQorKysgV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQ0KQEAgLTExMDUsOCArMTEwNSw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcDQogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXA0K
IAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIFwNCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXA0KLQlXZWJDb3JlL2luc3BlY3Rv
ci9KU09OT2JqZWN0LmNwcCBcDQotCVdlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaCBcDQor
CVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwIFwNCisJV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5oIFwNCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUu
Y3BwIFwNCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaCBcDQogCVdlYkNvcmUvbG9hZGVyL0NhY2hl
UG9saWN5LmggXA0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8NCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0NDYyMykNCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpDQpAQCAtODE5LDcgKzgxOSw3IEBAIFNPVVJDRVMgKz0gXA0KICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXA0KICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwIFwNCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cCBcDQotICAgIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBcDQorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JKU09OT2JqZWN0LmNwcCBcDQogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcCBcDQogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXA0KICAgICBs
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBcDQpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL1dlYkNvcmVT
b3VyY2VzLmJrbAkocmV2aXNpb24gNDQ2MjMpDQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wJKHdvcmtpbmcgY29weSkNCkBAIC02NTYsNyArNjU2LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5z
IHRoZSBsaXN0IG9mIGZpbGVzIG5lZQ0KICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1
Z1NlcnZlci5jcHANCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHANCiAg
ICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwDQotICAgICAgICBpbnNw
ZWN0b3IvSlNPTk9iamVjdC5jcHANCisgICAgICAgIGluc3BlY3Rvci9JbnNwZWN0b3JKU09OT2Jq
ZWN0LmNwcA0KICAgICA8L3NldD4NCiANCiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09S
RV9TT1VSQ0VTX0xPQURFUiI+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDQ0NjIzKQ0KKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHdvcmtpbmcgY29weSkNCkBAIC0xNTcxOSwxMSArMTU3MTksMTEgQEANCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxKU09OT2JqZWN0LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9ySlNPTk9iamVjdC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JKU09OT2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbHRlcg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDQ0NjIzKQ0KKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpDQpAQCAtOTkzLDggKzk5Myw4IEBADQog
CQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQw
Q0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9Ow0KIAkJN0E2
NzRCREIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLzsgfTsNCiAJCTdBNjc0QkRD
MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5
OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsgfTsNCi0JCTdBQjZGODg3MEZCOUQyNzEw
MDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNw
cCAqLzsgfTsNCi0JCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NjBGQjlE
MjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovOyB9Ow0KKwkJN0FCNkY4ODcwRkI5RDI3MTAw
ODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEluc3Bl
Y3RvckpTT05PYmplY3QuY3BwICovOyB9Ow0KKwkJN0FCNkY4ODgwRkI5RDI3MTAwODA1RDAyIC8q
IEluc3BlY3RvckpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBQjZGODg2MEZCOUQyNzEwMDgwNUQwMiAvKiBJbnNwZWN0b3JKU09OT2Jq
ZWN0LmggKi87IH07DQogCQk3QUVEM0UwNTBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJv
bnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsN
CiAJCTdBRUQzRTA2MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDQwRkJCMUVB
QTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi87IH07DQogCQk4NDVFNzJGODBGRDI2
MUVFMDBBODdENzkgLyogRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IH07
DQpAQCAtNTkzNyw4ICs1OTM3LDggQEANCiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBE
T01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07DQotCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09OT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsNCi0JCTdBQjZGODg2MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09O
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05PYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCisJCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAv
KiBJbnNwZWN0b3JKU09OT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvckpTT05PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
Ow0KKwkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySlNPTk9iamVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJ
CTdBRUQzRTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9Ow0KIAkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWx0ZXIuaDsgcGF0aCA9IGZpbHRl
cnMvRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQpAQCAtOTY5MCw4ICs5Njkw
LDggQEANCiAJCQkJMUM4MUI5RkQwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxl
LmggKi8sDQogCQkJCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwICovLA0KIAkJCQkxQzgxQjlGQjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmggKi8sDQotCQkJCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09O
T2JqZWN0LmNwcCAqLywNCi0JCQkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmpl
Y3QuaCAqLywNCisJCQkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05P
YmplY3QuY3BwICovLA0KKwkJCQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9y
SlNPTk9iamVjdC5oICovLA0KIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyAqLywNCiAJCQkpOw0KIAkJCXBhdGggPSBpbnNwZWN0b3I7DQpAQCAtMTY3
MzksNyArMTY3MzksNyBAQA0KIAkJCQkxQTU2OUNGQTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0
YW5jZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLA0KIAkJCQkxQTU2OUNGRTBEN0UyQjgyMDA3QzM5ODMg
LyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywNCi0JCQkJN0FCNkY4ODgwRkI5RDI3MTAwODA1
RDAyIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovLA0KKwkJCQk3QUI2Rjg4ODBGQjlEMjcx
MDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTdB
RUQzRTA2MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMg
Ki8sDQogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJz
ICovLA0KIAkJCQk5MzMwOURFODA5OUU2NDkyMDA1NkU1ODEgLyogaHRtbGVkaXRpbmcuaCBpbiBI
ZWFkZXJzICovLA0KQEAgLTE4NzMxLDcgKzE4NzMxLDcgQEANCiAJCQkJOTNGMTlCMDMwODI0NUU1
OTAwMUU5QUJDIC8qIFhTTFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sDQogCQkJCUUxRjFF
ODJGMEMzQzJCQjkwMDZEQjM5MSAvKiBYU0xURXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywN
CiAJCQkJOTNGMTlCMDQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuY3BwIGluIFNv
dXJjZXMgKi8sDQotCQkJCTdBQjZGODg3MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLA0KKwkJCQk3QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVj
dG9ySlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywNCiAJCQkJN0FFRDNFMDUwRkJCMUVBQTAw
RDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovLA0KIAkJCQlFMUJF
NTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICov
LA0KIAkJCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5NEM5RTQgLyogYmlkaS5jcHAgaW4gU291cmNlcyAq
LywNCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAJKHJldmlzaW9uIDQ0
NjIzKQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkod29ya2luZyBj
b3B5KQ0KQEAgLTMyLDcgKzMyLDcgQEANCiAjaW5jbHVkZSAiQ29uc29sZU1lc3NhZ2UuaCINCiAN
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCINCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5o
Ig0KKyNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiDQogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIg0KICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiDQogDQpAQCAt
NzUsNyArNzUsNyBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvDQog
DQogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkNCiB7DQotICAgIEpTT05PYmplY3QganNvbk9iaiA9IGZyb250ZW5kLT5uZXdKU09O
T2JqZWN0KCk7DQorICAgIEluc3BlY3RvckpTT05PYmplY3QganNvbk9iaiA9IGZyb250ZW5kLT5u
ZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7DQogICAgIGpzb25PYmouc2V0KCJzb3VyY2UiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fc291cmNlKSk7DQogICAgIGpzb25PYmouc2V0KCJsZXZlbCIsIHN0YXRp
Y19jYXN0PGludD4obV9sZXZlbCkpOw0KICAgICBqc29uT2JqLnNldCgibGluZSIsIHN0YXRpY19j
YXN0PGludD4obV9saW5lKSk7DQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDQ0NjIzKQ0KKysrIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC0zNiw3ICszNiw3IEBADQogI2luY2x1ZGUgIkRvY3VtZW50LmgiDQogI2luY2x1ZGUg
IkZyYW1lLmgiDQogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiDQotI2luY2x1ZGUgIkpT
T05PYmplY3QuaCINCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNPTk9iamVjdC5oIg0KICNpbmNsdWRl
ICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiDQogI2luY2x1ZGUgIlN0b3JhZ2UuaCINCiANCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKEkN
CiAgICAgaWYgKG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkNCiAgICAgICAgIHJldHVybjsNCiANCi0g
ICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsNCisg
ICAgSW5zcGVjdG9ySlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0luc3BlY3Rv
ckpTT05PYmplY3QoKTsNCiAgICAgU2NyaXB0T2JqZWN0IGRvbVN0b3JhZ2U7DQogICAgIGlmICgh
Z2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5nZXQoKSwgbV9kb21TdG9yYWdlLmdl
dCgpLCBkb21TdG9yYWdlKSkNCiAgICAgICAgIHJldHVybjsNCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA0NDYy
MykNCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAko
d29ya2luZyBjb3B5KQ0KQEAgLTM2LDcgKzM2LDcgQEANCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIN
CiAjaW5jbHVkZSAiRnJhbWUuaCINCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCINCi0j
aW5jbHVkZSAiSlNPTk9iamVjdC5oIg0KKyNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0Lmgi
DQogI2luY2x1ZGUgIlNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCINCiANCiANCkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnMNCiAgICAgaWYg
KG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkNCiAgICAgICAgIHJldHVybjsNCiANCi0gICAgSlNPTk9i
amVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsNCisgICAgSW5zcGVj
dG9ySlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmpl
Y3QoKTsNCiAgICAgU2NyaXB0T2JqZWN0IGRhdGFiYXNlOw0KICAgICBpZiAoIWdldFF1YXJhbnRp
bmVkU2NyaXB0T2JqZWN0KG1fZGF0YWJhc2UuZ2V0KCksIGRhdGFiYXNlKSkNCiAgICAgICAgIHJl
dHVybjsNCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAJKHJl
dmlzaW9uIDQ0NjIzKQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDcgKzMzLDcgQEANCiAjaW5jbHVkZSAiQ29uc29sZU1l
c3NhZ2UuaCINCiAjaW5jbHVkZSAiRnJhbWUuaCINCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIiAgLy8gVE9ETyhwZmVsZG1hbik6IEV4dHJhY3QgU3BlY2lhbFBhbmVscyB0byByZW1v
dmUgaW5jbHVkZS4NCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5oIg0KKyNpbmNsdWRlICJJbnNwZWN0
b3JKU09OT2JqZWN0LmgiDQogI2luY2x1ZGUgIk5vZGUuaCINCiAjaW5jbHVkZSAiU2NyaXB0RnVu
Y3Rpb25DYWxsLmgiDQogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIg0KQEAgLTYxLDExICs2MSwx
MSBAQCBJbnNwZWN0b3JGcm9udGVuZDo6fkluc3BlY3RvckZyb250ZW5kKCkgDQogICAgIG1fd2Vi
SW5zcGVjdG9yID0gU2NyaXB0T2JqZWN0KCk7DQogfQ0KIA0KLUpTT05PYmplY3QgSW5zcGVjdG9y
RnJvbnRlbmQ6Om5ld0pTT05PYmplY3QoKSB7DQotICAgIHJldHVybiBKU09OT2JqZWN0OjpjcmVh
dGVOZXcobV9zY3JpcHRTdGF0ZSk7DQorSW5zcGVjdG9ySlNPTk9iamVjdCBJbnNwZWN0b3JGcm9u
dGVuZDo6bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpIHsNCisgICAgcmV0dXJuIEluc3BlY3RvckpT
T05PYmplY3Q6OmNyZWF0ZU5ldyhtX3NjcmlwdFN0YXRlKTsNCiB9DQogDQotdm9pZCBJbnNwZWN0
b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBKU09OT2JqZWN0JiBtZXNzYWdl
T2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8U2Ny
aXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkNCit2b2lk
IEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEluc3BlY3RvckpT
T05PYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMs
IGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQ0KIHsNCiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24o
bmV3RnVuY3Rpb25DYWxsKCJhZGRNZXNzYWdlVG9Db25zb2xlIikpOw0KICAgICBmdW5jdGlvbi0+
YXBwZW5kQXJndW1lbnQobWVzc2FnZU9iai5zY3JpcHRPYmplY3QoKSk7DQpAQCAtODAsNyArODAs
NyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zDQogICAgIGZ1bmN0
aW9uLT5jYWxsKCk7DQogfQ0KIA0KLWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNl
KGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBKU09OT2JqZWN0JiByZXNvdXJjZU9iaikNCiti
b29sIEluc3BlY3RvckZyb250ZW5kOjphZGRSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgcmVzb3VyY2VPYmopDQogew0KICAgICBPd25QdHI8
U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZFJlc291cmNl
IikpOw0KICAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoaWRlbnRpZmllcik7DQpAQCAtOTAs
NyArOTAsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRSZXNvdXJjZShsb25nDQogICAg
IHJldHVybiAhaGFkRXhjZXB0aW9uOw0KIH0NCiANCi1ib29sIEluc3BlY3RvckZyb250ZW5kOjp1
cGRhdGVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVz
b3VyY2VPYmopDQorYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlUmVzb3VyY2UobG9uZyBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHJlc291cmNlT2JqKQ0K
IHsNCiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25D
YWxsKCJ1cGRhdGVSZXNvdXJjZSIpKTsNCiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGlk
ZW50aWZpZXIpOw0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpy
ZXN1bWVkU2NyaXB0KCkNCiAjZW5kaWYNCiANCiAjaWYgRU5BQkxFKERBVEFCQVNFKQ0KLWJvb2wg
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERhdGFiYXNlKGNvbnN0IEpTT05PYmplY3QmIGRiT2JqZWN0
KQ0KK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERhdGFiYXNlKGNvbnN0IEluc3BlY3RvckpT
T05PYmplY3QmIGRiT2JqZWN0KQ0KIHsNCiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4g
ZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGREYXRhYmFzZSIpKTsNCiAgICAgZnVuY3Rpb24t
PmFwcGVuZEFyZ3VtZW50KGRiT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsNCkBAIC0yNzEsNyArMjcx
LDcgQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2UoY29ucw0KICNlbmRpZg0K
IA0KICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpDQotYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6YWRk
RE9NU3RvcmFnZShjb25zdCBKU09OT2JqZWN0JiBkb21TdG9yYWdlT2JqKQ0KK2Jvb2wgSW5zcGVj
dG9yRnJvbnRlbmQ6OmFkZERPTVN0b3JhZ2UoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgZG9t
U3RvcmFnZU9iaikNCiB7DQogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9u
KG5ld0Z1bmN0aW9uQ2FsbCgiYWRkRE9NU3RvcmFnZSIpKTsNCiAgICAgZnVuY3Rpb24tPmFwcGVu
ZEFyZ3VtZW50KGRvbVN0b3JhZ2VPYmouc2NyaXB0T2JqZWN0KCkpOw0KSW5kZXg6IFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCShyZXZpc2lvbiA0NDYyMykNCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNyAr
MzAsNyBAQA0KICNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaA0KICNkZWZpbmUgSW5zcGVjdG9y
RnJvbnRlbmRfaA0KIA0KLSNpbmNsdWRlICJKU09OT2JqZWN0LmgiDQorI2luY2x1ZGUgIkluc3Bl
Y3RvckpTT05PYmplY3QuaCINCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCINCiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4NCiANCkBAIC01MywxMiArNTMsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgew0KICAgICBwdWJsaWM6DQogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRTdGF0
ZSosIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpOw0KICAgICAgICAgfkluc3BlY3RvckZyb250
ZW5kKCk7DQotICAgICAgICBKU09OT2JqZWN0IG5ld0pTT05PYmplY3QoKTsNCisgICAgICAgIElu
c3BlY3RvckpTT05PYmplY3QgbmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOw0KIA0KLSAgICAgICAg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTT05PYmplY3QmIG1lc3NhZ2VPYmosIGNv
bnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1
ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsNCisgICAgICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBJbnNwZWN0b3JKU09OT2JqZWN0JiBtZXNzYWdl
T2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8U2Ny
aXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7DQogICAg
ICAgICANCi0gICAgICAgIGJvb2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKTsNCi0gICAgICAgIGJvb2wgdXBkYXRlUmVzb3Vy
Y2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKTsN
CisgICAgICAgIGJvb2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IElu
c3BlY3RvckpTT05PYmplY3QmIHJlc291cmNlT2JqKTsNCisgICAgICAgIGJvb2wgdXBkYXRlUmVz
b3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHJl
c291cmNlT2JqKTsNCiAgICAgICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UobG9uZyBsb25nIGlkZW50
aWZpZXIpOw0KIA0KICAgICAgICAgdm9pZCB1cGRhdGVGb2N1c2VkTm9kZShOb2RlKiBub2RlKTsN
CkBAIC04NiwxMSArODYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgew0KICNlbmRpZg0KIA0KICNp
ZiBFTkFCTEUoREFUQUJBU0UpDQotICAgICAgICBib29sIGFkZERhdGFiYXNlKGNvbnN0IEpTT05P
YmplY3QmIGRiT2JqKTsNCisgICAgICAgIGJvb2wgYWRkRGF0YWJhc2UoY29uc3QgSW5zcGVjdG9y
SlNPTk9iamVjdCYgZGJPYmopOw0KICNlbmRpZg0KICAgICAgICAgDQogI2lmIEVOQUJMRShET01f
U1RPUkFHRSkNCi0gICAgICAgIGJvb2wgYWRkRE9NU3RvcmFnZShjb25zdCBKU09OT2JqZWN0JiBk
b21TdG9yYWdlT2JqKTsNCisgICAgICAgIGJvb2wgYWRkRE9NU3RvcmFnZShjb25zdCBJbnNwZWN0
b3JKU09OT2JqZWN0JiBkb21TdG9yYWdlT2JqKTsNCiAjZW5kaWYNCiANCiAgICAgcHJpdmF0ZToN
CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwCShyZXZp
c2lvbiAwKQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw5NSBAQA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICoNCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uDQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
DQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQ0KKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQNCisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFDQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOw0KKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORA0KKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GDQorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisN
CisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIN
CisNCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiDQorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiDQorDQorbmFtZXNwYWNlIFdlYkNvcmUgew0K
Kw0KK0luc3BlY3RvckpTT05PYmplY3Q6Okluc3BlY3RvckpTT05PYmplY3QoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKQ0KKyAgICA6IG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpDQorew0KKyAg
ICBtX3NjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsN
Cit9DQorDQorYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQ0KK3sNCisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNl
dChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7DQorfQ0KKw0KK2Jvb2wgSW5zcGVjdG9ySlNP
Tk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFsdWUp
DQorew0KKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUs
IHZhbHVlKTsNCit9DQorDQorYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgdmFsdWUpDQorew0KKyAgICByZXR1
cm4gc2V0KG5hbWUsIHZhbHVlLnNjcmlwdE9iamVjdCgpKTsNCit9DQorDQorYm9vbCBJbnNwZWN0
b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkN
Cit7DQorICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwg
dmFsdWUpOw0KK30NCisNCitib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFy
KiBuYW1lLCBkb3VibGUgdmFsdWUpDQorew0KKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsNCit9DQorDQorYm9vbCBJbnNwZWN0b3JKU09O
T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nIHZhbHVlKQ0KK3sNCisgICAg
cmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7DQor
fQ0KKw0KK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGlu
dCB2YWx1ZSkNCit7DQorICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0
ZSwgbmFtZSwgdmFsdWUpOw0KK30NCisNCitib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChj
b25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlKQ0KK3sNCisgICAgcmV0dXJuIG1fc2NyaXB0T2Jq
ZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7DQorfQ0KKw0KK1NjcmlwdE9iamVj
dCBJbnNwZWN0b3JKU09OT2JqZWN0OjpzY3JpcHRPYmplY3QoKSBjb25zdA0KK3sNCisgICAgcmV0
dXJuIG1fc2NyaXB0T2JqZWN0Ow0KK30NCisNCitJbnNwZWN0b3JKU09OT2JqZWN0IEluc3BlY3Rv
ckpTT05PYmplY3Q6OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpDQorew0KKyAg
ICByZXR1cm4gSW5zcGVjdG9ySlNPTk9iamVjdChzY3JpcHRTdGF0ZSk7DQorfQ0KKw0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUNCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JKU09O
T2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JKU09O
T2JqZWN0LmgJKHJldmlzaW9uIDApDQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNP
Tk9iamVjdC5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw2MCBAQA0KKy8qDQorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICoNCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLg0KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uDQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0K
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQ0KKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQNCisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFDQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTDQorICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOw0KKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RA0KKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GDQorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4NCisgKi8NCisNCisNCisjaWZuZGVmIEluc3BlY3RvckpTT05PYmplY3RfaA0KKyNkZWZpbmUg
SW5zcGVjdG9ySlNPTk9iamVjdF9oDQorDQorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIg0KKyNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIg0KKw0KK25hbWVzcGFjZSBXZWJDb3JlIHsNCisgICAgY2xh
c3MgU3RyaW5nOw0KKw0KKyAgICBjbGFzcyBJbnNwZWN0b3JKU09OT2JqZWN0IHsNCisgICAgcHVi
bGljOg0KKyAgICAgICAgYm9vbCBzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
KTsNCisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3BlY3RvckpT
T05PYmplY3QmKTsNCisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNj
cmlwdE9iamVjdCYpOw0KKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
U3RyaW5nJik7DQorICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUpOw0K
KyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsNCisgICAgICAg
IGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCk7DQorICAgICAgICBib29sIHNldChjb25z
dCBjaGFyKiBuYW1lLCBib29sKTsNCisgICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3Qo
KSBjb25zdDsNCisNCisgICAgICAgIHN0YXRpYyBJbnNwZWN0b3JKU09OT2JqZWN0IGNyZWF0ZU5l
dyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpOw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgSW5z
cGVjdG9ySlNPTk9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpOw0KKyAgICAgICAgU2Ny
aXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7DQorICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRP
YmplY3Q7DQorICAgIH07DQorfQ0KKw0KKyNlbmRpZiAvLyBJbnNwZWN0b3JKU09OT2JqZWN0LmgN
CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDQ0NjIzKQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTM2LDcgKzM2LDcgQEANCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCINCiAjaW5jbHVkZSAiRnJhbWUuaCINCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIN
Ci0jaW5jbHVkZSAiSlNPTk9iamVjdC5oIg0KKyNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0
LmgiDQogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIg0KICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiDQogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIg0KQEAgLTEwNSw3ICsxMDUsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjDQogICAgIG1fY2hhbmdl
cy5zZXQoVHlwZUNoYW5nZSk7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIHBvcHVsYXRlSGVhZGVyc09i
amVjdChKU09OT2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpDQor
c3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KEluc3BlY3RvckpTT05PYmplY3QqIG9i
amVjdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykNCiB7DQogICAgIEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7DQogICAgIGZvciAoSFRUUEhl
YWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgew0KQEAgLTExNiw4ICsxMTYsOCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNP
YmplY3QoSlNPTk9iDQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkNCiB7DQogICAgIGlmICghbV9zY3JpcHRPYmpl
Y3RDcmVhdGVkKSB7DQotICAgICAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+
bmV3SlNPTk9iamVjdCgpOw0KLSAgICAgICAgSlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZy
b250ZW5kLT5uZXdKU09OT2JqZWN0KCk7DQorICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IGpz
b25PYmplY3QgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOw0KKyAgICAgICAg
SW5zcGVjdG9ySlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5uZXdJbnNwZWN0
b3JKU09OT2JqZWN0KCk7DQogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RI
ZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOw0KICAgICAgICAganNvbk9iamVjdC5zZXQo
InJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOw0KICAgICAgICAganNvbk9iamVjdC5z
ZXQoInJlcXVlc3RVUkwiLCByZXF1ZXN0VVJMKCkpOw0KQEAgLTE0MywxMyArMTQzLDEzIEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamUNCiAgICAgaWYgKG1fY2hhbmdl
cy5oYXNDaGFuZ2UoTm9DaGFuZ2UpKQ0KICAgICAgICAgcmV0dXJuOw0KIA0KLSAgICBKU09OT2Jq
ZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOw0KKyAgICBJbnNwZWN0
b3JKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVj
dCgpOw0KICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgew0KICAg
ICAgICAganNvbk9iamVjdC5zZXQoInVybCIsIHJlcXVlc3RVUkwoKSk7DQogICAgICAgICBqc29u
T2JqZWN0LnNldCgiZG9tYWluIiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7DQogICAgICAgICBqc29u
T2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOw0KICAgICAgICAganNvbk9i
amVjdC5zZXQoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9u
ZW50KCkpOw0KLSAgICAgICAgSlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5u
ZXdKU09OT2JqZWN0KCk7DQorICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IHJlcXVlc3RIZWFk
ZXJzID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsNCiAgICAgICAgIHBvcHVs
YXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7
DQogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVy
cyk7DQogICAgICAgICBqc29uT2JqZWN0LnNldCgibWFpblJlc291cmNlIiwgbV9pc01haW5SZXNv
dXJjZSk7DQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVNjcmlwdE9iamUNCiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJleHBlY3RlZENvbnRlbnRMZW5n
dGgiLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7DQogICAgICAgICBqc29uT2JqZWN0LnNldCgi
c3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsNCiAgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOw0KLSAgICAgICAg
SlNPTk9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOw0K
KyAgICAgICAgSW5zcGVjdG9ySlNPTk9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBmcm9udGVuZC0+
bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOw0KICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0
KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOw0KICAgICAgICAganNv
bk9iamVjdC5zZXQoInJlc3BvbnNlSGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7DQogICAgICAg
ICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsNCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaW5z
cGVjdG9yL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiA0NDYyMykNCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9KU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEsOTUgKzAsMCBAQA0KLS8q
DQotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N
Ci0gKg0KLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dA0KLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSAqIGFyZSBtZXQ6DQotICoNCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQNCi0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlDQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZA0KLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQotICoNCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQ0KLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQNCi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQ0K
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTDQotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOw0KLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORA0KLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
DQotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCi0gKi8NCi0NCi0jaW5jbHVkZSAiY29uZmlnLmgiDQotI2luY2x1ZGUg
IkpTT05PYmplY3QuaCINCi0NCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCi0jaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiDQotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiDQotDQotbmFtZXNw
YWNlIFdlYkNvcmUgew0KLQ0KLUpTT05PYmplY3Q6OkpTT05PYmplY3QoU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKQ0KLSAgICA6IG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpDQotew0KLSAgICBt
X3NjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsNCi19
DQotDQotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQ0KLXsNCi0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0
YXRlLCBuYW1lLCB2YWx1ZSk7DQotfQ0KLQ0KLWJvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFsdWUpDQotew0KLSAgICByZXR1cm4gbV9z
Y3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsNCi19DQotDQotYm9v
bCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSlNPTk9iamVjdCYgdmFs
dWUpDQotew0KLSAgICByZXR1cm4gc2V0KG5hbWUsIHZhbHVlLnNjcmlwdE9iamVjdCgpKTsNCi19
DQotDQotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkNCi17DQotICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0
ZSwgbmFtZSwgdmFsdWUpOw0KLX0NCi0NCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFy
KiBuYW1lLCBkb3VibGUgdmFsdWUpDQotew0KLSAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsNCi19DQotDQotYm9vbCBKU09OT2JqZWN0Ojpz
ZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nIHZhbHVlKQ0KLXsNCi0gICAgcmV0dXJuIG1f
c2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7DQotfQ0KLQ0KLWJv
b2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkNCi17DQotICAg
IHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOw0K
LX0NCi0NCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVl
KQ0KLXsNCi0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1l
LCB2YWx1ZSk7DQotfQ0KLQ0KLVNjcmlwdE9iamVjdCBKU09OT2JqZWN0OjpzY3JpcHRPYmplY3Qo
KSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0Ow0KLX0NCi0NCi1KU09OT2Jq
ZWN0IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpDQotew0K
LSAgICByZXR1cm4gSlNPTk9iamVjdChzY3JpcHRTdGF0ZSk7DQotfQ0KLQ0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUNCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDQ0NjIz
KQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTEsNjAgKzAsMCBAQA0KLS8qDQotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSAq
IGFyZSBtZXQ6DQotICoNCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodA0KLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YNCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQotICoNCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQ0KLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQNCi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQ0KLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOw0KLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORA0KLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GDQotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCi0gKi8NCi0NCi0NCi0jaWZuZGVmIEpT
T05PYmplY3RfaA0KLSNkZWZpbmUgSlNPTk9iamVjdF9oDQotDQotI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIg0KLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIg0KLQ0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsNCi0gICAgY2xhc3MgU3RyaW5nOw0KLQ0KLSAgICBjbGFzcyBKU09OT2JqZWN0IHsNCi0gICAg
cHVibGljOg0KLSAgICAgICAgYm9vbCBzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmKTsNCi0gICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEpTT05PYmpl
Y3QmKTsNCi0gICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9i
amVjdCYpOw0KLSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5n
Jik7DQotICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUpOw0KLSAgICAg
ICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsNCi0gICAgICAgIGJvb2wg
c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCk7DQotICAgICAgICBib29sIHNldChjb25zdCBjaGFy
KiBuYW1lLCBib29sKTsNCi0gICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QoKSBjb25z
dDsNCi0NCi0gICAgICAgIHN0YXRpYyBKU09OT2JqZWN0IGNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUpOw0KLSAgICBwcml2YXRlOg0KLSAgICAgICAgSlNPTk9iamVjdChTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUpOw0KLSAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7
DQotICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7DQotICAgIH07DQotfQ0KLQ0K
LSNlbmRpZiAvLyBKU09OT2JqZWN0X2gNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31204</attachid>
            <date>2009-06-12 11:27:55 -0700</date>
            <delta_ts>2009-06-13 07:40:41 -0700</delta_ts>
            <desc>Fix Qt build break by rename JSONObject in inspector</desc>
            <filename>bug26340-a.patch</filename>
            <type>text/plain</type>
            <size>32429</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMTIgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGlnbWFuQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIEZpeCBidWlsZCBicmVhaworICAgICAgICBSZW5hbWUgSlNPTk9iamVjdCB0byBJbnNw
ZWN0b3JKU09OT2JqZWN0CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2MzQwCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
Q29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpuZXdJbnNwZWN0b3JKU09OT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kOjphZGRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZDo6dXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
OjphZGRET01TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySlNPTk9iamVjdDo6SW5zcGVjdG9ySlNPTk9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySlNPTk9iamVjdDo6c2NyaXB0T2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckpTT05PYmplY3Q6OmNyZWF0ZU5ldyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlSGVhZGVy
c09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVT
Y3JpcHRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNPTk9iamVjdC5oOiBSZW1vdmVkLgorCiAyMDA5LTA2
LTEyICBOYXRlIENoYXBpbiAgPGphcGhldEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NDYyNikKKysrIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExMDUsOCArMTEwNSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaCBc
CiAJV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9y
L0pTT05PYmplY3QuY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmggXAorCVdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuY3BwIFwKKwlXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmggXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBc
CiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVQb2xpY3ku
aCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtODE5LDcgKzgxOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBcCi0gICAgaW5zcGVj
dG9yL0pTT05PYmplY3QuY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5j
cHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAgICAgbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDQ0
NjI2KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTY1
Niw3ICs2NTYsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAg
ICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgICAgIGluc3Bl
Y3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQ
cm9maWxlTm9kZS5jcHAKLSAgICAgICAgaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwCisgICAgICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNl
dCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0xPQURFUiI+CkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU3MTksMTEg
KzE1NzE5LDExIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxKU09OT2JqZWN0LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5o
Ig0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JKU09OT2JqZWN0Lmgi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NDYyNikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05OTMs
OCArOTkzLDggQEAKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAq
LzsgfTsKIAkJN0E2NzRCREIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3
NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLzsgfTsK
IAkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2NzRCREEwRjlF
QkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovOyB9OwotCQk3QUI2Rjg4
NzBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSlNP
Tk9iamVjdC5jcHAgKi87IH07Ci0JCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2
Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovOyB9OworCQk3QUI2Rjg4NzBG
QjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIg
LyogSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgKi87IH07CisJCTdBQjZGODg4MEZCOUQyNzEwMDgw
NUQwMiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9y
SlNPTk9iamVjdC5oICovOyB9OwogCQk3QUVEM0UwNTBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAq
LzsgfTsKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBG
QkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJODQ1RTcyRjgw
RkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICov
OyB9OwpAQCAtNTkzNyw4ICs1OTM3LDggQEAKIAkJNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZl
cnJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT05PYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09OT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBJ
bnNwZWN0b3JKU09OT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckpTT05PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JKU09OT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUQzRTAzMEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNw
ZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUQz
RTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlci5oOyBwYXRoID0gZmlsdGVycy9GaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2OTAsOCArOTY5MCw4IEBACiAJ
CQkJMUM4MUI5RkQwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8sCiAJ
CQkJMUM4MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAg
Ki8sCiAJCQkJMUM4MUI5RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9k
ZS5oICovLAotCQkJCTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCAq
LywKLQkJCQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovLAorCQkJ
CTdBQjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBJbnNwZWN0b3JKU09OT2JqZWN0LmNwcCAqLywK
KwkJCQk3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5oICov
LAogCQkJCUJDQzY0RjVGMERDRkI4NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICov
LAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7CkBAIC0xNjczOSw3ICsxNjczOSw3IEBACiAJ
CQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5zdGFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNP
Tk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM5N0FGMzA4RUE5MDg4
MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFODA5OUU2NDky
MDA1NkU1ODEgLyogaHRtbGVkaXRpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMTg3MzEsNyArMTg3
MzEsNyBAQAogCQkJCTkzRjE5QjAzMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xTdHlsZVNoZWV0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxRjFFODJGMEMzQzJCQjkwMDZEQjM5MSAvKiBYU0xURXh0
ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNDA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QUI2Rjg4NzBGQjlEMjcx
MDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUI2Rjg4NzBG
QjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QUVEM0UwNTBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5NEM5RTQgLyog
YmlkaS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHAJKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQ29uc29s
ZU1lc3NhZ2UuaCIKIAogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAi
SlNPTk9iamVjdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgi
CiAKQEAgLTc1LDcgKzc1LDcgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTbwogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQogewotICAgIEpTT05PYmplY3QganNvbk9iaiA9IGZyb250ZW5kLT5uZXdK
U09OT2JqZWN0KCk7CisgICAgSW5zcGVjdG9ySlNPTk9iamVjdCBqc29uT2JqID0gZnJvbnRlbmQt
Pm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsKICAgICBqc29uT2JqLnNldCgic291cmNlIiwgc3Rh
dGljX2Nhc3Q8aW50PihtX3NvdXJjZSkpOwogICAgIGpzb25PYmouc2V0KCJsZXZlbCIsIHN0YXRp
Y19jYXN0PGludD4obV9sZXZlbCkpOwogICAgIGpzb25PYmouc2V0KCJsaW5lIiwgc3RhdGljX2Nh
c3Q8aW50PihtX2xpbmUpKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkocmV2aXNpb24gNDQ2MjYpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRPYmpl
Y3RRdWFyYW50aW5lLmgiCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKEkKICAgICBpZiAobV9zY3Jp
cHRPYmplY3RDcmVhdGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09OT2JqZWN0IGpzb25P
YmplY3QgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgIEluc3BlY3RvckpTT05PYmpl
Y3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAg
U2NyaXB0T2JqZWN0IGRvbVN0b3JhZ2U7CiAgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9i
amVjdChtX2ZyYW1lLmdldCgpLCBtX2RvbVN0b3JhZ2UuZ2V0KCksIGRvbVN0b3JhZ2UpKQogICAg
ICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmNwcAkocmV2aXNpb24gNDQ2MjYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFudGlu
ZS5oIgogCiAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
OjpiaW5kKElucwogICAgIGlmIChtX3NjcmlwdE9iamVjdENyZWF0ZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0
KCk7CisgICAgSW5zcGVjdG9ySlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0lu
c3BlY3RvckpTT05PYmplY3QoKTsKICAgICBTY3JpcHRPYmplY3QgZGF0YWJhc2U7CiAgICAgaWYg
KCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChtX2RhdGFiYXNlLmdldCgpLCBkYXRhYmFzZSkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAJKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29u
c29sZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIgIC8vIFRPRE8ocGZlbGRtYW4pOiBFeHRyYWN0IFNwZWNpYWxQYW5lbHMgdG8g
cmVtb3ZlIGluY2x1ZGUuCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckpTT05PYmplY3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVu
Y3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC02MSwxMSArNjEsMTEg
QEAgSW5zcGVjdG9yRnJvbnRlbmQ6On5JbnNwZWN0b3JGcm9udGVuZCgpIAogICAgIG1fd2ViSW5z
cGVjdG9yID0gU2NyaXB0T2JqZWN0KCk7CiB9CiAKLUpTT05PYmplY3QgSW5zcGVjdG9yRnJvbnRl
bmQ6Om5ld0pTT05PYmplY3QoKSB7Ci0gICAgcmV0dXJuIEpTT05PYmplY3Q6OmNyZWF0ZU5ldyht
X3NjcmlwdFN0YXRlKTsKK0luc3BlY3RvckpTT05PYmplY3QgSW5zcGVjdG9yRnJvbnRlbmQ6Om5l
d0luc3BlY3RvckpTT05PYmplY3QoKSB7CisgICAgcmV0dXJuIEluc3BlY3RvckpTT05PYmplY3Q6
OmNyZWF0ZU5ldyhtX3NjcmlwdFN0YXRlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6
YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBKU09OT2JqZWN0JiBtZXNzYWdlT2JqLCBjb25zdCBW
ZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8U2NyaXB0VmFsdWU+IHdy
YXBwZWRBcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgbWVz
c2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9y
PFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxs
KCJhZGRNZXNzYWdlVG9Db25zb2xlIikpOwogICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudCht
ZXNzYWdlT2JqLnNjcmlwdE9iamVjdCgpKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbnNwZWN0
b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29ucwogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBKU09OT2JqZWN0JiByZXNvdXJjZU9iaikKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6
OmFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBJbnNwZWN0b3JKU09OT2Jq
ZWN0JiByZXNvdXJjZU9iaikKIHsKICAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5j
dGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZFJlc291cmNlIikpOwogICAgIGZ1bmN0aW9uLT5hcHBl
bmRBcmd1bWVudChpZGVudGlmaWVyKTsKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBJbnNwZWN0b3JG
cm9udGVuZDo6YWRkUmVzb3VyY2UobG9uZwogICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOwogfQog
Ci1ib29sIEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVzb3VyY2VPYmopCitib29sIEluc3BlY3RvckZyb250
ZW5kOjp1cGRhdGVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSW5zcGVjdG9y
SlNPTk9iamVjdCYgcmVzb3VyY2VPYmopCiB7CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJ1cGRhdGVSZXNvdXJjZSIpKTsKICAgICBmdW5j
dGlvbi0+YXBwZW5kQXJndW1lbnQoaWRlbnRpZmllcik7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6cmVzdW1lZFNjcmlwdCgpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShEQVRBQkFTRSkKLWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERhdGFiYXNlKGNvbnN0IEpT
T05PYmplY3QmIGRiT2JqZWN0KQorYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkRGF0YWJhc2Uo
Y29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgZGJPYmplY3QpCiB7CiAgICAgT3duUHRyPFNjcmlw
dEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGREYXRhYmFzZSIpKTsK
ICAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoZGJPYmplY3Quc2NyaXB0T2JqZWN0KCkpOwpA
QCAtMjcxLDcgKzI3MSw3IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERhdGFiYXNlKGNv
bnMKICNlbmRpZgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotYm9vbCBJbnNwZWN0b3JGcm9u
dGVuZDo6YWRkRE9NU3RvcmFnZShjb25zdCBKU09OT2JqZWN0JiBkb21TdG9yYWdlT2JqKQorYm9v
bCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkRE9NU3RvcmFnZShjb25zdCBJbnNwZWN0b3JKU09OT2Jq
ZWN0JiBkb21TdG9yYWdlT2JqKQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1
bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkRE9NU3RvcmFnZSIpKTsKICAgICBmdW5jdGlvbi0+
YXBwZW5kQXJndW1lbnQoZG9tU3RvcmFnZU9iai5zY3JpcHRPYmplY3QoKSk7CkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgJKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZF9oCiAjZGVmaW5lIEluc3BlY3RvckZy
b250ZW5kX2gKIAotI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JK
U09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCkBAIC01MywxMiArNTMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0U3RhdGUqLCBTY3JpcHRP
YmplY3Qgd2ViSW5zcGVjdG9yKTsKICAgICAgICAgfkluc3BlY3RvckZyb250ZW5kKCk7Ci0gICAg
ICAgIEpTT05PYmplY3QgbmV3SlNPTk9iamVjdCgpOworICAgICAgICBJbnNwZWN0b3JKU09OT2Jq
ZWN0IG5ld0luc3BlY3RvckpTT05PYmplY3QoKTsKIAotICAgICAgICB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoY29uc3QgSlNPTk9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlw
dFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1l
bnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9y
PFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVk
QXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICAKLSAgICAgICAgYm9v
bCBhZGRSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVz
b3VyY2VPYmopOwotICAgICAgICBib29sIHVwZGF0ZVJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBKU09OT2JqZWN0JiByZXNvdXJjZU9iaik7CisgICAgICAgIGJvb2wgYWRkUmVz
b3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHJl
c291cmNlT2JqKTsKKyAgICAgICAgYm9vbCB1cGRhdGVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgcmVzb3VyY2VPYmopOwogICAgICAgICB2
b2lkIHJlbW92ZVJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyKTsKIAogICAgICAgICB2b2lk
IHVwZGF0ZUZvY3VzZWROb2RlKE5vZGUqIG5vZGUpOwpAQCAtODYsMTEgKzg2LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQotICAgICAgICBi
b29sIGFkZERhdGFiYXNlKGNvbnN0IEpTT05PYmplY3QmIGRiT2JqKTsKKyAgICAgICAgYm9vbCBh
ZGREYXRhYmFzZShjb25zdCBJbnNwZWN0b3JKU09OT2JqZWN0JiBkYk9iaik7CiAjZW5kaWYKICAg
ICAgICAgCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQotICAgICAgICBib29sIGFkZERPTVN0b3Jh
Z2UoY29uc3QgSlNPTk9iamVjdCYgZG9tU3RvcmFnZU9iaik7CisgICAgICAgIGJvb2wgYWRkRE9N
U3RvcmFnZShjb25zdCBJbnNwZWN0b3JKU09OT2JqZWN0JiBkb21TdG9yYWdlT2JqKTsKICNlbmRp
ZgogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05P
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05P
YmplY3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNP
Tk9iamVjdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTT05PYmplY3QuaCIKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JKU09OT2JqZWN0OjpJ
bnNwZWN0b3JKU09OT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKKyAgICA6IG1fc2Ny
aXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7CisgICAgbV9zY3JpcHRPYmplY3QgPSBTY3JpcHRPYmpl
Y3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVj
dDo6c2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30K
KworYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
U2NyaXB0T2JqZWN0JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1f
c2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0
OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgdmFsdWUp
Cit7CisgICAgcmV0dXJuIHNldChuYW1lLCB2YWx1ZS5zY3JpcHRPYmplY3QoKSk7Cit9CisKK2Jv
b2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRl
LCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0
IGNoYXIqIG5hbWUsIGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Qu
c2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBJbnNwZWN0b3JKU09O
T2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nIHZhbHVlKQoreworICAgIHJl
dHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQor
Citib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFs
dWUpCit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1l
LCB2YWx1ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIq
IG5hbWUsIGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3Nj
cmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9CisKK1NjcmlwdE9iamVjdCBJbnNwZWN0b3JKU09O
T2JqZWN0OjpzY3JpcHRPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVj
dDsKK30KKworSW5zcGVjdG9ySlNPTk9iamVjdCBJbnNwZWN0b3JKU09OT2JqZWN0OjpjcmVhdGVO
ZXcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQoreworICAgIHJldHVybiBJbnNwZWN0b3JKU09O
T2JqZWN0KHNjcmlwdFN0YXRlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpZm5kZWYgSW5zcGVjdG9ySlNPTk9iamVjdF9oCisjZGVmaW5lIEluc3Bl
Y3RvckpTT05PYmplY3RfaAorCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZzsK
KworICAgIGNsYXNzIEluc3BlY3RvckpTT05PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAg
Ym9vbCBzZXQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9v
bCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYpOworICAg
ICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAg
ICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJik7CisgICAgICAg
IGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSk7CisgICAgICAgIGJvb2wgc2V0KGNv
bnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyk7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIq
IG5hbWUsIGludCk7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wpOwor
ICAgICAgICBTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0KCkgY29uc3Q7CisKKyAgICAgICAgc3Rh
dGljIEluc3BlY3RvckpTT05PYmplY3QgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgSW5zcGVjdG9ySlNPTk9iamVjdChTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUpOworICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0IG1fc2NyaXB0T2JqZWN0OworICAgIH07Cit9CisKKyNlbmRpZiAv
LyBJbnNwZWN0b3JKU09OT2JqZWN0LmgKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZS5jcHAJKHJldmlzaW9uIDQ0NjI2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckpTT05PYmplY3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2UoYwogICAg
IG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvcHVsYXRlSGVh
ZGVyc09iamVjdChKU09OT2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMpCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoSW5zcGVjdG9ySlNPTk9iamVj
dCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogewogICAgIEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQ
SGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CkBAIC0xMTYsOCArMTE2LDggQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJz
T2JqZWN0KEpTT05PYgogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCkgewotICAgICAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3
SlNPTk9iamVjdCgpOwotICAgICAgICBKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gZnJvbnRl
bmQtPm5ld0pTT05PYmplY3QoKTsKKyAgICAgICAgSW5zcGVjdG9ySlNPTk9iamVjdCBqc29uT2Jq
ZWN0ID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsKKyAgICAgICAgSW5zcGVj
dG9ySlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09O
T2JqZWN0KCk7CiAgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMs
IG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0
SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlcXVl
c3RVUkwiLCByZXF1ZXN0VVJMKCkpOwpAQCAtMTQzLDEzICsxNDMsMTMgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZQogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdl
KE5vQ2hhbmdlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNPTk9iamVjdCBqc29uT2JqZWN0
ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKKyAgICBJbnNwZWN0b3JKU09OT2JqZWN0IGpz
b25PYmplY3QgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOwogICAgIGlmICht
X2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7CiAgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJ1cmwiLCByZXF1ZXN0VVJMKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9tYWlu
IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRoIiwg
bV9yZXF1ZXN0VVJMLnBhdGgoKSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0aENv
bXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKLSAgICAgICAgSlNP
Tk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0KCk7CisgICAg
ICAgIEluc3BlY3RvckpTT05PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+bmV3SW5z
cGVjdG9ySlNPTk9iamVjdCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVl
c3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNl
dCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplCiAgICAgICAgIGpzb25P
YmplY3Quc2V0KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiLCBtX2V4cGVjdGVkQ29udGVudExlbmd0
aCk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdGF0dXNDb2RlIiwgbV9yZXNwb25zZVN0YXR1
c0NvZGUpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1
Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgSlNPTk9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBm
cm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IHJl
c3BvbnNlSGVhZGVycyA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAg
ICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVh
ZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlc3BvbnNlSGVhZGVycyIsIHJl
c3BvbnNlSGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5n
ZSIsIHRydWUpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDQ0NjI2
KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpT
T05PYmplY3Q6OkpTT05PYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQotICAgIDogbV9z
Y3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKLXsKLSAgICBtX3NjcmlwdE9iamVjdCA9IFNjcmlwdE9i
amVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLX0KLQotYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIHJldHVybiBt
X3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOwotfQotCi1ib29s
IEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQotewotICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFt
ZSwgdmFsdWUpOwotfQotCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBKU09OT2JqZWN0JiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc2V0KG5hbWUsIHZhbHVlLnNj
cmlwdE9iamVjdCgpKTsKLX0KLQotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKLX0KLQotYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQotewotICAgIHJldHVybiBtX3NjcmlwdE9i
amVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOwotfQotCi1ib29sIEpTT05PYmpl
Y3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJv
b2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKLX0K
LQotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKLXsK
LSAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVl
KTsKLX0KLQotU2NyaXB0T2JqZWN0IEpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0OwotfQotCi1KU09OT2JqZWN0IEpTT05PYmplY3Q6
OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgcmV0dXJuIEpTT05P
YmplY3Qoc2NyaXB0U3RhdGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSlNPTk9iamVjdC5oCShyZXZpc2lvbiA0NDYyNikKKysrIFdlYkNvcmUvaW5zcGVjdG9y
L0pTT05PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lmbmRlZiBK
U09OT2JqZWN0X2gKLSNkZWZpbmUgSlNPTk9iamVjdF9oCi0KLSNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgU3RyaW5nOwotCi0gICAgY2xhc3MgSlNPTk9iamVjdCB7Ci0gICAgcHVibGljOgot
ICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAg
ICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBKU09OT2JqZWN0Jik7Ci0gICAg
ICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwotICAg
ICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAg
Ym9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgZG91YmxlKTsKLSAgICAgICAgYm9vbCBzZXQoY29u
c3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsKLSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciog
bmFtZSwgaW50KTsKLSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCk7Ci0g
ICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QoKSBjb25zdDsKLQotICAgICAgICBzdGF0
aWMgSlNPTk9iamVjdCBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKTsKLSAgICBw
cml2YXRlOgotICAgICAgICBKU09OT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSk7Ci0g
ICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgICAgICBTY3JpcHRPYmplY3Qg
bV9zY3JpcHRPYmplY3Q7Ci0gICAgfTsKLX0KLQotI2VuZGlmIC8vIEpTT05PYmplY3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31235</attachid>
            <date>2009-06-13 07:40:41 -0700</date>
            <delta_ts>2009-06-15 04:54:10 -0700</delta_ts>
            <desc>Fix Qt build break by rename JSONObject in inspector</desc>
            <filename>bug26340-b.patch</filename>
            <type>text/plain</type>
            <size>36424</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMTMgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGlnbWFuQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIEZpeCBidWlsZCBicmVhaworICAgICAgICBSZW5hbWUgSlNPTk9iamVjdCB0byBJbnNw
ZWN0b3JKU09OT2JqZWN0CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2MzQwCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
Q29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpuZXdJbnNwZWN0b3JKU09OT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kOjphZGRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZDo6dXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
OjphZGRET01TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5jcHA6IENvcGllZCBm
cm9tIFdlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySlNPTk9iamVjdDo6SW5zcGVjdG9ySlNPTk9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySlNPTk9iamVjdDo6c2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckpTT05PYmplY3Q6OmNyZWF0ZU5ldyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckpT
T05PYmplY3QuaDogQ29waWVkIGZyb20gV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5oLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwb3B1bGF0ZUhlYWRlcnNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNP
Tk9iamVjdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pTT05PYmplY3QuaDog
UmVtb3ZlZC4KKwogMjAwOS0wNi0xMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NDQ2NDkpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA1
LDggKzExMDUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxl
Tm9kZS5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwK
LQlXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBcCi0JV2ViQ29yZS9pbnNwZWN0b3Iv
SlNPTk9iamVjdC5oIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNw
cCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5oIFwKIAlXZWJDb3Jl
L2xvYWRlci9DYWNoZS5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmggXAogCVdlYkNvcmUv
bG9hZGVyL0NhY2hlUG9saWN5LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTgxOSw3ICs4MTksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5jcHAgXAotICAgIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBcCisgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckpTT05PYmplY3QuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXAogICAgIGxv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwIFwKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJj
ZXMuYmtsCShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3
b3JraW5nIGNvcHkpCkBAIC02NTYsNyArNjU2LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBs
aXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCiAgICAgICAgIGlu
c3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCi0gICAgICAgIGluc3BlY3Rvci9KU09O
T2JqZWN0LmNwcAorICAgICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAKICAg
ICA8L3NldD4KIAogICAgIDxzZXQgYXBwZW5kPSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19MT0FE
RVIiPgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0
NDY0OSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE1ODM1LDExICsxNTgzNSwxMSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5jcHAiDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckpTT05PYmplY3QuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXEpTT05PYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9ySlNPTk9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NDQ2NDkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtOTkzLDggKzk5Myw4IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBB
QyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3Nh
Z2VFdmVudEludGVybmFsLmggKi87IH07CiAJCTdBNjc0QkRCMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWRE
ZWZlcnJlci5jcHAgKi87IH07CiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aCAqLzsgfTsKLQkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5
RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwotCQk3QUI2Rjg4ODBGQjlEMjcx
MDA4MDVEMDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAq
LzsgfTsKKwkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4
ODUwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuY3BwICovOyB9OworCQk3
QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAw
ODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuaCAqLzsgfTsKIAkJN0FFRDNFMDUwRkJCMUVB
QTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTAzMEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNw
ZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJCTdBRUQzRTA2MEZCQjFFQUEwMEQyQjAzQyAvKiBJ
bnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmgg
Ki87IH07CiAJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY3MEZEMjYxRUUwMEE4
N0Q3OSAvKiBGaWx0ZXIuaCAqLzsgfTsKQEAgLTU5MzcsOCArNTkzNyw4IEBACiAJCTc1NzkzRUQy
MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VH
cm91cExvYWREZWZlcnJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZlcnJlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyog
SlNPTk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09O
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FCNkY4ODYwRkI5RDI3
MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNPTk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUI2Rjg4NTBG
QjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9ySlNPTk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JKU09OT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3Rv
ckpTT05PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
SlNPTk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUVEM0UwMzBGQkIx
RUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5
IC8qIEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWx0ZXIuaDsg
cGF0aCA9IGZpbHRlcnMvRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NjkwLDggKzk2OTAsOCBAQAogCQkJCTFDODFCOUZEMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0UHJvZmlsZS5oICovLAogCQkJCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwICovLAogCQkJCTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0UHJvZmlsZU5vZGUuaCAqLywKLQkJCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIg
LyogSlNPTk9iamVjdC5jcHAgKi8sCi0JCQkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpT
T05PYmplY3QuaCAqLywKKwkJCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSW5zcGVjdG9y
SlNPTk9iamVjdC5jcHAgKi8sCisJCQkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEluc3Bl
Y3RvckpTT05PYmplY3QuaCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9j
YWxpemVkU3RyaW5ncy5qcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW5zcGVjdG9yOwpAQCAtMTY3
MzksNyArMTY3MzksNyBAQAogCQkJCTFBNTY5Q0ZBMEQ3RTJCODIwMDdDMzk4MyAvKiBjX2luc3Rh
bmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGQzBEN0UyQjgyMDA3QzM5ODMgLyogY19y
dW50aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGRTBEN0UyQjgyMDA3QzM5ODMgLyog
Y191dGlsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIg
LyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0FCNkY4ODgwRkI5RDI3MTAwODA1
RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRUQzRTA2
MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlERTgwOTlFNjQ5MjAwNTZFNTgxIC8qIGh0bWxlZGl0aW5nLmggaW4gSGVhZGVycyAq
LywKQEAgLTE4NzMxLDcgKzE4NzMxLDcgQEAKIAkJCQk5M0YxOUIwMzA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUYxRTgyRjBDM0MyQkI5
MDA2REIzOTEgLyogWFNMVEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlC
MDQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEluc3BlY3RvckpTT05PYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FFRDNFMDUwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3Bl
Y3RvckZyb250ZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJF
QTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NTIw
OTdEOTMwMjAwOTRDOUU0IC8qIGJpZGkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgotI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JKU09O
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0UXVhcmFudGluZS5oIgogCkBAIC03NSw3ICs3NSw3IEBAIENvbnNvbGVNZXNzYWdlOjpD
b25zb2xlTWVzc2FnZShNZXNzYWdlU28KIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25z
b2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKLSAgICBKU09OT2JqZWN0IGpzb25P
YmogPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgIEluc3BlY3RvckpTT05PYmplY3Qg
anNvbk9iaiA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAganNvbk9i
ai5zZXQoInNvdXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKICAgICBqc29uT2Jq
LnNldCgibGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGV2ZWwpKTsKICAgICBqc29uT2JqLnNl
dCgibGluZSIsIHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7CkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDQ0
NjQ5KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2lu
Y2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIK
IApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6Ymlu
ZChJCiAgICAgaWYgKG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKKyAg
ICBJbnNwZWN0b3JKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9y
SlNPTk9iamVjdCgpOwogICAgIFNjcmlwdE9iamVjdCBkb21TdG9yYWdlOwogICAgIGlmICghZ2V0
UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5nZXQoKSwgbV9kb21TdG9yYWdlLmdldCgp
LCBkb21TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDQ0NjQ5KQorKysg
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdFF1YXJhbnRpbmUuaCIKIAogCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnMKICAgICBpZiAobV9zY3JpcHRPYmplY3RDcmVh
dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9u
dGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgIEluc3BlY3RvckpTT05PYmplY3QganNvbk9iamVj
dCA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAgU2NyaXB0T2JqZWN0
IGRhdGFiYXNlOwogICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9kYXRhYmFz
ZS5nZXQoKSwgZGF0YWJhc2UpKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiICAvLyBUT0RPKHBmZWxkbWFuKTogRXh0cmFj
dCBTcGVjaWFsUGFuZWxzIHRvIHJlbW92ZSBpbmNsdWRlLgotI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5o
IgpAQCAtNjEsMTEgKzYxLDExIEBAIEluc3BlY3RvckZyb250ZW5kOjp+SW5zcGVjdG9yRnJvbnRl
bmQoKSAKICAgICBtX3dlYkluc3BlY3RvciA9IFNjcmlwdE9iamVjdCgpOwogfQogCi1KU09OT2Jq
ZWN0IEluc3BlY3RvckZyb250ZW5kOjpuZXdKU09OT2JqZWN0KCkgewotICAgIHJldHVybiBKU09O
T2JqZWN0OjpjcmVhdGVOZXcobV9zY3JpcHRTdGF0ZSk7CitJbnNwZWN0b3JKU09OT2JqZWN0IElu
c3BlY3RvckZyb250ZW5kOjpuZXdJbnNwZWN0b3JKU09OT2JqZWN0KCkgeworICAgIHJldHVybiBJ
bnNwZWN0b3JKU09OT2JqZWN0OjpjcmVhdGVOZXcobV9zY3JpcHRTdGF0ZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSlNPTk9iamVjdCYg
bWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVj
dG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEluc3Bl
Y3RvckpTT05PYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBm
cmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0
aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRkTWVzc2FnZVRvQ29uc29sZSIpKTsKICAgICBmdW5jdGlv
bi0+YXBwZW5kQXJndW1lbnQobWVzc2FnZU9iai5zY3JpcHRPYmplY3QoKSk7CkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnMKICAgICBmdW5j
dGlvbi0+Y2FsbCgpOwogfQogCi1ib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRSZXNvdXJjZShs
b25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVzb3VyY2VPYmopCitib29s
IEluc3BlY3RvckZyb250ZW5kOjphZGRSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgcmVzb3VyY2VPYmopCiB7CiAgICAgT3duUHRyPFNjcmlw
dEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGRSZXNvdXJjZSIpKTsK
ICAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoaWRlbnRpZmllcik7CkBAIC05MCw3ICs5MCw3
IEBAIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNlKGxvbmcKICAgICByZXR1cm4g
IWhhZEV4Y2VwdGlvbjsKIH0KIAotYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlUmVzb3Vy
Y2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKQor
Ym9vbCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHJlc291cmNlT2JqKQogewogICAgIE93blB0
cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgidXBkYXRlUmVz
b3VyY2UiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGlkZW50aWZpZXIpOwpAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnJlc3VtZWRTY3JpcHQoKQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi1ib29sIEluc3BlY3RvckZyb250ZW5kOjph
ZGREYXRhYmFzZShjb25zdCBKU09OT2JqZWN0JiBkYk9iamVjdCkKK2Jvb2wgSW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZERhdGFiYXNlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIGRiT2JqZWN0KQog
ewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2Fs
bCgiYWRkRGF0YWJhc2UiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGRiT2JqZWN0
LnNjcmlwdE9iamVjdCgpKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBib29sIEluc3BlY3RvckZyb250
ZW5kOjphZGREYXRhYmFzZShjb25zCiAjZW5kaWYKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
LWJvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERPTVN0b3JhZ2UoY29uc3QgSlNPTk9iamVjdCYg
ZG9tU3RvcmFnZU9iaikKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERPTVN0b3JhZ2UoY29u
c3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgZG9tU3RvcmFnZU9iaikKIHsKICAgICBPd25QdHI8U2Ny
aXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZERPTVN0b3JhZ2Ui
KSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGRvbVN0b3JhZ2VPYmouc2NyaXB0T2Jq
ZWN0KCkpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCShyZXZpc2lv
biA0NDY0OSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAog
I2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9oCiAKLSNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9ySlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNTMsMTIgKzUzLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kKFNj
cmlwdFN0YXRlKiwgU2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvcik7CiAgICAgICAgIH5JbnNwZWN0
b3JGcm9udGVuZCgpOwotICAgICAgICBKU09OT2JqZWN0IG5ld0pTT05PYmplY3QoKTsKKyAgICAg
ICAgSW5zcGVjdG9ySlNPTk9iamVjdCBuZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAKLSAgICAg
ICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTT05PYmplY3QmIG1lc3NhZ2VPYmos
IGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRW
YWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIG1lc3Nh
Z2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxT
Y3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAg
ICAgICAgCi0gICAgICAgIGJvb2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKTsKLSAgICAgICAgYm9vbCB1cGRhdGVSZXNvdXJj
ZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVzb3VyY2VPYmopOwor
ICAgICAgICBib29sIGFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBJbnNw
ZWN0b3JKU09OT2JqZWN0JiByZXNvdXJjZU9iaik7CisgICAgICAgIGJvb2wgdXBkYXRlUmVzb3Vy
Y2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmIHJlc291
cmNlT2JqKTsKICAgICAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmll
cik7CiAKICAgICAgICAgdm9pZCB1cGRhdGVGb2N1c2VkTm9kZShOb2RlKiBub2RlKTsKQEAgLTg2
LDExICs4NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShE
QVRBQkFTRSkKLSAgICAgICAgYm9vbCBhZGREYXRhYmFzZShjb25zdCBKU09OT2JqZWN0JiBkYk9i
aik7CisgICAgICAgIGJvb2wgYWRkRGF0YWJhc2UoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYg
ZGJPYmopOwogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAg
ICAgYm9vbCBhZGRET01TdG9yYWdlKGNvbnN0IEpTT05PYmplY3QmIGRvbVN0b3JhZ2VPYmopOwor
ICAgICAgICBib29sIGFkZERPTVN0b3JhZ2UoY29uc3QgSW5zcGVjdG9ySlNPTk9iamVjdCYgZG9t
U3RvcmFnZU9iaik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAkocmV2aXNpb24gNDQ2NDkpCShmcm9tIFdlYkNv
cmUvaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwOjQ0NjQ5KQorKysgV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTT05PYmplY3Q6OkpTT05P
YmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQorICAgIDogbV9zY3JpcHRTdGF0ZShzY3Jp
cHRTdGF0ZSkKK3sKKyAgICBtX3NjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3
KHNjcmlwdFN0YXRlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5z
ZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmplY3Q6OnNl
dChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQoreworICAgIHJl
dHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQor
Citib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBKU09OT2JqZWN0
JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2V0KG5hbWUsIHZhbHVlLnNjcmlwdE9iamVjdCgpKTsK
K30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUs
IG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3Jp
cHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBj
aGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0
LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jvb2wgSlNPTk9iamVjdDo6
c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRP
YmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBKU09OT2Jq
ZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9z
Y3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworU2NyaXB0
T2JqZWN0IEpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2NyaXB0T2JqZWN0OworfQorCitKU09OT2JqZWN0IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgcmV0dXJuIEpTT05PYmplY3Qoc2NyaXB0U3Rh
dGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAkocmV2aXNpb24gNDQ2NDkpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU09OT2JqZWN0
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNPTk9iamVjdC5oIgogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKQEAgLTM2LDYwICszNiw2MCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTT05PYmplY3Q6OkpTT05PYmplY3QoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlKQorSW5zcGVjdG9ySlNPTk9iamVjdDo6SW5zcGVjdG9ySlNPTk9i
amVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgOiBtX3NjcmlwdFN0YXRlKHNjcmlw
dFN0YXRlKQogewogICAgIG1fc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXco
c2NyaXB0U3RhdGUpOwogfQogCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIG1f
c2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wg
SlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYgdmFs
dWUpCitib29sIEluc3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBTY3JpcHRPYmplY3QmIHZhbHVlKQogewogICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQo
bV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOwogfQogCi1ib29sIEpTT05PYmplY3Q6OnNldChj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBKU09OT2JqZWN0JiB2YWx1ZSkKK2Jvb2wgSW5zcGVjdG9y
SlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3BlY3RvckpTT05PYmpl
Y3QmIHZhbHVlKQogewogICAgIHJldHVybiBzZXQobmFtZSwgdmFsdWUuc2NyaXB0T2JqZWN0KCkp
OwogfQogCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQorYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQorYm9vbCBJbnNwZWN0b3JKU09OT2JqZWN0
OjpzZXQoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQogewogICAgIHJldHVybiBtX3Nj
cmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOwogfQogCi1ib29sIEpT
T05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUpCitib29sIElu
c3BlY3RvckpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2
YWx1ZSk7CiB9CiAKLWJvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2
YWx1ZSkKK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGlu
dCB2YWx1ZSkKIHsKICAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUs
IG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgSW5zcGVjdG9ySlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIq
IG5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3Nj
cmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7CiB9CiAKLVNjcmlwdE9iamVjdCBKU09OT2JqZWN0Ojpz
Y3JpcHRPYmplY3QoKSBjb25zdAorU2NyaXB0T2JqZWN0IEluc3BlY3RvckpTT05PYmplY3Q6OnNj
cmlwdE9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0OwogfQogCi1K
U09OT2JqZWN0IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUp
CitJbnNwZWN0b3JKU09OT2JqZWN0IEluc3BlY3RvckpTT05PYmplY3Q6OmNyZWF0ZU5ldyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTT05PYmplY3Qoc2NyaXB0U3Rh
dGUpOworICAgIHJldHVybiBJbnNwZWN0b3JKU09OT2JqZWN0KHNjcmlwdFN0YXRlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpT
T05PYmplY3QuaAkocmV2aXNpb24gNDQ2NDkpCShmcm9tIFdlYkNvcmUvaW5zcGVjdG9yL0pTT05P
YmplY3QuaDo0NDY0OSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckpTT05PYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBKU09OT2JqZWN0X2gK
KyNkZWZpbmUgSlNPTk9iamVjdF9oCisKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3Ry
aW5nOworCisgICAgY2xhc3MgSlNPTk9iamVjdCB7CisgICAgcHVibGljOgorICAgICAgICBib29s
IHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNl
dChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBKU09OT2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0
KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgICAgICBib29sIHNl
dChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBzZXQoY29u
c3QgY2hhciogbmFtZSwgZG91YmxlKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFt
ZSwgbG9uZyBsb25nKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgaW50KTsK
KyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCk7CisgICAgICAgIFNjcmlw
dE9iamVjdCBzY3JpcHRPYmplY3QoKSBjb25zdDsKKworICAgICAgICBzdGF0aWMgSlNPTk9iamVj
dCBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKTsKKyAgICBwcml2YXRlOgorICAg
ICAgICBKU09OT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSk7CisgICAgICAgIFNjcmlw
dFN0YXRlKiBtX3NjcmlwdFN0YXRlOworICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRPYmpl
Y3Q7CisgICAgfTsKK30KKworI2VuZGlmIC8vIEpTT05PYmplY3RfaApJbmRleDogV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckpTT05PYmplY3QuaAkocmV2aXNpb24gNDQ2NDkpCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JKU09OT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDgg
KzI4LDggQEAKICAqLwogCiAKLSNpZm5kZWYgSlNPTk9iamVjdF9oCi0jZGVmaW5lIEpTT05PYmpl
Y3RfaAorI2lmbmRlZiBJbnNwZWN0b3JKU09OT2JqZWN0X2gKKyNkZWZpbmUgSW5zcGVjdG9ySlNP
Tk9iamVjdF9oCiAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgpAQCAtMzcsMTAgKzM3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgU3RyaW5nOwogCi0gICAgY2xhc3MgSlNPTk9iamVjdCB7CisgICAgY2xhc3MgSW5zcGVjdG9y
SlNPTk9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBKU09OT2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IEluc3BlY3RvckpTT05PYmplY3QmKTsKICAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBu
YW1lLCBkb3VibGUpOwpAQCAtNDksMTIgKzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCk7CiAgICAgICAgIFNjcmlwdE9i
amVjdCBzY3JpcHRPYmplY3QoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgSlNPTk9iamVjdCBj
cmVhdGVOZXcoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKTsKKyAgICAgICAgc3RhdGljIEluc3Bl
Y3RvckpTT05PYmplY3QgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSk7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgSlNPTk9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpOwor
ICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSk7CiAg
ICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwogICAgICAgICBTY3JpcHRPYmplY3Qg
bV9zY3JpcHRPYmplY3Q7CiAgICAgfTsKIH0KIAotI2VuZGlmIC8vIEpTT05PYmplY3RfaAorI2Vu
ZGlmIC8vIEluc3BlY3RvckpTT05PYmplY3QuaApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcAkocmV2aXNpb24gNDQ2NDkpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShj
CiAgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0KIAotc3RhdGljIHZvaWQgcG9wdWxh
dGVIZWFkZXJzT2JqZWN0KEpTT05PYmplY3QqIG9iamVjdCwgY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycykKK3N0YXRpYyB2b2lkIHBvcHVsYXRlSGVhZGVyc09iamVjdChJbnNwZWN0b3JKU09O
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CiAgICAgSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICBmb3Ig
KEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKQEAgLTExNiw4ICsxMTYsOCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhl
YWRlcnNPYmplY3QoSlNPTk9iCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRP
YmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIGlmICghbV9zY3JpcHRP
YmplY3RDcmVhdGVkKSB7Ci0gICAgICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IGZyb250ZW5k
LT5uZXdKU09OT2JqZWN0KCk7Ci0gICAgICAgIEpTT05PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBm
cm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgICAgICBJbnNwZWN0b3JKU09OT2JqZWN0IGpz
b25PYmplY3QgPSBmcm9udGVuZC0+bmV3SW5zcGVjdG9ySlNPTk9iamVjdCgpOworICAgICAgICBJ
bnNwZWN0b3JKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0luc3BlY3Rv
ckpTT05PYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXF1ZXN0SGVh
ZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJl
cXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgi
cmVxdWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7CkBAIC0xNDMsMTMgKzE0MywxMyBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplCiAgICAgaWYgKG1fY2hhbmdlcy5oYXND
aGFuZ2UoTm9DaGFuZ2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU09OT2JqZWN0IGpzb25P
YmplY3QgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOworICAgIEluc3BlY3RvckpTT05PYmpl
Y3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAg
aWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoUmVxdWVzdENoYW5nZSkpIHsKICAgICAgICAganNvbk9i
amVjdC5zZXQoInVybCIsIHJlcXVlc3RVUkwoKSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJk
b21haW4iLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInBh
dGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImxhc3RQ
YXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOwotICAgICAg
ICBKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsK
KyAgICAgICAgSW5zcGVjdG9ySlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IGZyb250ZW5kLT5u
ZXdJbnNwZWN0b3JKU09OT2JqZWN0KCk7CiAgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgm
cmVxdWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKICAgICAgICAganNvbk9i
amVjdC5zZXQoIm1haW5SZXNvdXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwpAQCAtMTYyLDcgKzE2
Miw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamUKICAgICAgICAg
anNvbk9iamVjdC5zZXQoImV4cGVjdGVkQ29udGVudExlbmd0aCIsIG1fZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXR1c0NvZGUiLCBtX3Jlc3BvbnNl
U3RhdHVzQ29kZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIs
IG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBKU09OT2JqZWN0IHJlc3BvbnNlSGVhZGVy
cyA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0KCk7CisgICAgICAgIEluc3BlY3RvckpTT05PYmpl
Y3QgcmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0luc3BlY3RvckpTT05PYmplY3QoKTsK
ICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9u
c2VIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VIZWFkZXJz
IiwgcmVzcG9uc2VIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlc3BvbnNl
Q2hhbmdlIiwgdHJ1ZSk7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24g
NDQ2NDkpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU09OT2Jq
ZWN0LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotSlNPTk9iamVjdDo6SlNPTk9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi0gICAg
OiBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQotewotICAgIG1fc2NyaXB0T2JqZWN0ID0gU2Ny
aXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwotfQotCi1ib29sIEpTT05PYmplY3Q6
OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0K
LWJvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFNjcmlwdE9iamVj
dCYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRl
LCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5h
bWUsIGNvbnN0IEpTT05PYmplY3QmIHZhbHVlKQotewotICAgIHJldHVybiBzZXQobmFtZSwgdmFs
dWUuc2NyaXB0T2JqZWN0KCkpOwotfQotCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIHJldHVybiBtX3NjcmlwdE9iamVj
dC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOwotfQotCi1ib29sIEpTT05PYmplY3Q6
OnNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIG1fc2Ny
aXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgSlNP
Tk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKLX0K
LQotYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQotewot
ICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUp
OwotfQotCi1ib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVl
KQotewotICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwg
dmFsdWUpOwotfQotCi1TY3JpcHRPYmplY3QgSlNPTk9iamVjdDo6c2NyaXB0T2JqZWN0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Q7Ci19Ci0KLUpTT05PYmplY3QgSlNPTk9i
amVjdDo6Y3JlYXRlTmV3KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsKLSAgICByZXR1cm4g
SlNPTk9iamVjdChzY3JpcHRTdGF0ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2luc3BlY3Rvci9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDQ0NjQ5KQorKysgV2ViQ29yZS9pbnNw
ZWN0b3IvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaWZu
ZGVmIEpTT05PYmplY3RfaAotI2RlZmluZSBKU09OT2JqZWN0X2gKLQotI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBjbGFzcyBTdHJpbmc7Ci0KLSAgICBjbGFzcyBKU09OT2JqZWN0IHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIGJvb2wgc2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJik7
Ci0gICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEpTT05PYmplY3QmKTsK
LSAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7
Ci0gICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYpOwotICAg
ICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUpOwotICAgICAgICBib29sIHNl
dChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldChjb25zdCBj
aGFyKiBuYW1lLCBpbnQpOwotICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBib29s
KTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCgpIGNvbnN0OwotCi0gICAgICAg
IHN0YXRpYyBKU09OT2JqZWN0IGNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpOwot
ICAgIHByaXZhdGU6Ci0gICAgICAgIEpTT05PYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
KTsKLSAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7Ci0gICAgICAgIFNjcmlwdE9i
amVjdCBtX3NjcmlwdE9iamVjdDsKLSAgICB9OwotfQotCi0jZW5kaWYgLy8gSlNPTk9iamVjdF9o
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>