<?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>177730</bug_id>
          
          <creation_ts>2017-10-01 18:38:06 -0700</creation_ts>
          <short_desc>[Settings] Move remaining simple settings to Settings.in</short_desc>
          <delta_ts>2017-10-18 13:18:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>177835</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1355095</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-01 18:38:06 -0700</bug_when>
    <thetext>[Settings] Move remaining simple settings to Settings.in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355099</commentid>
    <comment_count>1</comment_count>
      <attachid>322341</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-01 19:00:51 -0700</bug_when>
    <thetext>Created attachment 322341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355122</commentid>
    <comment_count>2</comment_count>
      <attachid>322350</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-01 20:30:23 -0700</bug_when>
    <thetext>Created attachment 322350
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355123</commentid>
    <comment_count>3</comment_count>
      <attachid>322351</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-01 20:34:58 -0700</bug_when>
    <thetext>Created attachment 322351
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355126</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-01 21:26:00 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 322351:

The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355130</commentid>
    <comment_count>5</comment_count>
      <attachid>322351</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-01 23:02:56 -0700</bug_when>
    <thetext>Comment on attachment 322351
For landing

Clearing flags on attachment: 322351

Committed r222698: &lt;http://trac.webkit.org/changeset/222698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355131</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-01 23:02:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355132</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-01 23:04:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/34763346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356015</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-03 13:46:15 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 177835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361768</commentid>
    <comment_count>9</comment_count>
      <attachid>324131</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 10:36:15 -0700</bug_when>
    <thetext>Created attachment 324131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361778</commentid>
    <comment_count>10</comment_count>
      <attachid>324134</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 10:51:09 -0700</bug_when>
    <thetext>Created attachment 324134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361784</commentid>
    <comment_count>11</comment_count>
      <attachid>324134</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-18 10:58:53 -0700</bug_when>
    <thetext>Comment on attachment 324134
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +            Migrage simple settings from SettingsBase to here.

No need to rage about it.

Migrage =&gt; Migrate

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:97
&gt; +        if self.getter:
&gt; +            return self.getter
&gt;          return self.name

return self.getter or self.name

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:131
&gt; +    for line in open(input, &apos;r&apos;):

This is leaking the file handle. It is good programming practice to close the file once we no longer need it. Either we need a close() or, we can use the &quot;with&quot; keyword since File objects implement the context manager interface:

with open(input, &apos;r&apos;) as file:
    for line in file:
        ...

See &lt;https://docs.python.org/2/tutorial/inputoutput.html&gt; for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361789</commentid>
    <comment_count>12</comment_count>
      <attachid>324137</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 11:07:45 -0700</bug_when>
    <thetext>Created attachment 324137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361871</commentid>
    <comment_count>13</comment_count>
      <attachid>324137</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 13:18:42 -0700</bug_when>
    <thetext>Comment on attachment 324137
Patch

Clearing flags on attachment: 324137

Committed r223624: &lt;https://trac.webkit.org/changeset/223624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361872</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 13:18:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322341</attachid>
            <date>2017-10-01 19:00:51 -0700</date>
            <delta_ts>2017-10-18 10:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177730-20171001190050.patch</filename>
            <type>text/plain</type>
            <size>60821</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTEwLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkcyBuZXcgb3B0aW9uIHR5cGUgZm9yIFNldHRp
bmdzLmluLCAnZ2V0dGVyJywgd2hpY2ggYWxsb3dzIHlvdSB0byBzcGVjaWZ5CisgICAgICAgICAg
YSBjdXN0b20gbmFtZSBmb3IgdGhlIHNldHRpbmcncyBnZXR0ZXIuIEZvciBpbnN0YW5jZSwgdGhl
IHNldHRpbmcgamF2YUVuYWJsZWQKKyAgICAgICAgICBoYXMgYSBjdXN0b20gZ2V0dGVyIG5hbWUs
ICdpc0phdmFFbmFibGVkJy4KKyAgICAgICAgLSBBZGRzIHN1cHBvcnQgZm9yIFdURjo6U2Vjb25k
cyBhcyBhIHR5cGUgb2Ygc2V0dGluZy4gVXNlZCBieSBvbmx5IAorICAgICAgICAgIHRpbWVXaXRo
b3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzIGF0IHRoZSBtb21lbnQuCisgICAg
ICAgIC0gTW92ZXMgbm9uLWdlbmVyYXRlZCBzZXR0aW5ncyBmcm9tIFNldHRpbmdzLmgvY3BwIHRo
YXQgZG9uJ3QgcmVxdWlyZSBjdXN0b20KKyAgICAgICAgICBhY3Rpb24gd2hlbiBzZXQsIHRvIFNl
dHRpbmdzLmluCisKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJ
bnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMv
R2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisKKyAgICAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciAnZ2V0dGVyJyBhbmQgdGhlIFNlY29uZHMgdHlwZS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L0ZvbnRSZW5kZXJpbmdNb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmguCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3Mu
aDoKKyAgICAgICAgCisgICAgICAgICAgICBBZGQgRm9udFJlbmRlcmluZ01vZGUuaC4gTW92ZWQg
b3V0IG9mIFRleHRGbGFncy5oIHRvIGJlIGFjY2Vzc2libGUgYnkKKyAgICAgICAgICAgIHRoZSBz
ZXR0aW5ncyBnZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xp
Y3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldE5lZWRzQWRvYmVG
cmFtZVJlbG9hZGluZ1F1aXJrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRGb250UmVuZGVyaW5nTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3Jh
cGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRXZWJGb250c0Fs
d2F5c0ZhbGxCYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpu
ZWVkc0Fjcm9iYXRGcmFtZVJlbG9hZGluZ1F1aXJrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFRvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9s
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dGltZVdpdGhvdXRNb3Vz
ZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6d2ViRm9udHNBbHdheXNGYWxs
QmFjayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFEZXZpY2VJZGVudGlmaWVyU3RvcmFnZURpcmVj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bWVkaWFEZXZpY2VJ
ZGVudGlmaWVyU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBheUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2Vk
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBh
eUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6aXNGb3JjZVBlbmRpbmdXZWJHTFBvbGljeSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKworICAgICAgICAgICAgTW92ZWQgaGFuZC13cml0
dGVuIHNldHRpbmdzIHRvIGJlIFNldHRpbmdzLmluIGJhc2VkLgorCiAyMDE3LTEwLTAxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIERPTSBh
Ym9ydGluZyAoaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNhYm9ydGluZy1vbmdvaW5nLWFj
dGl2aXRpZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVy
bmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkJKHJldmlzaW9uIDIyMjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0
dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFr
ZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYXBUb0lETFR5cGUs
IG1ha2VDb25kaXRpb25hbFN0cmluZworZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFr
ZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFrZUdldHRlckZ1bmN0aW9uTmFtZSwgbWFrZUNvbmRpdGlv
bmFsU3RyaW5nLCBtYXBUb0lETFR5cGUKIAogCiBkZWYgZ2VuZXJhdGVJbnRlcm5hbFNldHRpbmdz
SW1wbGVtZW50YXRpb25GaWxlKG91dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpOgpAQCAtNTMsNyAr
NTMsNyBAQCBkZWYgZ2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpCiAgICAgICAg
IGlmIHNldHRpbmcuY29uZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIj
aWYgIiArIG1ha2VDb25kaXRpb25hbFN0cmluZyhzZXR0aW5nLmNvbmRpdGlvbmFsKSArICJcbiIp
CiAKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8iICsgc2V0dGluZy5uYW1lICsg
IihwYWdlLT5zZXR0aW5ncygpLiIgKyBzZXR0aW5nLm5hbWUgKyAiKCkpXG4iKQorICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIgICAgLCBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiKHBhZ2UtPnNldHRp
bmdzKCkuIiArIG1ha2VHZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykgKyAiKCkpXG4iKQogCiAg
ICAgICAgIGlmIHNldHRpbmcuY29uZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndy
aXRlKCIjZW5kaWZcbiIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0
dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NIZWFkZXJG
aWxlLnB5CShyZXZpc2lvbiAyMjI2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVy
YXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJvbSBTZXR0aW5ncyBpbXBv
cnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1l
Citmcm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1h
a2VTZXR0ZXJGdW5jdGlvbk5hbWUsIG1ha2VHZXR0ZXJGdW5jdGlvbk5hbWUKIAogCiBkZWYgZ2Vu
ZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC05
NCwxMCArOTQsMTIgQEAgZGVmIGluY2x1ZGVGb3JTZXR0aW5nKHNldHRpbmcpOgogICAgIGlmIHNl
dHRpbmcudHlwZSA9PSAnYm9vbCc6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAjIFNwZWNp
YWwgY2FzZSBTdHJpbmcsIGFzIGl0IGRvZXNuJ3QgZm9sbG93IHRoZSBwYXR0ZXJuIG9mIGJlaW5n
IGluIGEgZmlsZSB3aXRoIHRoZQorICAgICMgU3BlY2lhbCBjYXNlIFN0cmluZyBhbmQgU2Vjb25k
cywgYXMgdGhleSBkb2Vzbid0IGZvbGxvdyB0aGUgcGF0dGVybiBvZiBiZWluZyBpbiBhIGZpbGUg
d2l0aCB0aGUKICAgICAjIHNhbWUgbmFtZSBhcyB0aGUgY2xhc3MuCiAgICAgaWYgc2V0dGluZy50
eXBlID09ICdTdHJpbmcnOgogICAgICAgICByZXR1cm4gIjx3dGYvdGV4dC9XVEZTdHJpbmcuaD4i
CisgICAgaWYgc2V0dGluZy50eXBlID09ICdTZWNvbmRzJzoKKyAgICAgICAgcmV0dXJuICI8d3Rm
L1NlY29uZHMuaD4iCiAKICAgICAjIERlZmF1bHQgdG8gdXNpbmcgdGhlIHR5cGUgbmFtZSBmb3Ig
dGhlIGluY2x1ZGUuCiAgICAgcmV0dXJuICJcIiIgKyBzZXR0aW5nLnR5cGUgKyAiLmhcIiIKQEAg
LTEzOCwyMSArMTQwLDIyIEBAIGRlZiBwcmludEluY2x1ZGVzKG91dHB1dEZpbGUsIHNvcnRlZFVu
Y28KIAogZGVmIHByaW50R2V0dGVyQW5kU2V0dGVyKG91dHB1dEZpbGUsIHNldHRpbmcpOgogICAg
IHNldHRlckZ1bmN0aW9uTmFtZSA9IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykKKyAg
ICBnZXR0ZXJGdW5jdGlvbk5hbWUgPSBtYWtlR2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpCiAK
ICAgICAjIEV4cG9ydCBpcyBvbmx5IG5lZWRlZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgaW4g
dGhlIGhlYWRlci4KICAgICB3ZWJjb3JlRXhwb3J0ID0gIldFQkNPUkVfRVhQT1JUICIgaWYgc2V0
dGluZy5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMgZWxzZSAiIgogCiAgICAgaWYgc2V0
dGluZy50eXBlWzBdLmlzbG93ZXIoKToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIg
KyBzZXR0aW5nLnR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4g
bV8iICsgc2V0dGluZy5uYW1lICsgIjsgfSBcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUo
IiAgICAiICsgc2V0dGluZy50eXBlICsgIiAiICsgZ2V0dGVyRnVuY3Rpb25OYW1lICsgIigpIGNv
bnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH0gXG4iKQogICAgICAgICBvdXRw
dXRGaWxlLndyaXRlKCIgICAgIiArIHdlYmNvcmVFeHBvcnQgKyAidm9pZCAiICsgc2V0dGVyRnVu
Y3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIiki
KQogICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICBjb25zdCAiICsgc2V0
dGluZy50eXBlICsgIiYgIiArIHNldHRpbmcubmFtZSArICIoKSBjb25zdCB7IHJldHVybiBtXyIg
KyBzZXR0aW5nLm5hbWUgKyAiOyB9IFxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAg
IGNvbnN0ICIgKyBzZXR0aW5nLnR5cGUgKyAiJiAiICsgZ2V0dGVyRnVuY3Rpb25OYW1lICsgIigp
IGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH0gXG4iKQogICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIgICAgIiArIHdlYmNvcmVFeHBvcnQgKyAidm9pZCAiICsgc2V0dGVy
RnVuY3Rpb25OYW1lICsgIihjb25zdCAiICsgc2V0dGluZy50eXBlICsgIiYgIiArIHNldHRpbmcu
bmFtZSArICIpIikKIAogICAgIGlmIHNldHRpbmcuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJh
bWVzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCI7IFxuIikKKyAgICAgICAgb3V0cHV0Rmls
ZS53cml0ZSgiO1xuXG4iKQogICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiB7
IG1fIiArIHNldHRpbmcubmFtZSArICIgPSAiICsgc2V0dGluZy5uYW1lICsgIjsgfSBcbiIpCisg
ICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiB7IG1fIiArIHNldHRpbmcubmFtZSArICIgPSAiICsg
c2V0dGluZy5uYW1lICsgIjsgfVxuXG4iKQogCiAKIGRlZiBwcmludEdldHRlcnNBbmRTZXR0ZXJz
KG91dHB1dEZpbGUsIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0aW5nc05hbWVzLCBzb3J0ZWRDb25k
aXRpb25hbHMsIHNldHRpbmdzQnlDb25kaXRpb25hbCwgc2V0dGluZ3MpOgpJbmRleDogU291cmNl
L1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL1NldHRpbmdzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5weQko
cmV2aXNpb24gMjIyNjkxKQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRp
bmdzL1NldHRpbmdzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIGNsYXNzIFNl
dHRpbmc6CiAgICAgICAgIHNlbGYuY29uZGl0aW9uYWwgPSBOb25lCiAgICAgICAgIHNlbGYuc2V0
TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzID0gTm9uZQogICAgICAgICBzZWxmLmluY2x1ZGUg
PSBOb25lCisgICAgICAgIHNlbGYuZ2V0dGVyID0gTm9uZQogCiAgICAgZGVmIF9fc3RyX18oc2Vs
Zik6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYubmFtZSArICIgVFlQRToiICsgc2VsZi50eXBlCkBA
IC03Nyw2ICs3OCw4IEBAIGNsYXNzIFNldHRpbmc6CiAgICAgICAgICAgICByZXN1bHQgKz0gIiBS
RUNBTEM6IiArIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzCiAgICAgICAgIGlm
IChzZWxmLmluY2x1ZGUpOgogICAgICAgICAgICAgcmVzdWx0ICs9ICIgSU5DTFVERToiICsgc2Vs
Zi5pbmNsdWRlCisgICAgICAgIGlmIChzZWxmLmdldHRlcik6CisgICAgICAgICAgICByZXN1bHQg
Kz0gIiBHRVRURVI6IiArIHNlbGYuZ2V0dGVyCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogCkBA
IC05MSw2ICs5NCwxMiBAQCBkZWYgbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKToKICAg
ICByZXR1cm4gInNldCIgKyB1cHBlcmNhc2VGaXJzdE4oc2V0dGluZy5uYW1lLCAxKQogCiAKK2Rl
ZiBtYWtlR2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpOgorICAgIGlmIHNldHRpbmcuZ2V0dGVy
OgorICAgICAgICByZXR1cm4gc2V0dGluZy5nZXR0ZXIKKyAgICByZXR1cm4gc2V0dGluZy5uYW1l
CisKKwogZGVmIG1ha2VQcmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRpb25hbCk6CiAgICAgcmV0
dXJuIGNvbmRpdGlvbmFsLnNwbGl0KCd8JylbMF0KIApAQCAtMTM4LDYgKzE0Nyw4IEBAIGRlZiBw
YXJzZUlucHV0KGlucHV0KToKICAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5zZXROZWVkc1N0
eWxlUmVjYWxjSW5BbGxGcmFtZXMgPSB2YWx1ZQogICAgICAgICAgICAgICAgIGlmIChuYW1lID09
ICdpbmNsdWRlJyk6CiAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuaW5jbHVkZSA9IHZhbHVl
CisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ2dldHRlcicpOgorICAgICAgICAgICAgICAg
ICAgICBzZXR0aW5nLmdldHRlciA9IHZhbHVlCiAKICAgICAgICAgICAgICMgRklYTUU6IEFTU0VS
VCBzb21ldGhpbmcgYWJvdXQgc2V0dGluZy5pbml0aWFsCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjY5
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzE5Nyw2ICszMTk3LDcgQEAKIAkJN0MxRjVENTkxRjIyRkY3MzAw
QTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRjVENTgxRjIyRkY3MzAwQTg4NzRGIC8q
IEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oICovOyB9OwogCQk3QzJCREQzRDE3QzdGOThD
MDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBK
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAzOEZG
MTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9i
YWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkY4QkMyMUY4MUJGNUIwMDMwNUMzMiAvKiBGb250
UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NDQjExRDgxRjgxQjIyMDAwODQ5QUZEIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MyRkE2MTEx
RUE5NUEzOTAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJGQTYwRjFFQTk1QTMy
MDBBMDMxMDggLyogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCAqLzsgfTsKIAkJN0My
RkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyRkE2MTAxRUE5
NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzBEOTgzMUY4MTVBRUMw
MDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk3RTFGODE1QUMwMDAyNjgzNTYgLyogSlNBYm9y
dENvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTE2NDAsNiArMTE2NDEsNyBAQAogCQk3Q0M2OTkz
RTE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXRO
YW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXROYW1l
c3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAw
M0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0ND
QjExRDgxRjgxQjIyMDAwODQ5QUZEIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRDBCQTAyMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFz
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0QwRTJCNTFGODBBNDgy
MDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFib3J0Q29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5NzgsNiArMjM5ODAsNyBA
QAogCQkJCTBGREE3QzIwMTg4MzJCQ0MwMEM5NTRCNSAvKiBEYXRlVGltZUZvcm1hdC5jcHAgKi8s
CiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJ
CQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICov
LAorCQkJCTdDQ0IxMUQ4MUY4MUIyMjAwMDg0OUFGRCAvKiBGb250UmVuZGVyaW5nTW9kZS5oICov
LAogCQkJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAogCQkJ
CTg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1
RUFBMDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovLApAQCAtMjYxNjYsNiArMjYx
NjksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMjYxNkE0MTg3RTY1QzEwMDc5NTVGMyAv
KiBpb3MgKi8sCiAJCQkJMkQ1MDM2NjYxQkNERERDNDAwRTIwQkIzIC8qIG1hYyAqLywKKwkJCQk3
Q0QwRTJCNjFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmNwcCAqLywKKwkJCQk3
Q0QwRTJCNTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8sCisJCQkJN0NE
MEUyQjcxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5pZGwgKi8sCisJCQkJN0NE
MEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKKwkJCQk3Q0QwRTJC
QzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKKwkJCQk3Q0QwRTJCRTFGODBB
NTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAogCQkJCTdDNTIyMjk3MUUxREFFMTYw
MDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCiAJCQkJN0M1MjIyOTgxRTFEQUUx
NjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCiAJCQkJN0NEMEJBMDIxQjhGNzlD
OTAwNUNFQkJFIC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCAqLywKQEAgLTI2MTcz
LDEyICsyNjE4Miw2IEBACiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5oICovLAogCQkJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaCAqLywKLQkJCQk3Q0QwRTJCNTFGODBBNDgyMDAxNkE0Q0UgLyogQWJv
cnRDb250cm9sbGVyLmggKi8sCi0JCQkJN0NEMEUyQjYxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0
Q29udHJvbGxlci5jcHAgKi8sCi0JCQkJN0NEMEUyQjcxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0
Q29udHJvbGxlci5pZGwgKi8sCi0JCQkJN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0
U2lnbmFsLmggKi8sCi0JCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFs
LmNwcCAqLywKLQkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRs
ICovLAogCQkJCTMxOTg0N0ZFMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5jcHAg
Ki8sCiAJCQkJMzE5ODQ3RkYxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmggKi8s
CiAJCQkJMzE5ODQ4MDAxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50LmlkbCAqLywK
QEAgLTI3MDczLDYgKzI3MDc2LDggQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTdDRDBF
MkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk1OSw2ICsy
Nzk2NCw3IEBACiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0NDAgLyogRm9udFBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8q
IEZvbnRSYW5nZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMkY4QkMyMUY4MUJGNUIwMDMwNUMz
MiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJBQjBBRjcxRTZC
M0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JDbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjgzNzQsNiArMjgzODAsOCBAQAogCQkJCTJEMEI0QUFCMThE
QTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMjFFNTdE
MTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0FDNDcwMjE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QzMwRDk4NDFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDMzBEOTg2MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFj
dFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwNDQwNUExRTUzOTM2MjAwMzU2NjAxIC8q
IEpTQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UxRTVBRDFFOEREMDlC
MDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjkzODcsNyAr
MjkzOTUsNiBAQAogCQkJCTUyRjEwODY2MTYyQjZEQTgwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRD
aGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyog
TW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8q
IE1vY2tDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzMwRDk4NDFGODE1QUVDMDAy
NjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzIw
MUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwMjgxLDcgKzMwMjg4LDYgQEAKIAkJCQlCMjIyNzk5NTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3OTk4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0
b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzMwRDk4NjFGODE1QUVDMDAyNjgzNTYg
LyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGQjNGODQxM0JDNzU0QzAw
OTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3OTlDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDaXJjbGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzk5RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ2xpcFBhdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzI1LDcgKzMwMzMxLDYgQEAKIAkJCQlCMjIyN0EwNjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBMDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0Zp
bHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTBDMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EwRjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwNzgzLDcgKzMwNzg4LDYgQEAKIAkJCQk3N0ExN0E3ODEyRjI4NjQy
MDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzE2QkRCOEMxRTZFMTUzMDAwREUwRDVBIC8qIFdlYkdQVUxheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUUyMTIzQzFFNDkyNEE0MDBDRTEwNDQgLyogV2ViSGVhcEFnZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4
NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTI3Myw2ICszMTI3Nyw4IEBACiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQk3Q0QwRTJCOTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDRDBFMkMwMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25h
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQjkxQTUwNzI2OTAwODc2
Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1
N0FCQTFBNTA3MjZGMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxNTUwLDcgKzMxNTU2LDYgQEAKIAkJCQlDRTI4NDk4OTFDQTM2MTQ2
MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0U3OTlGQTcxQzZBNTA1NzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTZEQURG
OTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzBEOTg1MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fi
b3J0U2lnbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzk5RjlGMUM2QTRDMTYwMDk3QjUx
OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0U3OTlGOTcxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGQUIxQzZBNTA2NjAwOTdCNTE4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMTYyMiw3ICszMTYyNyw2IEBACiAJCQkJRTEyMzNGMTAxODVBNDEzMDAwOERGQUY1IC8q
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFCRDMzMTkxODJEOERERDAwQzA1RDlGIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzI2NkQ4MTgzMTdBQjQwMDNGOEIzMyAv
KiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk3QzMwRDk4MzFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4MkIxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRUUxODI0REM3OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNG
MDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzI0MDMsNiArMzI0MDcsOCBAQAogCQkJCTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5
RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEOUZGNkUxMTkwODM5
MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
N0FDNDcwMTE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMzBEOTgzMUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QzMwRDk4NTFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25h
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MThGODgwNDBGRjk1N0FFMDA4MEYwNDUgLyogSlNB
YnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzA0NDA1QzFFNTM5Mzc5MDAz
NTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdFMUU1
QUMxRThERDA5QjAwRUUzN0M5IC8qIEpTQWVzQ3RyUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzI0ODEsNyArMzI0ODcsNiBAQAogCQkJCUE1ODRGRTNCMTg2NEUyRDgwMDg0M0IxMCAvKiBK
U0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Y5QjZFMDBCQTBG
QjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc5QUM5MjE4
MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0NEMEUyQzAxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEQTE1RUJEMTJCMDNGMEIwMDNBNTgzQSAvKiBKU0NvbnZvbHZlck5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29v
cmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQ0YzQjIxQjZCRTIwODAwNjJENEMy
IC8qIEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjU3NCw3
ICszMjU3OSw2IEBACiAJCQkJODM2QUNFRDIxRUNBQUIxOTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQkJCQ0NCMUY1NjE4MEQwMDVFRkFBQyAvKiBKU0RP
TU1hdHJpeDJESW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzU2NTdDNzFFQ0FCMTA3MDBD
REU3MkQgLyogSlNET01NYXRyaXhJbml0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDRDBFMkI5
MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODM2QUNFRDUxRUNBQUIxOTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4UmVhZE9ubHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4MDYwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4MDgwRDc1N0U3RDAwRkRGOTU5IC8qIEpT
RE9NTWltZVR5cGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiAyMjI2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFwLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KQEAgLTE0OCwzMCArMTQ3LDE3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQog
ICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OkFsbG93QWxsU3Rv
cmFnZSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAg
ICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUlu
dGVydmFsKCkpCi0gICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2lzSmF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eShmYWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQotICAgICwgbV9wcmVmZXJN
SU1FVHlwZUZvckltYWdlcyhmYWxzZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2lzU2NyaXB0RW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbmVlZHNBZG9iZUZyYW1l
UmVsb2FkaW5nUXVpcmsoZmFsc2UpCiAgICAgLCBtX3VzZXNQYWdlQ2FjaGUoZmFsc2UpCi0gICAg
LCBtX2ZvbnRSZW5kZXJpbmdNb2RlKDApCi0gICAgLCBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGlj
YXRvcihmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoZmFs
c2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZChmYWxzZSkKLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxzZSkKLSNl
bmRpZgogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQot
ICAgICwgbV90aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygzX3Mp
CiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nczo6
aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9oaWRkZW5QYWdlRE9NVGlt
ZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1faGlkZGVuUGFnZUNTU0FuaW1hdGlv
blN1c3BlbnNpb25FbmFibGVkKGZhbHNlKQotICAgICwgbV9mb250RmFsbGJhY2tQcmVmZXJzUGlj
dG9ncmFwaHMoZmFsc2UpCi0gICAgLCBtX3dlYkZvbnRzQWx3YXlzRmFsbEJhY2soZmFsc2UpCi0g
ICAgLCBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUg
bWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21p
Y1N0cmluZwogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkBAIC0zNDQsMTYg
KzMzMCw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNjcmlwdEVuYWJsZWQoYm9vbCBpc1MKICNlbmRp
ZgogfQogCi12b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZChib29sIGlzSmF2YUVuYWJsZWQp
Ci17Ci0gICAgbV9pc0phdmFFbmFibGVkID0gaXNKYXZhRW5hYmxlZDsKLX0KLQotdm9pZCBTZXR0
aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wgaXNKYXZhRW5hYmxlZEZvckxv
Y2FsRmlsZXMpCi17Ci0gICAgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA9IGlzSmF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzOwotfQotCiB2b2lkIFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVk
KGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBtX2FyZUltYWdlc0VuYWJsZWQgPSBhcmVJ
bWFnZXNFbmFibGVkOwpAQCAtMzYyLDE2ICszMzgsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRJbWFn
ZXNFbmFibGVkKGJvb2wgYXJlCiAgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRQcmVmZXJNSU1FVHlwZUZv
ckltYWdlcyhib29sIHByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKQotewotICAgIG1fcHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMgPSBwcmVmZXJNSU1FVHlwZUZvckltYWdlczsKLX0KLQotdm9pZCBTZXR0
aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCBmb3JjZWQpCi17Ci0gICAgbV9m
b3JjZVBlbmRpbmdXZWJHTFBvbGljeSA9IGZvcmNlZDsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0
UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkKIHsKICAgICBpZiAobV9hcmVQ
bHVnaW5zRW5hYmxlZCA9PSBhcmVQbHVnaW5zRW5hYmxlZCkKQEAgLTM5MiwxMyArMzU4LDYgQEAg
dm9pZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbgogICAgICAgICBtX3BhZ2Ut
PnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHF1
aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2NzQ1MzcgYW5kIDUyMTEyNzEuIFdlIG5l
ZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKLS8vIGNhbiBmaXggdGhlIGJ1ZyBmcm9tIHRo
ZWlyIGVuZC4KLXZvaWQgU2V0dGluZ3M6OnNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJr
KGJvb2wgc2hvdWxkTm90UmVsb2FkSUZyYW1lc0ZvclVuY2hhbmdlZFNSQykKLXsKLSAgICBtX25l
ZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrID0gc2hvdWxkTm90UmVsb2FkSUZyYW1lc0ZvclVu
Y2hhbmdlZFNSQzsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0TWluaW11bURPTVRpbWVySW50ZXJ2
YWwoU2Vjb25kcyBpbnRlcnZhbCkKIHsKICAgICBhdXRvIG9sZFRpbWVySW50ZXJ2YWwgPSBzdGQ6
OmV4Y2hhbmdlKG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWwsIGludGVydmFsKTsKQEAgLTQzMywy
MCArMzkyLDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0VXNlc1BhZ2VDYWNoZShib29sIHVzZQogICAg
ICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5lVG9TaXplTm93KDAsIFBydW5pbmdSZWFz
b246Ok5vbmUpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRGb250UmVuZGVyaW5nTW9kZShGb250
UmVuZGVyaW5nTW9kZSBtb2RlKQotewotICAgIGlmIChmb250UmVuZGVyaW5nTW9kZSgpID09IG1v
ZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ZvbnRSZW5kZXJpbmdNb2RlID0gc3RhdGljX2Nh
c3Q8aW50Pihtb2RlKTsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNldE5lZWRz
UmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwotfQotCi1Gb250UmVuZGVyaW5nTW9kZSBTZXR0aW5n
czo6Zm9udFJlbmRlcmluZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxG
b250UmVuZGVyaW5nTW9kZT4obV9mb250UmVuZGVyaW5nTW9kZSk7Ci19Ci0KIHZvaWQgU2V0dGlu
Z3M6OnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29sIGRuc1ByZWZldGNoaW5nRW5hYmxlZCkK
IHsKICAgICBpZiAobV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgPT0gZG5zUHJlZmV0Y2hpbmdFbmFi
bGVkKQpAQCAtNDU3LDE0ICs0MDIsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRETlNQcmVmZXRjaGlu
Z0VuYWJsZWQoCiAgICAgICAgIG1fcGFnZS0+ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsK
IH0KIAotdm9pZCBTZXR0aW5nczo6c2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKGJvb2wg
ZW5hYmxlZCkKLXsKLSAgICBpZiAobV9zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgPT0gZW5h
YmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX3Nob3dUaWxlZFNjcm9sbGlu
Z0luZGljYXRvciA9IGVuYWJsZWQ7Ci19Ci0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiB2
b2lkIFNldHRpbmdzOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxl
KQogewpAQCAtNjUwLDI0ICs1ODcsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRIaWRkZW5QYWdlQ1NT
QW5pbWF0aW9uCiAgICAgICAgIG1fcGFnZS0+aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNp
b25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Rm9udEZhbGxiYWNrUHJl
ZmVyc1BpY3RvZ3JhcGhzKGJvb2wgcHJlZmVyUGljdG9ncmFwaHMpCi17Ci0gICAgaWYgKG1fZm9u
dEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzID09IHByZWZlclBpY3RvZ3JhcGhzKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyA9IHByZWZl
clBpY3RvZ3JhcGhzOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2V0TmVlZHNS
ZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Ci19Ci0KLXZvaWQgU2V0dGluZ3M6OnNldFdlYkZvbnRz
QWx3YXlzRmFsbEJhY2soYm9vbCBlbmFibGUpCi17Ci0gICAgaWYgKG1fd2ViRm9udHNBbHdheXNG
YWxsQmFjayA9PSBlbmFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2ViRm9udHNBbHdh
eXNGYWxsQmFjayA9IGVuYWJsZTsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0TG93UG93ZXJWaWRl
b0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCBmbGFnKQogewogICAgIGdMb3dQb3dlclZpZGVv
QXVkaW9CdWZmZXJTaXplRW5hYmxlZCA9IGZsYWc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CShyZXZpc2lvbiAyMjI2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNldHRpbmdzRGVmYXVsdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdz
R2VuZXJhdGVkLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4KQEAgLTg4LDE5
ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2NyaXB0RW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTY3JpcHRFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRFbmFibGVkKGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxl
ZChib29sKTsKLSAgICBib29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2
YUVuYWJsZWQ7IH0KLQotICAgIC8vIFRoaXMgc2V0dGluZ3MgaXMgb25seSBjb25zdWx0ZWQgaWYg
aXNKYXZhRW5hYmxlZCgpIHJldHVybnMgdHJ1ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sKTsKLSAgICBib29sIGlzSmF2YUVuYWJsZWRG
b3JMb2NhbEZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
czsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOwog
ICAgIGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlSW1hZ2VzRW5h
YmxlZDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVmZXJNSU1FVHlwZUZvcklt
YWdlcyhib29sKTsKLSAgICBib29sIHByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlczsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sKTsKICAgICBib29sIGFyZVBsdWdpbnNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5zRW5hYmxlZDsgfQogCkBAIC0xMTAsOSArOTks
NiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKGNvbnN0IFVSTCYpOwogICAgIGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlyayhib29sKTsK
LSAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7IHJldHVy
biBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrOyB9Ci0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE1pbmltdW1ET01UaW1lckludGVydmFsKFNlY29uZHMpOyAvLyBJbml0aWFsaXpl
ZCB0byBET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpLgogICAgIFNlY29uZHMgbWlu
aW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1ET01UaW1lcklu
dGVydmFsOyB9CiAKQEAgLTEyNiwxMiArMTEyLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwogICAgIGJvb2wgdXNlc1BhZ2VDYWNo
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VDYWNoZTsgfQotICAgICAgICAKLSAgICB2b2lk
IHNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRSZW5kZXJpbmdNb2RlIG1vZGUpOwotICAgIEZvbnRS
ZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihib29sKTsKLSAgICBib29s
IHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1RpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yOyB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAg
Ym9vbCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsgfQpAQCAtMTgzLDExICsxNjMsNiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihi
b29sKTsKICAgICBzdGF0aWMgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCk7CiAKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgPSBlbmFibGVk
OyB9Ci0gICAgYm9vbCBpc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsgfQotI2VuZGlmCi0KICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3Rv
cmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5OyB9CiAKQEAgLTE5NywxOCArMTcyLDkgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmli
dXRlU2V0dGVycyhib29sKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJ
bkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKIAotICAgIHZvaWQgc2V0VGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoU2Vjb25kcyB0aW1lKSB7IG1fdGltZVdpdGhvdXRN
b3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgPSB0aW1lOyB9Ci0gICAgU2Vjb25kcyB0
aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHM7IH0KLQog
ICAgIGJvb2wgaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQ7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9u
RW5hYmxlZChib29sKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9udEZhbGxiYWNr
UHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wpOwotICAgIGJvb2wgZm9udEZhbGxiYWNrUHJlZmVyc1Bp
Y3RvZ3JhcGhzKCkgY29uc3QgeyByZXR1cm4gbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFw
aHM7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViRm9udHNBbHdheXNGYWxsQmFj
ayhib29sKTsKLSAgICBib29sIHdlYkZvbnRzQWx3YXlzRmFsbEJhY2soKSBjb25zdCB7IHJldHVy
biBtX3dlYkZvbnRzQWx3YXlzRmFsbEJhY2s7IH0KLQogICAgIHN0YXRpYyBib29sIGxvd1Bvd2Vy
VmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkgeyByZXR1cm4gZ0xvd1Bvd2VyVmlkZW9BdWRp
b0J1ZmZlclNpemVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCk7CiAKQEAgLTI0MSwxNiAr
MjA3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBnQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkID0g
ZW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGN1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZCgpOwotCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0g
ICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGRpcmVjdG9yeTsgfQotICAgIGNv
bnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICB2b2lkIHNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9tZWRpYURldmljZUlkZW50aWZpZXJT
dG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBtZWRpYURl
dmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYURl
dmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KICAgICBzdGF0aWMgYm9vbCBtb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChib29sKTsKIApAQCAtMjU4LDE3ICsyMTYsNiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYXB0dXJl
UmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2wpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQotICAgIGJvb2wgYXBwbGVQYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBs
ZVBheUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5RW5hYmxlZChib29sIGFwcGxlUGF5
RW5hYmxlZCkgeyBtX2FwcGxlUGF5RW5hYmxlZCA9IGFwcGxlUGF5RW5hYmxlZDsgfQotCi0gICAg
Ym9vbCBhcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQ7IH0KLSAgICB2b2lkIHNldEFw
cGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkKGJvb2wgYXBwbGVQYXlDYXBhYmlsaXR5
RGlzY2xvc3VyZUFsbG93ZWQpIHsgbV9hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dl
ZCA9IGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkOyB9Ci0jZW5kaWYKLQotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCk7Ci0g
ICAgYm9vbCBpc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9mb3Jj
ZVBlbmRpbmdXZWJHTFBvbGljeTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dz
QW55U1NMQ2VydGlmaWNhdGUoKTsKIApAQCAtMjg5LDM2ICsyMzYsMjEgQEAgcHJpdmF0ZToKICAg
ICBTZWNvbmRzIG1fbGF5b3V0SW50ZXJ2YWw7CiAgICAgU2Vjb25kcyBtX21pbmltdW1ET01UaW1l
ckludGVydmFsOwogCi0gICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9p
c0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSA6IDE7CiAgICAgYm9vbCBtX2FyZUltYWdlc0VuYWJsZWQgOiAxOwotICAgIGJv
b2wgbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlcyA6IDE7CiAgICAgYm9vbCBtX2FyZVBsdWdpbnNF
bmFibGVkIDogMTsKICAgICBib29sIG1faXNTY3JpcHRFbmFibGVkIDogMTsKLSAgICBib29sIG1f
bmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsgOiAxOwogICAgIGJvb2wgbV91c2VzUGFnZUNh
Y2hlIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZvbnRSZW5kZXJpbmdNb2RlIDogMTsKLSAgICBib29s
IG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yIDogMTsKICAgICBib29sIG1fYmFja2dyb3Vu
ZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgOiAxOwogICAgIGJvb2wgbV9kbnNQcmVmZXRjaGluZ0Vu
YWJsZWQgOiAxOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBib29sIG1fdG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwotI2VuZGlmCiAgICAgYm9vbCBtX3Njcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgU2Vjb25kcyBtX3RpbWVXaXRob3V0
TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzOwotCiAgICAgVGltZXIgbV9zZXRJbWFn
ZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwogICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
ckZpcmVkKCk7CiAKICAgICBib29sIG1faGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJs
ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJs
ZWQgOiAxOwotICAgIGJvb2wgbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMgOiAxOwot
ICAgIGJvb2wgbV93ZWJGb250c0Fsd2F5c0ZhbGxCYWNrIDogMTsKLQotICAgIGJvb2wgbV9mb3Jj
ZVBlbmRpbmdXZWJHTFBvbGljeSA6IDE7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAg
ICAgYm9vbCBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSB7IGZhbHNlIH07CkBAIC0zNTUs
MjEgKzI4NywxMSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdN
YW5hZ2VBdWRpb1Nlc3Npb247CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ0N1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZDsKIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0jZW5kaWYKLSAg
ICAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBtX21lZGlhRGV2aWNlSWRl
bnRpZmllclN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgc3RhdGljIGJvb2wgZ01vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgZ01lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJl
Q29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBib29sIG1f
YXBwbGVQYXlFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXBwbGVQYXlDYXBhYmlsaXR5
RGlzY2xvc3VyZUFsbG93ZWQgeyB0cnVlIH07Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBib29sIGdM
b3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZDsKICAgICBzdGF0aWMgYm9vbCBnUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNp
b24gMjIyNjkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBj
b3B5KQpAQCAtNjYsNiArNjYsNyBAQCBhY2NlbGVyYXRlZENvbXBvc2l0ZWRBbmltYXRpb25zRW5h
YmxlZCBpCiBzaG93RGVidWdCb3JkZXJzIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNh
bGNJbkFsbEZyYW1lcz0xCiBzaG93UmVwYWludENvdW50ZXIgaW5pdGlhbD1mYWxzZSwgc2V0TmVl
ZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKIHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zIHR5
cGU9RGVidWdPdmVybGF5UmVnaW9ucywgaW5pdGlhbD0wCitzaG93VGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3IgaW5pdGlhbD1mYWxzZQogCiAjIFRoaXMgaXMgYSBxdWlyayB3ZSBhcmUgcHJvLWFjdGl2
ZWx5IGFwcGx5aW5nIHRvIG9sZCBhcHBsaWNhdGlvbnMuIEl0IGNoYW5nZXMga2V5Ym9hcmQgZXZl
bnQgZGlzcGF0Y2hpbmcsCiAjIG1ha2luZyBrZXlJZGVudGlmaWVyIGF2YWlsYWJsZSBvbiBrZXlw
cmVzcyBldmVudHMsIG1ha2luZyBjaGFyQ29kZSBhdmFpbGFibGUgb24ga2V5ZG93bi9rZXl1cCBl
dmVudHMsCkBAIC0zMDEsNyArMzAyLDMyIEBAIHZpZXdwb3J0Rml0RW5hYmxlZCBpbml0aWFsPWZh
bHNlCiAKIGFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0Zh
bGxiYWNrIGluaXRpYWw9ZmFsc2UKIAorc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgaW5pdGlhbD1m
YWxzZQorCit0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyB0eXBl
PVNlY29uZHMsIGluaXRpYWw9M19zIAorCitmb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMg
aW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKK3dlYkZvbnRz
QWx3YXlzRmFsbEJhY2sgaW5pdGlhbD1mYWxzZQorCiBwYXltZW50UmVxdWVzdEVuYWJsZWQgaW5p
dGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZTUVOVF9SRVFVRVNUCiAKLXN0b3JhZ2VBY2Nlc3NB
UElFbmFibGVkIGluaXRpYWw9ZmFsc2UKK2FwcGxlUGF5RW5hYmxlZCBpbml0aWFsPWZhbHNlLCBj
b25kaXRpb25hbD1BUFBMRV9QQVkKK2FwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2Vk
IGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9QVBQTEVfUEFZCisKK2phdmFFbmFibGVkIGluaXRp
YWw9ZmFsc2UsIGdldHRlcj1pc0phdmFFbmFibGVkCitqYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMg
aW5pdGlhbD10cnVlLCBnZXR0ZXI9aXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMKKworZm9udFJl
bmRlcmluZ01vZGUgdHlwZT1Gb250UmVuZGVyaW5nTW9kZSwgaW5pdGlhbD1Gb250UmVuZGVyaW5n
TW9kZTo6Tm9ybWFsCisKK3ByZWZlck1JTUVUeXBlRm9ySW1hZ2VzIGluaXRpYWw9ZmFsc2UKKwor
Zm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgaW5pdGlhbD1mYWxzZSwgZ2V0dGVyPWlzRm9yY2VQZW5k
aW5nV2ViR0xQb2xpY3kKKworbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSB0eXBlPVN0cmluZywg
Y29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQorbWVkaWFEZXZpY2VJZGVudGlmaWVy
U3RvcmFnZURpcmVjdG9yeSB0eXBlPVN0cmluZywgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCisK
KyMgRklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgUmFkYXIgNDY3NDUzNyBh
bmQgNTIxMTI3MS4gV2UgbmVlZCB0byBwaGFzZSBpdCBvdXQgb25jZSBBZG9iZQorIyBjYW4gZml4
IHRoZSBidWcgZnJvbSB0aGVpciBlbmQuCituZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlyayBp
bml0aWFsPWZhbHNlLCBnZXR0ZXI9bmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRpbmdRdWlyawogCit0
b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBnZXR0ZXI9aXNUb3VjaEV2
ZW50RW11bGF0aW9uRW5hYmxlZCwgY29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Gb250
UmVuZGVyaW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvRm9udFJlbmRlcmluZ01vZGUuaAkocmV2aXNpb24gMjIyNjkxKQkoZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oOjIyMjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBUZXh0
UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6
ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OworCitlbnVtIEZvbnRTbW9vdGhpbmdN
b2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFu
dGlhbGlhc2VkIH07CisKKy8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBv
ZiBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2
ZSBkaWZmZXJlbnQKKy8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cg
YW5kIEdESSB0ZXh0IG9uIFdpbmRvd3MuCitlbnVtIGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsg
Tm9ybWFsLCBBbHRlcm5hdGUgfTsKKworZW51bSBGb250T3JpZW50YXRpb24geyBIb3Jpem9udGFs
LCBWZXJ0aWNhbCB9OworCitlbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhl
ZCwgVXByaWdodCB9OworCisvLyBIZXJlLCAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHJl
bGV2YW50IGFmdGVyIHRoZSBsaW5lIGhhcyBiZWVuIHJlYXJyYW5nZWQgZm9yIGJpZGkuCisvLyAo
IkxlYWRpbmciIG1lYW5zICJsZWZ0IiBhbmQgIlRyYWlsaW5nIiBtZWFucyAicmlnaHQuIikKK2Vu
dW0gRXhwYW5zaW9uQmVoYXZpb3JGbGFncyB7CisgICAgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24g
PSAwIDw8IDAsCisgICAgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiA9IDEgPDwgMCwKKyAgICBGb3Jj
ZVRyYWlsaW5nRXhwYW5zaW9uID0gMiA8PCAwLAorICAgIFRyYWlsaW5nRXhwYW5zaW9uTWFzayA9
IDMgPDwgMCwKKworICAgIEZvcmJpZExlYWRpbmdFeHBhbnNpb24gPSAwIDw8IDIsCisgICAgQWxs
b3dMZWFkaW5nRXhwYW5zaW9uID0gMSA8PCAyLAorICAgIEZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9
IDIgPDwgMiwKKyAgICBMZWFkaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMiwKKworICAgIERlZmF1
bHRFeHBhbnNpb24gPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFu
c2lvbiwKK307Cit0eXBlZGVmIHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOworCitlbnVtIEZv
bnRTeW50aGVzaXNWYWx1ZXMgeworICAgIEZvbnRTeW50aGVzaXNOb25lID0gMHgwLAorICAgIEZv
bnRTeW50aGVzaXNXZWlnaHQgPSAweDEsCisgICAgRm9udFN5bnRoZXNpc1N0eWxlID0gMHgyLAor
ICAgIEZvbnRTeW50aGVzaXNTbWFsbENhcHMgPSAweDQKK307Cit0eXBlZGVmIHVuc2lnbmVkIEZv
bnRTeW50aGVzaXM7Citjb25zdCB1bnNpZ25lZCBGb250U3ludGhlc2lzV2lkdGggPSAzOworCitl
bnVtIGNsYXNzIEZvbnRWYXJpYW50TGlnYXR1cmVzIHsKKyAgICBOb3JtYWwsCisgICAgWWVzLAor
ICAgIE5vCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50UG9zaXRpb24geworICAgIE5vcm1h
bCwKKyAgICBTdWJzY3JpcHQsCisgICAgU3VwZXJzY3JpcHQKK307CisKK2VudW0gY2xhc3MgRm9u
dFZhcmlhbnRDYXBzIHsKKyAgICBOb3JtYWwsCisgICAgU21hbGwsCisgICAgQWxsU21hbGwsCisg
ICAgUGV0aXRlLAorICAgIEFsbFBldGl0ZSwKKyAgICBVbmljYXNlLAorICAgIFRpdGxpbmcKK307
CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIHsKKyAgICBOb3JtYWwsCisg
ICAgTGluaW5nTnVtYmVycywKKyAgICBPbGRTdHlsZU51bWJlcnMKK307CisKK2VudW0gY2xhc3Mg
Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZyB7CisgICAgTm9ybWFsLAorICAgIFByb3BvcnRpb25h
bE51bWJlcnMsCisgICAgVGFidWxhck51bWJlcnMKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlh
bnROdW1lcmljRnJhY3Rpb24geworICAgIE5vcm1hbCwKKyAgICBEaWFnb25hbEZyYWN0aW9ucywK
KyAgICBTdGFja2VkRnJhY3Rpb25zCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50TnVtZXJp
Y09yZGluYWwgeworICAgIE5vcm1hbCwKKyAgICBZZXMKK307CisKK2VudW0gY2xhc3MgRm9udFZh
cmlhbnROdW1lcmljU2xhc2hlZFplcm8geworICAgIE5vcm1hbCwKKyAgICBZZXMKK307CisKK2Vu
dW0gY2xhc3MgRm9udFZhcmlhbnRBbHRlcm5hdGVzIHsKKyAgICBOb3JtYWwsCisgICAgSGlzdG9y
aWNhbEZvcm1zCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB7
CisgICAgTm9ybWFsLAorICAgIEppczc4LAorICAgIEppczgzLAorICAgIEppczkwLAorICAgIEpp
czA0LAorICAgIFNpbXBsaWZpZWQsCisgICAgVHJhZGl0aW9uYWwKK307CisKK2VudW0gY2xhc3Mg
Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCB7CisgICAgTm9ybWFsLAorICAgIEZ1bGwsCisgICAg
UHJvcG9ydGlvbmFsCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSB7
CisgICAgTm9ybWFsLAorICAgIFllcworfTsKKworc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3Mg
eworICAgIEZvbnRWYXJpYW50U2V0dGluZ3MoKQorICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhG
b250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsKQorICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdh
dHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBoaXN0b3JpY2Fs
TGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwpCisgICAgICAgICwgY29udGV4
dHVhbEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBw
b3NpdGlvbihGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwpCisgICAgICAgICwgY2FwcyhGb250
VmFyaWFudENhcHM6Ok5vcm1hbCkKKyAgICAgICAgLCBudW1lcmljRmlndXJlKEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsKQorICAgICAgICAsIG51bWVyaWNTcGFjaW5nKEZvbnRWYXJp
YW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbCkKKyAgICAgICAgLCBudW1lcmljRnJhY3Rpb24oRm9u
dFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbCkKKyAgICAgICAgLCBudW1lcmljT3JkaW5h
bChGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWwpCisgICAgICAgICwgbnVtZXJpY1Ns
YXNoZWRaZXJvKEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwpCisgICAgICAg
ICwgYWx0ZXJuYXRlcyhGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBl
YXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsKQorICAg
ICAgICAsIGVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbCkK
KyAgICAgICAgLCBlYXN0QXNpYW5SdWJ5KEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFs
KQorICAgIHsKKyAgICB9CisKKyAgICBGb250VmFyaWFudFNldHRpbmdzKAorICAgICAgICBGb250
VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGln
YXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzIGhpc3RvcmljYWxMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNv
bnRleHR1YWxBbHRlcm5hdGVzLAorICAgICAgICBGb250VmFyaWFudFBvc2l0aW9uIHBvc2l0aW9u
LAorICAgICAgICBGb250VmFyaWFudENhcHMgY2FwcywKKyAgICAgICAgRm9udFZhcmlhbnROdW1l
cmljRmlndXJlIG51bWVyaWNGaWd1cmUsCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNp
bmcgbnVtZXJpY1NwYWNpbmcsCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIG51
bWVyaWNGcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmlj
T3JkaW5hbCwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gbnVtZXJpY1Ns
YXNoZWRaZXJvLAorICAgICAgICBGb250VmFyaWFudEFsdGVybmF0ZXMgYWx0ZXJuYXRlcywKKyAg
ICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQsCisgICAg
ICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggZWFzdEFzaWFuV2lkdGgsCisgICAgICAgIEZv
bnRWYXJpYW50RWFzdEFzaWFuUnVieSBlYXN0QXNpYW5SdWJ5KQorICAgICAgICAgICAgOiBjb21t
b25MaWdhdHVyZXMoY29tbW9uTGlnYXR1cmVzKQorICAgICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzKGRpc2NyZXRpb25hcnlMaWdhdHVyZXMpCisgICAgICAgICAgICAsIGhpc3Rvcmlj
YWxMaWdhdHVyZXMoaGlzdG9yaWNhbExpZ2F0dXJlcykKKyAgICAgICAgICAgICwgY29udGV4dHVh
bEFsdGVybmF0ZXMoY29udGV4dHVhbEFsdGVybmF0ZXMpCisgICAgICAgICAgICAsIHBvc2l0aW9u
KHBvc2l0aW9uKQorICAgICAgICAgICAgLCBjYXBzKGNhcHMpCisgICAgICAgICAgICAsIG51bWVy
aWNGaWd1cmUobnVtZXJpY0ZpZ3VyZSkKKyAgICAgICAgICAgICwgbnVtZXJpY1NwYWNpbmcobnVt
ZXJpY1NwYWNpbmcpCisgICAgICAgICAgICAsIG51bWVyaWNGcmFjdGlvbihudW1lcmljRnJhY3Rp
b24pCisgICAgICAgICAgICAsIG51bWVyaWNPcmRpbmFsKG51bWVyaWNPcmRpbmFsKQorICAgICAg
ICAgICAgLCBudW1lcmljU2xhc2hlZFplcm8obnVtZXJpY1NsYXNoZWRaZXJvKQorICAgICAgICAg
ICAgLCBhbHRlcm5hdGVzKGFsdGVybmF0ZXMpCisgICAgICAgICAgICAsIGVhc3RBc2lhblZhcmlh
bnQoZWFzdEFzaWFuVmFyaWFudCkKKyAgICAgICAgICAgICwgZWFzdEFzaWFuV2lkdGgoZWFzdEFz
aWFuV2lkdGgpCisgICAgICAgICAgICAsIGVhc3RBc2lhblJ1YnkoZWFzdEFzaWFuUnVieSkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBpc0FsbE5vcm1hbCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwK
KyAgICAgICAgICAgICYmIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdh
dHVyZXM6Ok5vcm1hbAorICAgICAgICAgICAgJiYgaGlzdG9yaWNhbExpZ2F0dXJlcyA9PSBGb250
VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCisgICAgICAgICAgICAmJiBjb250ZXh0dWFsQWx0ZXJu
YXRlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCisgICAgICAgICAgICAmJiBwb3Np
dGlvbiA9PSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwKKyAgICAgICAgICAgICYmIGNhcHMg
PT0gRm9udFZhcmlhbnRDYXBzOjpOb3JtYWwKKyAgICAgICAgICAgICYmIG51bWVyaWNGaWd1cmUg
PT0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3JtYWwKKyAgICAgICAgICAgICYmIG51bWVy
aWNTcGFjaW5nID09IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbAorICAgICAgICAg
ICAgJiYgbnVtZXJpY0ZyYWN0aW9uID09IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3Jt
YWwKKyAgICAgICAgICAgICYmIG51bWVyaWNPcmRpbmFsID09IEZvbnRWYXJpYW50TnVtZXJpY09y
ZGluYWw6Ok5vcm1hbAorICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IEZvbnRW
YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwKKyAgICAgICAgICAgICYmIGFsdGVybmF0
ZXMgPT0gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3JtYWwKKyAgICAgICAgICAgICYmIGVhc3RB
c2lhblZhcmlhbnQgPT0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWwKKyAgICAg
ICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5v
cm1hbAorICAgICAgICAgICAgJiYgZWFzdEFzaWFuUnVieSA9PSBGb250VmFyaWFudEVhc3RBc2lh
blJ1Ynk6Ok5vcm1hbDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZh
cmlhbnRTZXR0aW5ncyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tbW9u
TGlnYXR1cmVzID09IG90aGVyLmNvbW1vbkxpZ2F0dXJlcworICAgICAgICAgICAgJiYgZGlzY3Jl
dGlvbmFyeUxpZ2F0dXJlcyA9PSBvdGhlci5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVzCisgICAgICAg
ICAgICAmJiBoaXN0b3JpY2FsTGlnYXR1cmVzID09IG90aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMK
KyAgICAgICAgICAgICYmIGNvbnRleHR1YWxBbHRlcm5hdGVzID09IG90aGVyLmNvbnRleHR1YWxB
bHRlcm5hdGVzCisgICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbgorICAg
ICAgICAgICAgJiYgY2FwcyA9PSBvdGhlci5jYXBzCisgICAgICAgICAgICAmJiBudW1lcmljRmln
dXJlID09IG90aGVyLm51bWVyaWNGaWd1cmUKKyAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5n
ID09IG90aGVyLm51bWVyaWNTcGFjaW5nCisgICAgICAgICAgICAmJiBudW1lcmljRnJhY3Rpb24g
PT0gb3RoZXIubnVtZXJpY0ZyYWN0aW9uCisgICAgICAgICAgICAmJiBudW1lcmljT3JkaW5hbCA9
PSBvdGhlci5udW1lcmljT3JkaW5hbAorICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJv
ID09IG90aGVyLm51bWVyaWNTbGFzaGVkWmVybworICAgICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9
PSBvdGhlci5hbHRlcm5hdGVzCisgICAgICAgICAgICAmJiBlYXN0QXNpYW5WYXJpYW50ID09IG90
aGVyLmVhc3RBc2lhblZhcmlhbnQKKyAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IG90
aGVyLmVhc3RBc2lhbldpZHRoCisgICAgICAgICAgICAmJiBlYXN0QXNpYW5SdWJ5ID09IG90aGVy
LmVhc3RBc2lhblJ1Ynk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRW
YXJpYW50U2V0dGluZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorCisgICAgdW5zaWduZWQgdW5pcXVlVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21tb25MaWdhdHVyZXMpIDw8IDI2CisgICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSA8PCAy
NAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGlzdG9yaWNhbExpZ2F0dXJl
cykgPDwgMjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnRleHR1YWxB
bHRlcm5hdGVzKSA8PCAyMAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9z
aXRpb24pIDw8IDE4CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXBzKSA8
PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZpZ3VyZSkg
PDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWVyaWNTcGFjaW5n
KSA8PCAxMQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZyYWN0
aW9uKSA8PCA5CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1lcmljT3Jk
aW5hbCkgPDwgOAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY1Ns
YXNoZWRaZXJvKSA8PCA3CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhbHRl
cm5hdGVzKSA8PCA2CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNp
YW5WYXJpYW50KSA8PCAzCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0
QXNpYW5XaWR0aCkgPDwgMQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWFz
dEFzaWFuUnVieSkgPDwgMDsKKyAgICB9CisKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21t
b25MaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0
dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1cmVzOworICAg
IEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzOworICAgIEZvbnRWYXJp
YW50UG9zaXRpb24gcG9zaXRpb247CisgICAgRm9udFZhcmlhbnRDYXBzIGNhcHM7CisgICAgRm9u
dFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmU7CisgICAgRm9udFZhcmlhbnROdW1l
cmljU3BhY2luZyBudW1lcmljU3BhY2luZzsKKyAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlv
biBudW1lcmljRnJhY3Rpb247CisgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmlj
T3JkaW5hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBudW1lcmljU2xhc2hl
ZFplcm87CisgICAgRm9udFZhcmlhbnRBbHRlcm5hdGVzIGFsdGVybmF0ZXM7CisgICAgRm9udFZh
cmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQ7CisgICAgRm9udFZhcmlhbnRF
YXN0QXNpYW5XaWR0aCBlYXN0QXNpYW5XaWR0aDsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1
YnkgZWFzdEFzaWFuUnVieTsKK307CisKK3N0cnVjdCBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVl
cyB7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMoCisgICAgICAgIEZvbnRWYXJpYW50
TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMg
ZGlzY3JldGlvbmFyeUxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlz
dG9yaWNhbExpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29udGV4dHVh
bEFsdGVybmF0ZXMpCisgICAgICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhjb21tb25MaWdhdHVy
ZXMpCisgICAgICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoZGlzY3JldGlvbmFyeUxp
Z2F0dXJlcykKKyAgICAgICAgICAgICwgaGlzdG9yaWNhbExpZ2F0dXJlcyhoaXN0b3JpY2FsTGln
YXR1cmVzKQorICAgICAgICAgICAgLCBjb250ZXh0dWFsQWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0
ZXJuYXRlcykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9u
TGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVy
ZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlczsKKyAgICBG
b250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlczsKK307CisKK3N0cnVjdCBG
b250VmFyaWFudE51bWVyaWNWYWx1ZXMgeworICAgIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcygK
KyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZSwKKyAgICAgICAgRm9udFZh
cmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNG
cmFjdGlvbiBmcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRp
bmFsLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybykK
KyAgICAgICAgICAgIDogZmlndXJlKGZpZ3VyZSkKKyAgICAgICAgICAgICwgc3BhY2luZyhzcGFj
aW5nKQorICAgICAgICAgICAgLCBmcmFjdGlvbihmcmFjdGlvbikKKyAgICAgICAgICAgICwgb3Jk
aW5hbChvcmRpbmFsKQorICAgICAgICAgICAgLCBzbGFzaGVkWmVybyhzbGFzaGVkWmVybykKKyAg
ICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZTsKKyAgICBG
b250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7CisgICAgRm9udFZhcmlhbnROdW1lcmlj
RnJhY3Rpb24gZnJhY3Rpb247CisgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFs
OworICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvOworfTsKKwor
c3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIHsKKyAgICBGb250VmFyaWFudEVhc3RB
c2lhblZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQs
CisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGgsCisgICAgICAgIEZvbnRW
YXJpYW50RWFzdEFzaWFuUnVieSBydWJ5KQorICAgICAgICAgICAgOiB2YXJpYW50KHZhcmlhbnQp
CisgICAgICAgICAgICAsIHdpZHRoKHdpZHRoKQorICAgICAgICAgICAgLCBydWJ5KHJ1YnkpCisg
ICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2YXJpYW50Owor
ICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGg7CisgICAgRm9udFZhcmlhbnRFYXN0
QXNpYW5SdWJ5IHJ1Ynk7Cit9OworCitlbnVtIEZvbnRXaWR0aFZhcmlhbnQgeworICAgIFJlZ3Vs
YXJXaWR0aCwKKyAgICBIYWxmV2lkdGgsCisgICAgVGhpcmRXaWR0aCwKKyAgICBRdWFydGVyV2lk
dGgsCisgICAgTGFzdEZvbnRXaWR0aFZhcmlhbnQgPSBRdWFydGVyV2lkdGgKK307CisKK2NvbnN0
IHVuc2lnbmVkIEZvbnRXaWR0aFZhcmlhbnRXaWR0aCA9IDI7CisKK0NPTVBJTEVfQVNTRVJUKCEo
TGFzdEZvbnRXaWR0aFZhcmlhbnQgPj4gRm9udFdpZHRoVmFyaWFudFdpZHRoKSwgRm9udFdpZHRo
VmFyaWFudFdpZHRoX2lzX2NvcnJlY3QpOworCitlbnVtIEZvbnRTbWFsbENhcHMgeworICAgIEZv
bnRTbWFsbENhcHNPZmYgPSAwLAorICAgIEZvbnRTbWFsbENhcHNPbiA9IDEKK307CisKK2VudW0g
Y2xhc3MgS2VybmluZyB7CisgICAgQXV0bywKKyAgICBOb3JtYWwsCisgICAgTm9TaGlmdAorfTsK
KworZW51bSBjbGFzcyBGb250T3B0aWNhbFNpemluZyB7CisgICAgRW5hYmxlZCwKKyAgICBEaXNh
YmxlZAorfTsKKworLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3Bl
Yy9mdmFyLmh0bSNWQVQKK2VudW0gY2xhc3MgRm9udFN0eWxlQXhpcyB7CisgICAgc2xudCwKKyAg
ICBpdGFsCit9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0ZvbnRSZW5kZXJpbmdNb2RlLmgJ
KHJldmlzaW9uIDIyMjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJl
bmRlcmluZ01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzM5ICsyNyw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVy
aW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lv
biB9OwotCi1lbnVtIEZvbnRTbW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhp
bmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlhbGlhc2VkIH07Ci0KIC8vIFRoaXMgc2V0dGlu
ZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSBy
ZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBkaWZmZXJlbnQKIC8vIG1ldHJpY3MuIEl0IGlz
IHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5kIEdESSB0ZXh0IG9uIFdpbmRvd3MuCiBlbnVt
IGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9ybWFsLCBBbHRlcm5hdGUgfTsKIAotZW51bSBG
b250T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9OwotCi1lbnVtIGNsYXNzIE5v
bkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwgVXByaWdodCB9OwotCi0vLyBIZXJlLCAiTGVh
ZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHJlbGV2YW50IGFmdGVyIHRoZSBsaW5lIGhhcyBiZWVu
IHJlYXJyYW5nZWQgZm9yIGJpZGkuCi0vLyAoIkxlYWRpbmciIG1lYW5zICJsZWZ0IiBhbmQgIlRy
YWlsaW5nIiBtZWFucyAicmlnaHQuIikKLWVudW0gRXhwYW5zaW9uQmVoYXZpb3JGbGFncyB7Ci0g
ICAgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gPSAwIDw8IDAsCi0gICAgQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbiA9IDEgPDwgMCwKLSAgICBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uID0gMiA8PCAwLAot
ICAgIFRyYWlsaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMCwKLQotICAgIEZvcmJpZExlYWRpbmdF
eHBhbnNpb24gPSAwIDw8IDIsCi0gICAgQWxsb3dMZWFkaW5nRXhwYW5zaW9uID0gMSA8PCAyLAot
ICAgIEZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IDIgPDwgMiwKLSAgICBMZWFkaW5nRXhwYW5zaW9u
TWFzayA9IDMgPDwgMiwKLQotICAgIERlZmF1bHRFeHBhbnNpb24gPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwKLX07Ci10eXBlZGVmIHVuc2lnbmVkIEV4
cGFuc2lvbkJlaGF2aW9yOwotCi1lbnVtIEZvbnRTeW50aGVzaXNWYWx1ZXMgewotICAgIEZvbnRT
eW50aGVzaXNOb25lID0gMHgwLAotICAgIEZvbnRTeW50aGVzaXNXZWlnaHQgPSAweDEsCi0gICAg
Rm9udFN5bnRoZXNpc1N0eWxlID0gMHgyLAotICAgIEZvbnRTeW50aGVzaXNTbWFsbENhcHMgPSAw
eDQKLX07Ci10eXBlZGVmIHVuc2lnbmVkIEZvbnRTeW50aGVzaXM7Ci1jb25zdCB1bnNpZ25lZCBG
b250U3ludGhlc2lzV2lkdGggPSAzOwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50TGlnYXR1cmVz
IHsKLSAgICBOb3JtYWwsCi0gICAgWWVzLAotICAgIE5vCi19OwotCi1lbnVtIGNsYXNzIEZvbnRW
YXJpYW50UG9zaXRpb24gewotICAgIE5vcm1hbCwKLSAgICBTdWJzY3JpcHQsCi0gICAgU3VwZXJz
Y3JpcHQKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRDYXBzIHsKLSAgICBOb3JtYWwsCi0g
ICAgU21hbGwsCi0gICAgQWxsU21hbGwsCi0gICAgUGV0aXRlLAotICAgIEFsbFBldGl0ZSwKLSAg
ICBVbmljYXNlLAotICAgIFRpdGxpbmcKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1l
cmljRmlndXJlIHsKLSAgICBOb3JtYWwsCi0gICAgTGluaW5nTnVtYmVycywKLSAgICBPbGRTdHls
ZU51bWJlcnMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyB7Ci0g
ICAgTm9ybWFsLAotICAgIFByb3BvcnRpb25hbE51bWJlcnMsCi0gICAgVGFidWxhck51bWJlcnMK
LX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gewotICAgIE5vcm1h
bCwKLSAgICBEaWFnb25hbEZyYWN0aW9ucywKLSAgICBTdGFja2VkRnJhY3Rpb25zCi19OwotCi1l
bnVtIGNsYXNzIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgewotICAgIE5vcm1hbCwKLSAgICBZ
ZXMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gewotICAg
IE5vcm1hbCwKLSAgICBZZXMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRBbHRlcm5hdGVz
IHsKLSAgICBOb3JtYWwsCi0gICAgSGlzdG9yaWNhbEZvcm1zCi19OwotCi1lbnVtIGNsYXNzIEZv
bnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB7Ci0gICAgTm9ybWFsLAotICAgIEppczc4LAotICAg
IEppczgzLAotICAgIEppczkwLAotICAgIEppczA0LAotICAgIFNpbXBsaWZpZWQsCi0gICAgVHJh
ZGl0aW9uYWwKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCB7Ci0g
ICAgTm9ybWFsLAotICAgIEZ1bGwsCi0gICAgUHJvcG9ydGlvbmFsCi19OwotCi1lbnVtIGNsYXNz
IEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSB7Ci0gICAgTm9ybWFsLAotICAgIFllcwotfTsKLQot
c3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3MgewotICAgIEZvbnRWYXJpYW50U2V0dGluZ3MoKQot
ICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsKQot
ICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5v
cm1hbCkKLSAgICAgICAgLCBoaXN0b3JpY2FsTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpOb3JtYWwpCi0gICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdh
dHVyZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBwb3NpdGlvbihGb250VmFyaWFudFBvc2l0aW9uOjpO
b3JtYWwpCi0gICAgICAgICwgY2FwcyhGb250VmFyaWFudENhcHM6Ok5vcm1hbCkKLSAgICAgICAg
LCBudW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsKQotICAgICAg
ICAsIG51bWVyaWNTcGFjaW5nKEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbCkKLSAg
ICAgICAgLCBudW1lcmljRnJhY3Rpb24oRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1h
bCkKLSAgICAgICAgLCBudW1lcmljT3JkaW5hbChGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpO
b3JtYWwpCi0gICAgICAgICwgbnVtZXJpY1NsYXNoZWRaZXJvKEZvbnRWYXJpYW50TnVtZXJpY1Ns
YXNoZWRaZXJvOjpOb3JtYWwpCi0gICAgICAgICwgYWx0ZXJuYXRlcyhGb250VmFyaWFudEFsdGVy
bmF0ZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBlYXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudDo6Tm9ybWFsKQotICAgICAgICAsIGVhc3RBc2lhbldpZHRoKEZvbnRWYXJp
YW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbCkKLSAgICAgICAgLCBlYXN0QXNpYW5SdWJ5KEZvbnRW
YXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsKQotICAgIHsKLSAgICB9Ci0KLSAgICBGb250VmFy
aWFudFNldHRpbmdzKAotICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVy
ZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMs
Ci0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWxMaWdhdHVyZXMsCi0gICAg
ICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzLAotICAgICAgICBG
b250VmFyaWFudFBvc2l0aW9uIHBvc2l0aW9uLAotICAgICAgICBGb250VmFyaWFudENhcHMgY2Fw
cywKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmUsCi0gICAg
ICAgIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgbnVtZXJpY1NwYWNpbmcsCi0gICAgICAgIEZv
bnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIG51bWVyaWNGcmFjdGlvbiwKLSAgICAgICAgRm9udFZh
cmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbCwKLSAgICAgICAgRm9udFZhcmlhbnRO
dW1lcmljU2xhc2hlZFplcm8gbnVtZXJpY1NsYXNoZWRaZXJvLAotICAgICAgICBGb250VmFyaWFu
dEFsdGVybmF0ZXMgYWx0ZXJuYXRlcywKLSAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJp
YW50IGVhc3RBc2lhblZhcmlhbnQsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGgg
ZWFzdEFzaWFuV2lkdGgsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBlYXN0QXNp
YW5SdWJ5KQotICAgICAgICAgICAgOiBjb21tb25MaWdhdHVyZXMoY29tbW9uTGlnYXR1cmVzKQot
ICAgICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25hcnlMaWdhdHVy
ZXMpCi0gICAgICAgICAgICAsIGhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNhbExpZ2F0dXJl
cykKLSAgICAgICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoY29udGV4dHVhbEFsdGVybmF0
ZXMpCi0gICAgICAgICAgICAsIHBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAgICAgLCBjYXBz
KGNhcHMpCi0gICAgICAgICAgICAsIG51bWVyaWNGaWd1cmUobnVtZXJpY0ZpZ3VyZSkKLSAgICAg
ICAgICAgICwgbnVtZXJpY1NwYWNpbmcobnVtZXJpY1NwYWNpbmcpCi0gICAgICAgICAgICAsIG51
bWVyaWNGcmFjdGlvbihudW1lcmljRnJhY3Rpb24pCi0gICAgICAgICAgICAsIG51bWVyaWNPcmRp
bmFsKG51bWVyaWNPcmRpbmFsKQotICAgICAgICAgICAgLCBudW1lcmljU2xhc2hlZFplcm8obnVt
ZXJpY1NsYXNoZWRaZXJvKQotICAgICAgICAgICAgLCBhbHRlcm5hdGVzKGFsdGVybmF0ZXMpCi0g
ICAgICAgICAgICAsIGVhc3RBc2lhblZhcmlhbnQoZWFzdEFzaWFuVmFyaWFudCkKLSAgICAgICAg
ICAgICwgZWFzdEFzaWFuV2lkdGgoZWFzdEFzaWFuV2lkdGgpCi0gICAgICAgICAgICAsIGVhc3RB
c2lhblJ1YnkoZWFzdEFzaWFuUnVieSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FsbE5v
cm1hbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IEZv
bnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGRpc2NyZXRpb25hcnlM
aWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbAotICAgICAgICAgICAgJiYg
aGlzdG9yaWNhbExpZ2F0dXJlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCi0gICAg
ICAgICAgICAmJiBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6
Tm9ybWFsCi0gICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBGb250VmFyaWFudFBvc2l0aW9uOjpO
b3JtYWwKLSAgICAgICAgICAgICYmIGNhcHMgPT0gRm9udFZhcmlhbnRDYXBzOjpOb3JtYWwKLSAg
ICAgICAgICAgICYmIG51bWVyaWNGaWd1cmUgPT0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpO
b3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IEZvbnRWYXJpYW50TnVtZXJp
Y1NwYWNpbmc6Ok5vcm1hbAotICAgICAgICAgICAgJiYgbnVtZXJpY0ZyYWN0aW9uID09IEZvbnRW
YXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNPcmRp
bmFsID09IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbAotICAgICAgICAgICAgJiYg
bnVtZXJpY1NsYXNoZWRaZXJvID09IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3Jt
YWwKLSAgICAgICAgICAgICYmIGFsdGVybmF0ZXMgPT0gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpO
b3JtYWwKLSAgICAgICAgICAgICYmIGVhc3RBc2lhblZhcmlhbnQgPT0gRm9udFZhcmlhbnRFYXN0
QXNpYW5WYXJpYW50OjpOb3JtYWwKLSAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IEZv
bnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbAotICAgICAgICAgICAgJiYgZWFzdEFzaWFu
UnVieSA9PSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IG90aGVyLmNvbW1vbkxpZ2F0
dXJlcwotICAgICAgICAgICAgJiYgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9PSBvdGhlci5kaXNj
cmV0aW9uYXJ5TGlnYXR1cmVzCi0gICAgICAgICAgICAmJiBoaXN0b3JpY2FsTGlnYXR1cmVzID09
IG90aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMKLSAgICAgICAgICAgICYmIGNvbnRleHR1YWxBbHRl
cm5hdGVzID09IG90aGVyLmNvbnRleHR1YWxBbHRlcm5hdGVzCi0gICAgICAgICAgICAmJiBwb3Np
dGlvbiA9PSBvdGhlci5wb3NpdGlvbgotICAgICAgICAgICAgJiYgY2FwcyA9PSBvdGhlci5jYXBz
Ci0gICAgICAgICAgICAmJiBudW1lcmljRmlndXJlID09IG90aGVyLm51bWVyaWNGaWd1cmUKLSAg
ICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IG90aGVyLm51bWVyaWNTcGFjaW5nCi0gICAg
ICAgICAgICAmJiBudW1lcmljRnJhY3Rpb24gPT0gb3RoZXIubnVtZXJpY0ZyYWN0aW9uCi0gICAg
ICAgICAgICAmJiBudW1lcmljT3JkaW5hbCA9PSBvdGhlci5udW1lcmljT3JkaW5hbAotICAgICAg
ICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IG90aGVyLm51bWVyaWNTbGFzaGVkWmVybwot
ICAgICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9PSBvdGhlci5hbHRlcm5hdGVzCi0gICAgICAgICAg
ICAmJiBlYXN0QXNpYW5WYXJpYW50ID09IG90aGVyLmVhc3RBc2lhblZhcmlhbnQKLSAgICAgICAg
ICAgICYmIGVhc3RBc2lhbldpZHRoID09IG90aGVyLmVhc3RBc2lhbldpZHRoCi0gICAgICAgICAg
ICAmJiBlYXN0QXNpYW5SdWJ5ID09IG90aGVyLmVhc3RBc2lhblJ1Ynk7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgdW5zaWduZWQgdW5pcXVlVmFsdWUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21t
b25MaWdhdHVyZXMpIDw8IDI2Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSA8PCAyNAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaGlzdG9yaWNhbExpZ2F0dXJlcykgPDwgMjIKLSAgICAgICAgICAgIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNvbnRleHR1YWxBbHRlcm5hdGVzKSA8PCAyMAotICAgICAgICAgICAg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pIDw8IDE4Ci0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjYXBzKSA8PCAxNQotICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obnVtZXJpY0ZpZ3VyZSkgPDwgMTMKLSAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG51bWVyaWNTcGFjaW5nKSA8PCAxMQotICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZyYWN0aW9uKSA8PCA5Ci0gICAgICAgICAgICB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihudW1lcmljT3JkaW5hbCkgPDwgOAotICAgICAgICAgICAgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY1NsYXNoZWRaZXJvKSA8PCA3Ci0gICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhbHRlcm5hdGVzKSA8PCA2Ci0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5WYXJpYW50KSA8PCAzCi0gICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5XaWR0aCkgPDwgMQotICAgICAgICAgICAg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWFzdEFzaWFuUnVieSkgPDwgMDsKLSAgICB9Ci0KLSAg
ICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7Ci0gICAgRm9udFZhcmlhbnRM
aWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKLSAgICBGb250VmFyaWFudExpZ2F0dXJl
cyBoaXN0b3JpY2FsTGlnYXR1cmVzOwotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1
YWxBbHRlcm5hdGVzOwotICAgIEZvbnRWYXJpYW50UG9zaXRpb24gcG9zaXRpb247Ci0gICAgRm9u
dFZhcmlhbnRDYXBzIGNhcHM7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNG
aWd1cmU7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBudW1lcmljU3BhY2luZzsKLSAg
ICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBudW1lcmljRnJhY3Rpb247Ci0gICAgRm9udFZh
cmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbDsKLSAgICBGb250VmFyaWFudE51bWVy
aWNTbGFzaGVkWmVybyBudW1lcmljU2xhc2hlZFplcm87Ci0gICAgRm9udFZhcmlhbnRBbHRlcm5h
dGVzIGFsdGVybmF0ZXM7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lh
blZhcmlhbnQ7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCBlYXN0QXNpYW5XaWR0aDsK
LSAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgZWFzdEFzaWFuUnVieTsKLX07Ci0KLXN0cnVj
dCBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyB7Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXNW
YWx1ZXMoCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlcywKLSAg
ICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcywKLSAgICAg
ICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlcywKLSAgICAgICAgRm9u
dFZhcmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgICAgICA6IGNv
bW1vbkxpZ2F0dXJlcyhjb21tb25MaWdhdHVyZXMpCi0gICAgICAgICAgICAsIGRpc2NyZXRpb25h
cnlMaWdhdHVyZXMoZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKLSAgICAgICAgICAgICwgaGlzdG9y
aWNhbExpZ2F0dXJlcyhoaXN0b3JpY2FsTGlnYXR1cmVzKQotICAgICAgICAgICAgLCBjb250ZXh0
dWFsQWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0ZXJuYXRlcykKLSAgICB7Ci0gICAgfQotCi0gICAg
Rm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9uTGlnYXR1cmVzOwotICAgIEZvbnRWYXJpYW50TGln
YXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMg
aGlzdG9yaWNhbExpZ2F0dXJlczsKLSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFs
QWx0ZXJuYXRlczsKLX07Ci0KLXN0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgewotICAg
IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcygKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmln
dXJlIGZpZ3VyZSwKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nLAot
ICAgICAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiwKLSAgICAgICAgRm9u
dFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsLAotICAgICAgICBGb250VmFyaWFudE51bWVy
aWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybykKLSAgICAgICAgICAgIDogZmlndXJlKGZpZ3VyZSkK
LSAgICAgICAgICAgICwgc3BhY2luZyhzcGFjaW5nKQotICAgICAgICAgICAgLCBmcmFjdGlvbihm
cmFjdGlvbikKLSAgICAgICAgICAgICwgb3JkaW5hbChvcmRpbmFsKQotICAgICAgICAgICAgLCBz
bGFzaGVkWmVybyhzbGFzaGVkWmVybykKLSAgICB7Ci0gICAgfQotCi0gICAgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlIGZpZ3VyZTsKLSAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNp
bmc7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb247Ci0gICAgRm9udFZh
cmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsOwotICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNo
ZWRaZXJvIHNsYXNoZWRaZXJvOwotfTsKLQotc3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFs
dWVzIHsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcygKLSAgICAgICAgRm9udFZhcmlh
bnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFu
V2lkdGggd2lkdGgsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBydWJ5KQotICAg
ICAgICAgICAgOiB2YXJpYW50KHZhcmlhbnQpCi0gICAgICAgICAgICAsIHdpZHRoKHdpZHRoKQot
ICAgICAgICAgICAgLCBydWJ5KHJ1YnkpCi0gICAgewotICAgIH0KLQotICAgIEZvbnRWYXJpYW50
RWFzdEFzaWFuVmFyaWFudCB2YXJpYW50OwotICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGgg
d2lkdGg7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1Ynk7Ci19OwotCi1lbnVtIEZv
bnRXaWR0aFZhcmlhbnQgewotICAgIFJlZ3VsYXJXaWR0aCwKLSAgICBIYWxmV2lkdGgsCi0gICAg
VGhpcmRXaWR0aCwKLSAgICBRdWFydGVyV2lkdGgsCi0gICAgTGFzdEZvbnRXaWR0aFZhcmlhbnQg
PSBRdWFydGVyV2lkdGgKLX07Ci0KLWNvbnN0IHVuc2lnbmVkIEZvbnRXaWR0aFZhcmlhbnRXaWR0
aCA9IDI7Ci0KLUNPTVBJTEVfQVNTRVJUKCEoTGFzdEZvbnRXaWR0aFZhcmlhbnQgPj4gRm9udFdp
ZHRoVmFyaWFudFdpZHRoKSwgRm9udFdpZHRoVmFyaWFudFdpZHRoX2lzX2NvcnJlY3QpOwotCi1l
bnVtIEZvbnRTbWFsbENhcHMgewotICAgIEZvbnRTbWFsbENhcHNPZmYgPSAwLAotICAgIEZvbnRT
bWFsbENhcHNPbiA9IDEKLX07Ci0KLWVudW0gY2xhc3MgS2VybmluZyB7Ci0gICAgQXV0bywKLSAg
ICBOb3JtYWwsCi0gICAgTm9TaGlmdAotfTsKLQotZW51bSBjbGFzcyBGb250T3B0aWNhbFNpemlu
ZyB7Ci0gICAgRW5hYmxlZCwKLSAgICBEaXNhYmxlZAotfTsKLQotLy8gaHR0cHM6Ly93d3cubWlj
cm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9mdmFyLmh0bSNWQVQKLWVudW0gY2xhc3MgRm9u
dFN0eWxlQXhpcyB7Ci0gICAgc2xudCwKLSAgICBpdGFsCi19OwotCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDIyMjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDE2ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZvbnRSZW5kZXJp
bmdNb2RlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBUZXh0UmVuZGVyaW5nTW9k
ZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHks
IEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCiBlbnVtIEZvbnRTbW9vdGhpbmdNb2RlIHsgQXV0b1Nt
b290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlhbGlhc2VkIH07
CiAKLS8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBzd2l0Y2hpbmcg
YmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBkaWZmZXJlbnQK
LS8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5kIEdESSB0ZXh0
IG9uIFdpbmRvd3MuCi1lbnVtIGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9ybWFsLCBBbHRl
cm5hdGUgfTsKLQogZW51bSBGb250T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9
OwogCiBlbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwgVXByaWdodCB9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322350</attachid>
            <date>2017-10-01 20:30:23 -0700</date>
            <delta_ts>2017-10-01 20:32:58 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-177730-20171001203022.patch</filename>
            <type>text/plain</type>
            <size>62555</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTEwLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIC0gQWRkcyBuZXcgb3B0aW9uIHR5cGUgZm9yIFNldHRpbmdz
LmluLCAnZ2V0dGVyJywgd2hpY2ggYWxsb3dzIHlvdSB0byBzcGVjaWZ5CisgICAgICAgICAgYSBj
dXN0b20gbmFtZSBmb3IgdGhlIHNldHRpbmcncyBnZXR0ZXIuIEZvciBpbnN0YW5jZSwgdGhlIHNl
dHRpbmcgamF2YUVuYWJsZWQKKyAgICAgICAgICBoYXMgYSBjdXN0b20gZ2V0dGVyIG5hbWUsICdp
c0phdmFFbmFibGVkJy4KKyAgICAgICAgLSBBZGRzIHN1cHBvcnQgZm9yIFdURjo6U2Vjb25kcyBh
cyBhIHR5cGUgb2Ygc2V0dGluZy4gVXNlZCBieSBvbmx5IAorICAgICAgICAgIHRpbWVXaXRob3V0
TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzIGF0IHRoZSBtb21lbnQuCisgICAgICAg
IC0gTW92ZXMgbm9uLWdlbmVyYXRlZCBzZXR0aW5ncyBmcm9tIFNldHRpbmdzLmgvY3BwIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBjdXN0b20KKyAgICAgICAgICBhY3Rpb24gd2hlbiBzZXQsIHRvIFNldHRp
bmdzLmluCisKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRl
cm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2Vu
ZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisKKyAgICAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciAnZ2V0dGVyJyBhbmQgdGhlIFNlY29uZHMgdHlwZS4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L0ZvbnRSZW5kZXJpbmdNb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEZsYWdzLmguCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDoK
KyAgICAgICAgCisgICAgICAgICAgICBBZGQgRm9udFJlbmRlcmluZ01vZGUuaC4gTW92ZWQgb3V0
IG9mIFRleHRGbGFncy5oIHRvIGJlIGFjY2Vzc2libGUgYnkKKyAgICAgICAgICAgIHRoZSBzZXR0
aW5ncyBnZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldE5lZWRzQWRvYmVGcmFt
ZVJlbG9hZGluZ1F1aXJrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpz
ZXRGb250UmVuZGVyaW5nTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRXZWJGb250c0Fsd2F5
c0ZhbGxCYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnByZWZlck1JTUVUeXBlRm9y
SW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpuZWVk
c0Fjcm9iYXRGcmFtZVJlbG9hZGluZ1F1aXJrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25F
bmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1RvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6d2ViRm9udHNBbHdheXNGYWxsQmFj
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFEZXZpY2VJZGVudGlmaWVyU3RvcmFnZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bWVkaWFEZXZpY2VJZGVu
dGlmaWVyU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBheUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OmFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBheUNh
cGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6aXNGb3JjZVBlbmRpbmdXZWJHTFBvbGljeSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKworICAgICAgICAgICAgTW92ZWQgaGFuZC13cml0dGVu
IHNldHRpbmdzIHRvIGJlIFNldHRpbmdzLmluIGJhc2VkLgorCiAyMDE3LTEwLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1NldHRpbmdzXSBFbnVtcyBzaG91bGQg
bm90IGJlIHBhc3NlZCBieSBjb25zdCByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Nj
cmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRh
dGlvbkZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0
ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQko
cmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRp
bmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0aAogCi1mcm9tIFNldHRp
bmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlQ29uZGl0aW9u
YWxTdHJpbmcsIG1hcFRvSURMVHlwZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nCitmcm9tIFNldHRp
bmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlR2V0dGVyRnVu
Y3Rpb25OYW1lLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1hcFRvSURMVHlwZQogCiAKIGRlZiBn
ZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUob3V0cHV0RGlyZWN0b3J5
LCBzZXR0aW5ncyk6CkBAIC01Myw3ICs1Myw3IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGlu
Z3NJbXBsZW1lbnRhdGkKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAgICAgICAg
ICAgIG91dHB1dEZpbGUud3JpdGUoIiNpZiAiICsgbWFrZUNvbmRpdGlvbmFsU3RyaW5nKHNldHRp
bmcuY29uZGl0aW9uYWwpICsgIlxuIikKIAotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAg
LCBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiKHBhZ2UtPnNldHRpbmdzKCkuIiArIHNldHRpbmcubmFt
ZSArICIoKSlcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRp
bmcubmFtZSArICIocGFnZS0+c2V0dGluZ3MoKS4iICsgbWFrZUdldHRlckZ1bmN0aW9uTmFtZShz
ZXR0aW5nKSArICIoKSlcbiIpCiAKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAg
ICAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNlbmRpZlxuIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkJKHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0
aAogCi1mcm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcs
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUsIGluY2x1ZGVGb3JTZXR0aW5nLCB0eXBlSXNBZ2dyZWdh
dGUKK2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywg
bWFrZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFrZUdldHRlckZ1bmN0aW9uTmFtZSwgaW5jbHVkZUZv
clNldHRpbmcsIHR5cGVJc1ZhbHVlVHlwZQogCiAKIGRlZiBnZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZShvdXRwdXREaXJlY3RvcnksIHNldHRpbmdzKToKQEAgLTExMiwyMSArMTEyLDIyIEBAIGRl
ZiBwcmludEluY2x1ZGVzKG91dHB1dEZpbGUsIHNvcnRlZFVuY28KIAogZGVmIHByaW50R2V0dGVy
QW5kU2V0dGVyKG91dHB1dEZpbGUsIHNldHRpbmcpOgogICAgIHNldHRlckZ1bmN0aW9uTmFtZSA9
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykKKyAgICBnZXR0ZXJGdW5jdGlvbk5hbWUg
PSBtYWtlR2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpCiAKICAgICAjIEV4cG9ydCBpcyBvbmx5
IG5lZWRlZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgaW4gdGhlIGhlYWRlci4KICAgICB3ZWJj
b3JlRXhwb3J0ID0gIldFQkNPUkVfRVhQT1JUICIgaWYgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVj
YWxjSW5BbGxGcmFtZXMgZWxzZSAiIgogCi0gICAgaWYgbm90IHR5cGVJc0FnZ3JlZ2F0ZShzZXR0
aW5nKToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0aW5nLnR5cGUgKyAi
ICIgKyBzZXR0aW5nLm5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1l
ICsgIjsgfSBcbiIpCisgICAgaWYgbm90IHR5cGVJc1ZhbHVlVHlwZShzZXR0aW5nKToKKyAgICAg
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0aW5nLnR5cGUgKyAiICIgKyBnZXR0ZXJG
dW5jdGlvbk5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsgIjsg
fSBcbiIpCiAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29yZUV4cG9ydCAr
ICJ2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKCIgKyBzZXR0aW5nLnR5cGUgKyAiICIg
KyBzZXR0aW5nLm5hbWUgKyAiKSIpCiAgICAgZWxzZToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0
ZSgiICAgIGNvbnN0ICIgKyBzZXR0aW5nLnR5cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIigp
IGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH0gXG4iKQorICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIgICAgY29uc3QgIiArIHNldHRpbmcudHlwZSArICImICIgKyBnZXR0
ZXJGdW5jdGlvbk5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsg
IjsgfSBcbiIpCiAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29yZUV4cG9y
dCArICJ2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKGNvbnN0ICIgKyBzZXR0aW5nLnR5
cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIikiKQogCiAgICAgaWYgc2V0dGluZy5zZXROZWVk
c1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIjsgXG4i
KQorICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCI7XG5cbiIpCiAgICAgZWxzZToKLSAgICAgICAg
b3V0cHV0RmlsZS53cml0ZSgiIHsgbV8iICsgc2V0dGluZy5uYW1lICsgIiA9ICIgKyBzZXR0aW5n
Lm5hbWUgKyAiOyB9IFxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiIHsgbV8iICsgc2V0
dGluZy5uYW1lICsgIiA9ICIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9XG5cbiIpCiAKIAogZGVmIHBy
aW50R2V0dGVyc0FuZFNldHRlcnMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRp
bmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3NCeUNvbmRpdGlvbmFsLCBzZXR0
aW5ncyk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2Vu
ZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxlbWVu
dGF0aW9uRmlsZS5weQkocmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0
cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJv
bSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtlU2V0
dGVyRnVuY3Rpb25OYW1lLCB0eXBlSXNBZ2dyZWdhdGUKK2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxp
Y2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFrZVNldHRlckZ1bmN0aW9uTmFtZSwgdHlw
ZUlzVmFsdWVUeXBlCiAKIAogZGVmIGdlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUo
b3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC0xNTUsNyArMTU1LDcgQEAgZGVmIHByaW50
U2V0dGVyQm9keShvdXRwdXRGaWxlLCBzZXR0aW5nKQogCiAgICAgc2V0dGVyRnVuY3Rpb25OYW1l
ID0gbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKQogCi0gICAgaWYgbm90IHR5cGVJc0Fn
Z3JlZ2F0ZShzZXR0aW5nKToKKyAgICBpZiBub3QgdHlwZUlzVmFsdWVUeXBlKHNldHRpbmcpOgog
ICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCJ2b2lkIFNldHRpbmdzR2VuZXJhdGVkOjoiICsgc2V0
dGVyRnVuY3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50eXBlICsgIiAiICsgc2V0dGluZy5uYW1l
ICsgIilcbiIpCiAgICAgZWxzZToKICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgidm9pZCBTZXR0
aW5nc0dlbmVyYXRlZDo6IiArIHNldHRlckZ1bmN0aW9uTmFtZSArICIoY29uc3QgIiArIHNldHRp
bmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHJldmlz
aW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9T
ZXR0aW5ncy5weQkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBjbGFzcyBTZXR0aW5n
OgogICAgICAgICBzZWxmLmNvbmRpdGlvbmFsID0gTm9uZQogICAgICAgICBzZWxmLnNldE5lZWRz
U3R5bGVSZWNhbGNJbkFsbEZyYW1lcyA9IE5vbmUKICAgICAgICAgc2VsZi5pbmNsdWRlID0gTm9u
ZQorICAgICAgICBzZWxmLmdldHRlciA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgog
ICAgICAgICByZXN1bHQgPSBzZWxmLm5hbWUgKyAiIFRZUEU6IiArIHNlbGYudHlwZQpAQCAtNzcs
NiArNzgsOCBAQCBjbGFzcyBTZXR0aW5nOgogICAgICAgICAgICAgcmVzdWx0ICs9ICIgUkVDQUxD
OiIgKyBzZWxmLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcwogICAgICAgICBpZiAoc2Vs
Zi5pbmNsdWRlKToKICAgICAgICAgICAgIHJlc3VsdCArPSAiIElOQ0xVREU6IiArIHNlbGYuaW5j
bHVkZQorICAgICAgICBpZiAoc2VsZi5nZXR0ZXIpOgorICAgICAgICAgICAgcmVzdWx0ICs9ICIg
R0VUVEVSOiIgKyBzZWxmLmdldHRlcgogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIApAQCAtOTEs
NiArOTQsMTIgQEAgZGVmIG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZyk6CiAgICAgcmV0
dXJuICJzZXQiICsgdXBwZXJjYXNlRmlyc3ROKHNldHRpbmcubmFtZSwgMSkKIAogCitkZWYgbWFr
ZUdldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKToKKyAgICBpZiBzZXR0aW5nLmdldHRlcjoKKyAg
ICAgICAgcmV0dXJuIHNldHRpbmcuZ2V0dGVyCisgICAgcmV0dXJuIHNldHRpbmcubmFtZQorCisK
IGRlZiBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwoY29uZGl0aW9uYWwpOgogICAgIHJldHVybiBj
b25kaXRpb25hbC5zcGxpdCgnfCcpWzBdCiAKQEAgLTEzMSwxNiArMTQwLDExIEBAIGRlZiB0eXBl
SXNQcmltaXRpdmUoc2V0dGluZyk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIHR5cGVJc0Fn
Z3JlZ2F0ZShzZXR0aW5nKToKLSAgICAjIFNwZWNpYWwgY2FzZSBzdXBwb3J0ZWQgYWdncmVnYXRl
cyAoZS5nLiBjbGFzc2VzL3N0cnVjdHMpCitkZWYgdHlwZUlzVmFsdWVUeXBlKHNldHRpbmcpOgog
ICAgIGlmIHNldHRpbmcudHlwZSA9PSAnU3RyaW5nJzoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICBpZiBzZXR0aW5nLnR5cGUgPT0gJ0ludFNpemUnOgotICAgICAgICByZXR1cm4gVHJ1ZQorICAg
ICAgICByZXR1cm4gRmFsc2UKIAotICAgICMgRXZlcnl0aGluZyBlbHNlIGlzIGFuIGVudW0KLSAg
ICAjIEZJWE1FOiBTaG91bGQgd2UgbWFrZSBpdCBhIHJlcXVpcmVtZW50IHRvIGFubm90YXRlIGVu
dW1zIG9yIGNsYXNzZXMvc3RydWN0cyBpbiBzb21ld2F5PwotICAgIHJldHVybiBGYWxzZQorICAg
IHJldHVybiBUcnVlCiAKIAogZGVmIGluY2x1ZGVGb3JTZXR0aW5nKHNldHRpbmcpOgpAQCAtMTUy
LDEwICsxNTYsMTIgQEAgZGVmIGluY2x1ZGVGb3JTZXR0aW5nKHNldHRpbmcpOgogICAgIGlmIHR5
cGVJc1ByaW1pdGl2ZShzZXR0aW5nKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICMgU3Bl
Y2lhbCBjYXNlIFN0cmluZywgYXMgaXQgZG9lc24ndCBmb2xsb3cgdGhlIHBhdHRlcm4gb2YgYmVp
bmcgaW4gYSBmaWxlIHdpdGggdGhlCisgICAgIyBTcGVjaWFsIGNhc2UgU3RyaW5nIGFuZCBTZWNv
bmRzLCBhcyB0aGV5IGRvZXNuJ3QgZm9sbG93IHRoZSBwYXR0ZXJuIG9mIGJlaW5nIGluIGEgZmls
ZSB3aXRoIHRoZQogICAgICMgc2FtZSBuYW1lIGFzIHRoZSBjbGFzcy4KICAgICBpZiBzZXR0aW5n
LnR5cGUgPT0gJ1N0cmluZyc6CiAgICAgICAgIHJldHVybiAiPHd0Zi90ZXh0L1dURlN0cmluZy5o
PiIKKyAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ1NlY29uZHMnOgorICAgICAgICByZXR1cm4gIjx3
dGYvU2Vjb25kcy5oPiIKIAogICAgICMgRGVmYXVsdCB0byB1c2luZyB0aGUgdHlwZSBuYW1lIGZv
ciB0aGUgaW5jbHVkZS4KICAgICByZXR1cm4gIlwiIiArIHNldHRpbmcudHlwZSArICIuaFwiIgpA
QCAtMTgyLDYgKzE4OCw4IEBAIGRlZiBwYXJzZUlucHV0KGlucHV0KToKICAgICAgICAgICAgICAg
ICAgICAgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMgPSB2YWx1ZQogICAg
ICAgICAgICAgICAgIGlmIChuYW1lID09ICdpbmNsdWRlJyk6CiAgICAgICAgICAgICAgICAgICAg
IHNldHRpbmcuaW5jbHVkZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ2dl
dHRlcicpOgorICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLmdldHRlciA9IHZhbHVlCiAKICAg
ICAgICAgICAgICMgRklYTUU6IEFTU0VSVCBzb21ldGhpbmcgYWJvdXQgc2V0dGluZy5pbml0aWFs
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE5Nyw2ICszMTk3LDcg
QEAKIAkJN0MxRjVENTkxRjIyRkY3MzAwQTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
RjVENTgxRjIyRkY3MzAwQTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oICov
OyB9OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJE
RDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9Owog
CQk3QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdG
OThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkY4QkMy
MUY4MUJGNUIwMDMwNUMzMiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDQjExRDgxRjgxQjIyMDAwODQ5QUZEIC8q
IEZvbnRSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0MyRkE2MTExRUE5NUEzOTAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzJGQTYwRjFFQTk1QTMyMDBBMDMxMDggLyogUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcCAqLzsgfTsKIAkJN0MyRkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdDMzBEOTgzMUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk3RTFG
ODE1QUMwMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTE2NDAs
NiArMTE2NDEsNyBAQAogCQk3Q0M2OTkzRTE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1l
c3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRO
YW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M2OTkzRjE5MUVD
NUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJLaXROYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQjExRDgxRjgxQjIyMDAwODQ5QUZEIC8qIEZvbnRSZW5k
ZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZW5kZXJp
bmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBCQTAyMUI4Rjc5Qzkw
MDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0QwRTJCNTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFib3J0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjM5NzgsNiArMjM5ODAsNyBAQAogCQkJCTBGREE3QzIwMTg4MzJCQ0MwMEM5NTRCNSAv
KiBEYXRlVGltZUZvcm1hdC5jcHAgKi8sCiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8q
IERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERl
Y29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAorCQkJCTdDQ0IxMUQ4MUY4MUIyMjAwMDg0OUFGRCAv
KiBGb250UmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAv
KiBIeXBoZW5hdGlvbi5oICovLAogCQkJCTg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5l
RW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGlu
Zy5oICovLApAQCAtMjYxNjYsNiArMjYxNjksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNF
MjYxNkE0MTg3RTY1QzEwMDc5NTVGMyAvKiBpb3MgKi8sCiAJCQkJMkQ1MDM2NjYxQkNERERDNDAw
RTIwQkIzIC8qIG1hYyAqLywKKwkJCQk3Q0QwRTJCNjFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRD
b250cm9sbGVyLmNwcCAqLywKKwkJCQk3Q0QwRTJCNTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRD
b250cm9sbGVyLmggKi8sCisJCQkJN0NEMEUyQjcxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29u
dHJvbGxlci5pZGwgKi8sCisJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2ln
bmFsLmNwcCAqLywKKwkJCQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwu
aCAqLywKKwkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICov
LAogCQkJCTdDNTIyMjk3MUUxREFFMTYwMDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAg
Ki8sCiAJCQkJN0M1MjIyOTgxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmgg
Ki8sCiAJCQkJN0NEMEJBMDIxQjhGNzlDOTAwNUNFQkJFIC8qIEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrLmNwcCAqLywKQEAgLTI2MTczLDEyICsyNjE4Miw2IEBACiAJCQkJRTFDNERFNkQwRUE3
NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3
NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCTgzQkI1Qzg3MUQ1RDZG
M0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLywKLQkJCQk3Q0QwRTJC
NTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8sCi0JCQkJN0NEMEUyQjYx
RjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5jcHAgKi8sCi0JCQkJN0NEMEUyQjcx
RjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5pZGwgKi8sCi0JCQkJN0NEMEUyQkMx
RjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggKi8sCi0JCQkJN0NEMEUyQkQxRjgwQTU2
RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKLQkJCQk3Q0QwRTJCRTFGODBBNTZFMDAx
NkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAogCQkJCTMxOTg0N0ZFMUExRDgxNjcwMEExMzMx
OCAvKiBBbmltYXRpb25FdmVudC5jcHAgKi8sCiAJCQkJMzE5ODQ3RkYxQTFEODE2NzAwQTEzMzE4
IC8qIEFuaW1hdGlvbkV2ZW50LmggKi8sCiAJCQkJMzE5ODQ4MDAxQTFEODE2NzAwQTEzMzE4IC8q
IEFuaW1hdGlvbkV2ZW50LmlkbCAqLywKQEAgLTI3MDczLDYgKzI3MDc2LDggQEAKIAkJCWlzYSA9
IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAorCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBB
Ym9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5
IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzk1OSw2ICsyNzk2NCw3IEBACiAJCQkJMDg0NTY4MDgxMkI5MERBNjAw
OTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEy
NEU5MDAyRDE0NDAgLyogRm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcx
RjRGRkMwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdDMkY4QkMyMUY4MUJGNUIwMDMwNUMzMiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJBQjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdv
cml0aG0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBG
b250U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1
RCAvKiBGb250U2VsZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgzNzQsNiArMjgz
ODAsOCBAQAogCQkJCTJEMEI0QUFCMThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMjFFNTdEMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29s
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FDNDcwMjE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRU
Q3VlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzMwRDk4NDFGODE1QUVDMDAyNjgzNTYgLyogSlNB
Ym9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMzBEOTg2MUY4MTVBRUMwMDI2
ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGODgwNTBGRjk1
N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcw
NDQwNUExRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0UxRTVBRDFFOEREMDlCMDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkzODcsNyArMjkzOTUsNiBAQAogCQkJCTUyRjEwODY2MTYyQjZEQTgw
MDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYy
QjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RG
NEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk3QzMwRDk4NDFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNERjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9y
eS5pZGwgaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjgxLDcgKzMwMjg4
LDYgQEAKIAkJCQlCMjIyNzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdBbmltYXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0NTEzQTY5
MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3
QzMwRDk4NjFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTlDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdD
aXJjbGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5RjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHQ2xpcFBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzI1LDcgKzMw
MzMxLDYgQEAKIAkJCQlCMjIyN0EwNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkZDMEZEMjYyMzkw
MEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRDBFMkJGMUY4MEE1
NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxRUJGM0Iw
RkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QTBDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0EwRjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzgzLDcgKzMwNzg4LDYg
QEAKIAkJCQk3N0ExN0E3ODEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2QkRCOEMxRTZFMTUzMDAwREUwRDVBIC8qIFdl
YkdQVUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUyMTIzQzFFNDkyNEE0MDBDRTEwNDQg
LyogV2ViSGVhcEFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0QwRTJCODFGODBBNDgyMDAx
NkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyNTE4
N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI3Myw2ICszMTI3Nyw4
IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3Q0QwRTJCOTFGODBBNDgyMDAxNkE0Q0Ug
LyogQWJvcnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDRDBFMkMwMUY4MEE1
NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFE
MDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzdGNTdBQjkxQTUwNzI2OTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCQTFBNTA3MjZGMDA4NzZGOTggLyogQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNTUwLDcgKzMxNTU2LDYg
QEAKIAkJCQlDRTI4NDk4OTFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGQTcxQzZBNTA1NzAw
OTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRTZEQURGOTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzBEOTg1
MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNFNzk5RjlGMUM2QTRDMTYwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGOTcxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlG
QUIxQzZBNTA2NjAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJl
Y3RpdmUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTYyMiw3ICszMTYyNyw2IEBACiAJCQkJRTEy
MzNGMTAxODVBNDEzMDAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVN
YWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRDMzMTkxODJEOERERDAwQzA1RDlGIC8qIENy
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
QzI2NkQ4MTgzMTdBQjQwMDNGOEIzMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QzMwRDk4MzFGODE1QUVDMDAyNjgzNTYgLyog
SlNBYm9ydENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4MkIxODIyQ0ZF
QzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE5QUMzRUUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTlBQzNGMDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI0MDMsNiArMzI0MDcsOCBAQAogCQkJ
CTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFEOUZGNkUxMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0FDNDcwMTE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRU
Q3VlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzBEOTgzMUY4MTVBRUMwMDI2ODM1NiAvKiBK
U0Fib3J0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzMwRDk4NTFGODE1QUVD
MDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MThGODgw
NDBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1NzA0NDA1QzFFNTM5Mzc5MDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTdFMUU1QUMxRThERDA5QjAwRUUzN0M5IC8qIEpTQWVzQ3RyUGFy
YW1zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI0ODEsNyArMzI0ODcsNiBAQAogCQkJCUE1ODRG
RTNCMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5M0Y5QjZFMDBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTc5QUM5MjE4MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9u
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0NEMEUyQzAxRjgwQTU2RTAwMTZBNENFIC8q
IEFib3J0U2lnbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUJEMTJCMDNGMEIwMDNB
NTgzQSAvKiBKU0NvbnZvbHZlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU2RkQ0OEQw
RjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTREQ0YzQjIxQjZCRTIwODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMjU3NCw3ICszMjU3OSw2IEBACiAJCQkJODM2QUNFRDIxRUNBQUIx
OTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQkJCQ0NC
MUY1NjE4MEQwMDVFRkFBQyAvKiBKU0RPTU1hdHJpeDJESW5pdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4MzU2NTdDNzFFQ0FCMTA3MDBDREU3MkQgLyogSlNET01NYXRyaXhJbml0LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdDRDBFMkI5MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM2QUNFRDUxRUNBQUIxOTAwNEJEMDEyIC8qIEpT
RE9NTWF0cml4UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4MDYwRDc1N0U3
RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4
MDgwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGVBcnJheS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyMjI2OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNs
dWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFwLmgi
CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTE0OCwzMCArMTQ3LDE3IEBAIFNldHRpbmdz
OjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3koU2Vj
dXJpdHlPcmlnaW46OkFsbG93QWxsU3RvcmFnZSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5
b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERP
TVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCi0gICAgLCBtX2lzSmF2YUVuYWJsZWQo
ZmFsc2UpCi0gICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBt
X2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxl
ZCh0cnVlKQotICAgICwgbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlcyhmYWxzZSkKICAgICAsIG1f
YXJlUGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzU2NyaXB0RW5hYmxlZChmYWxzZSkK
LSAgICAsIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsoZmFsc2UpCiAgICAgLCBtX3Vz
ZXNQYWdlQ2FjaGUoZmFsc2UpCi0gICAgLCBtX2ZvbnRSZW5kZXJpbmdNb2RlKDApCi0gICAgLCBt
X3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZFNo
b3VsZEV4dGVuZEJleW9uZFBhZ2UoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxl
ZChmYWxzZSkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgbV90b3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChmYWxzZSkKLSNlbmRpZgogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV90aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRC
ZWZvcmVIaWRpbmdDb250cm9scygzX3MpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdz
VGltZXIoKnRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQog
ICAgICwgbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSkKICAgICAs
IG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKGZhbHNlKQotICAgICwg
bV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMoZmFsc2UpCi0gICAgLCBtX3dlYkZvbnRz
QWx3YXlzRmFsbEJhY2soZmFsc2UpCi0gICAgLCBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KGZh
bHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNv
IHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWlu
ZyB0byB1c2UgaXQuCkBAIC0zNDQsMTYgKzMzMCw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNjcmlw
dEVuYWJsZWQoYm9vbCBpc1MKICNlbmRpZgogfQogCi12b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5h
YmxlZChib29sIGlzSmF2YUVuYWJsZWQpCi17Ci0gICAgbV9pc0phdmFFbmFibGVkID0gaXNKYXZh
RW5hYmxlZDsKLX0KLQotdm9pZCBTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
KGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMpCi17Ci0gICAgbV9pc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcyA9IGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOwotfQotCiB2b2lkIFNl
dHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBt
X2FyZUltYWdlc0VuYWJsZWQgPSBhcmVJbWFnZXNFbmFibGVkOwpAQCAtMzYyLDE2ICszMzgsNiBA
QCB2b2lkIFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlCiAgICAgbV9zZXRJbWFn
ZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNldHRp
bmdzOjpzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyhib29sIHByZWZlck1JTUVUeXBlRm9ySW1h
Z2VzKQotewotICAgIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMgPSBwcmVmZXJNSU1FVHlwZUZv
ckltYWdlczsKLX0KLQotdm9pZCBTZXR0aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3ko
Ym9vbCBmb3JjZWQpCi17Ci0gICAgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA9IGZvcmNlZDsK
LX0KLQogdm9pZCBTZXR0aW5nczo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5h
YmxlZCkKIHsKICAgICBpZiAobV9hcmVQbHVnaW5zRW5hYmxlZCA9PSBhcmVQbHVnaW5zRW5hYmxl
ZCkKQEAgLTM5MiwxMyArMzU4LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbgogICAgICAgICBtX3BhZ2UtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7
CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHF1aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2
NzQ1MzcgYW5kIDUyMTEyNzEuIFdlIG5lZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKLS8v
IGNhbiBmaXggdGhlIGJ1ZyBmcm9tIHRoZWlyIGVuZC4KLXZvaWQgU2V0dGluZ3M6OnNldE5lZWRz
QWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wgc2hvdWxkTm90UmVsb2FkSUZyYW1lc0ZvclVu
Y2hhbmdlZFNSQykKLXsKLSAgICBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrID0gc2hv
dWxkTm90UmVsb2FkSUZyYW1lc0ZvclVuY2hhbmdlZFNSQzsKLX0KLQogdm9pZCBTZXR0aW5nczo6
c2V0TWluaW11bURPTVRpbWVySW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKIHsKICAgICBhdXRv
IG9sZFRpbWVySW50ZXJ2YWwgPSBzdGQ6OmV4Y2hhbmdlKG1fbWluaW11bURPTVRpbWVySW50ZXJ2
YWwsIGludGVydmFsKTsKQEAgLTQzMywyMCArMzkyLDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0VXNl
c1BhZ2VDYWNoZShib29sIHVzZQogICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5l
VG9TaXplTm93KDAsIFBydW5pbmdSZWFzb246Ok5vbmUpOwogfQogCi12b2lkIFNldHRpbmdzOjpz
ZXRGb250UmVuZGVyaW5nTW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKQotewotICAgIGlmIChm
b250UmVuZGVyaW5nTW9kZSgpID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ZvbnRS
ZW5kZXJpbmdNb2RlID0gc3RhdGljX2Nhc3Q8aW50Pihtb2RlKTsKLSAgICBpZiAobV9wYWdlKQot
ICAgICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwotfQotCi1G
b250UmVuZGVyaW5nTW9kZSBTZXR0aW5nczo6Zm9udFJlbmRlcmluZ01vZGUoKSBjb25zdAotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb250UmVuZGVyaW5nTW9kZT4obV9mb250UmVuZGVyaW5n
TW9kZSk7Ci19Ci0KIHZvaWQgU2V0dGluZ3M6OnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29s
IGRuc1ByZWZldGNoaW5nRW5hYmxlZCkKIHsKICAgICBpZiAobV9kbnNQcmVmZXRjaGluZ0VuYWJs
ZWQgPT0gZG5zUHJlZmV0Y2hpbmdFbmFibGVkKQpAQCAtNDU3LDE0ICs0MDIsNiBAQCB2b2lkIFNl
dHRpbmdzOjpzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoCiAgICAgICAgIG1fcGFnZS0+ZG5zUHJl
ZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0U2hvd1RpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobV9zaG93VGlsZWRT
Y3JvbGxpbmdJbmRpY2F0b3IgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAK
LSAgICBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA9IGVuYWJsZWQ7Ci19Ci0KICNpZiBF
TkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiB2b2lkIFNldHRpbmdzOjpzZXRSZXNvdXJjZVVzYWdlT3Zl
cmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogewpAQCAtNjUwLDI0ICs1ODcsNiBAQCB2b2lkIFNl
dHRpbmdzOjpzZXRIaWRkZW5QYWdlQ1NTQW5pbWF0aW9uCiAgICAgICAgIG1fcGFnZS0+aGlkZGVu
UGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0
aW5nczo6c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wgcHJlZmVyUGljdG9n
cmFwaHMpCi17Ci0gICAgaWYgKG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzID09IHBy
ZWZlclBpY3RvZ3JhcGhzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZvbnRGYWxsYmFja1By
ZWZlcnNQaWN0b2dyYXBocyA9IHByZWZlclBpY3RvZ3JhcGhzOwotICAgIGlmIChtX3BhZ2UpCi0g
ICAgICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Ci19Ci0KLXZv
aWQgU2V0dGluZ3M6OnNldFdlYkZvbnRzQWx3YXlzRmFsbEJhY2soYm9vbCBlbmFibGUpCi17Ci0g
ICAgaWYgKG1fd2ViRm9udHNBbHdheXNGYWxsQmFjayA9PSBlbmFibGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fd2ViRm9udHNBbHdheXNGYWxsQmFjayA9IGVuYWJsZTsKLX0KLQogdm9pZCBT
ZXR0aW5nczo6c2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCBmbGFn
KQogewogICAgIGdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCA9IGZsYWc7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAyMjI2OTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzRGVmYXVsdFZhbHVl
cy5oIgogI2luY2x1ZGUgIlNldHRpbmdzR2VuZXJhdGVkLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdz
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx1bmlj
b2RlL3VzY3JpcHQuaD4KQEAgLTg4LDE5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2Ny
aXB0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRFbmFibGVkOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRFbmFibGVkKGJvb2wpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxlZChib29sKTsKLSAgICBib29sIGlzSmF2YUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWQ7IH0KLQotICAgIC8vIFRoaXMgc2V0dGlu
Z3MgaXMgb25seSBjb25zdWx0ZWQgaWYgaXNKYXZhRW5hYmxlZCgpIHJldHVybnMgdHJ1ZTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sKTsK
LSAgICBib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9p
c0phdmFFbmFibGVkRm9yTG9jYWxGaWxlczsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRJbWFnZXNFbmFibGVkKGJvb2wpOwogICAgIGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJlSW1hZ2VzRW5hYmxlZDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyhib29sKTsKLSAgICBib29sIHByZWZlck1JTUVU
eXBlRm9ySW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlczsg
fQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sKTsKICAg
ICBib29sIGFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5zRW5h
YmxlZDsgfQogCkBAIC0xMTAsOSArOTksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOwogICAgIGNvbnN0IFVS
TCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlyayhib29sKTsKLSAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2Fk
aW5nUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJr
OyB9Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmltdW1ET01UaW1lckludGVydmFs
KFNlY29uZHMpOyAvLyBJbml0aWFsaXplZCB0byBET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRl
cnZhbCgpLgogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCB7IHJl
dHVybiBtX21pbmltdW1ET01UaW1lckludGVydmFsOyB9CiAKQEAgLTEyNiwxMiArMTEyLDYgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wp
OwogICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VDYWNo
ZTsgfQotICAgICAgICAKLSAgICB2b2lkIHNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRSZW5kZXJp
bmdNb2RlIG1vZGUpOwotICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKCkg
Y29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3dUaWxlZFNjcm9sbGluZ0lu
ZGljYXRvcihib29sKTsKLSAgICBib29sIHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOyB9CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgYm9vbCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsgfQpAQCAtMTgz
LDExICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sKTsKICAgICBzdGF0aWMgYm9vbCB1c2VzTW9ja1Nj
cm9sbEFuaW1hdG9yKCk7CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgc2V0
VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgYm9vbCBpc1RvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsg
fQotI2VuZGlmCi0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBTZWN1cml0
eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKQEAgLTE5NywxOCArMTcy
LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNob3VsZFJl
c3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKIAotICAgIHZv
aWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoU2Vjb25k
cyB0aW1lKSB7IG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMg
PSB0aW1lOyB9Ci0gICAgU2Vjb25kcyB0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRp
bmdDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHM7IH0KLQogICAgIGJvb2wgaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1
c3BlbnNpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9u
U3VzcGVuc2lvbkVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhpZGRlblBh
Z2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZChib29sKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wpOwotICAgIGJv
b2wgZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKCkgY29uc3QgeyByZXR1cm4gbV9mb250
RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHM7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0V2ViRm9udHNBbHdheXNGYWxsQmFjayhib29sKTsKLSAgICBib29sIHdlYkZvbnRzQWx3YXlz
RmFsbEJhY2soKSBjb25zdCB7IHJldHVybiBtX3dlYkZvbnRzQWx3YXlzRmFsbEJhY2s7IH0KLQog
ICAgIHN0YXRpYyBib29sIGxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkgeyBy
ZXR1cm4gZ0xvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJs
ZWQoYm9vbCk7CiAKQEAgLTI0MSwxNiArMjA3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBnQ3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOwotCi0jaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSA9IGRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotI2Vu
ZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNldE1lZGlhRGV2
aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIHsg
bV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBtZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5OyB9
Ci0KICAgICBzdGF0aWMgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChib29s
KTsKIApAQCAtMjU4LDE3ICsyMTYsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2wpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIGJvb2wgYXBwbGVQYXlFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsZVBheUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxl
UGF5RW5hYmxlZChib29sIGFwcGxlUGF5RW5hYmxlZCkgeyBtX2FwcGxlUGF5RW5hYmxlZCA9IGFw
cGxlUGF5RW5hYmxlZDsgfQotCi0gICAgYm9vbCBhcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJl
QWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFs
bG93ZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2Vk
KGJvb2wgYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQpIHsgbV9hcHBsZVBheUNh
cGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCA9IGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVB
bGxvd2VkOyB9Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9yY2VQZW5k
aW5nV2ViR0xQb2xpY3koYm9vbCk7Ci0gICAgYm9vbCBpc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5
KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeTsgfQotCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCk7
CiAgICAgc3RhdGljIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoKTsKIApAQCAtMjg5LDM2
ICsyMzYsMjEgQEAgcHJpdmF0ZToKICAgICBTZWNvbmRzIG1fbGF5b3V0SW50ZXJ2YWw7CiAgICAg
U2Vjb25kcyBtX21pbmltdW1ET01UaW1lckludGVydmFsOwogCi0gICAgYm9vbCBtX2lzSmF2YUVu
YWJsZWQgOiAxOwotICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAg
ICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CiAgICAgYm9vbCBtX2FyZUlt
YWdlc0VuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlcyA6IDE7
CiAgICAgYm9vbCBtX2FyZVBsdWdpbnNFbmFibGVkIDogMTsKICAgICBib29sIG1faXNTY3JpcHRF
bmFibGVkIDogMTsKLSAgICBib29sIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsgOiAx
OwogICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZvbnRSZW5k
ZXJpbmdNb2RlIDogMTsKLSAgICBib29sIG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yIDog
MTsKICAgICBib29sIG1fYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgOiAxOwogICAg
IGJvb2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICBib29sIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwotI2VuZGlm
CiAgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0g
ICAgU2Vjb25kcyBtX3RpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xz
OwotCiAgICAgVGltZXIgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwogICAgIHZvaWQg
aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKCk7CiAKICAgICBib29sIG1faGlkZGVuUGFn
ZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5QYWdlQ1NT
QW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9mb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMgOiAxOwotICAgIGJvb2wgbV93ZWJGb250c0Fsd2F5c0ZhbGxCYWNr
IDogMTsKLQotICAgIGJvb2wgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA6IDE7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgYm9vbCBtX3Jlc291cmNlVXNhZ2VPdmVybGF5Vmlz
aWJsZSB7IGZhbHNlIH07CkBAIC0zNTUsMjEgKzI4NywxMSBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGdNYW5hZ2VBdWRpb1Nlc3Npb247CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgZ0N1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZDsKIAotI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk7Ci0jZW5kaWYKLSAgICAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IFN0cmluZyBtX21lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgc3Rh
dGljIGJvb2wgZ01vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgZ01l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KEFQUExFX1BBWSkKLSAgICBib29sIG1fYXBwbGVQYXlFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQgeyB0cnVlIH07Ci0jZW5k
aWYKLQogICAgIHN0YXRpYyBib29sIGdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxl
ZDsKICAgICBzdGF0aWMgYm9vbCBnUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVk
OwogICAgIHN0YXRpYyBib29sIGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBhY2NlbGVyYXRl
ZENvbXBvc2l0ZWRBbmltYXRpb25zRW5hYmxlZCBpCiBzaG93RGVidWdCb3JkZXJzIGluaXRpYWw9
ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiBzaG93UmVwYWludENvdW50
ZXIgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKIHZpc2li
bGVEZWJ1Z092ZXJsYXlSZWdpb25zIHR5cGU9RGVidWdPdmVybGF5UmVnaW9ucywgaW5pdGlhbD0w
CitzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgaW5pdGlhbD1mYWxzZQogCiAjIFRoaXMgaXMg
YSBxdWlyayB3ZSBhcmUgcHJvLWFjdGl2ZWx5IGFwcGx5aW5nIHRvIG9sZCBhcHBsaWNhdGlvbnMu
IEl0IGNoYW5nZXMga2V5Ym9hcmQgZXZlbnQgZGlzcGF0Y2hpbmcsCiAjIG1ha2luZyBrZXlJZGVu
dGlmaWVyIGF2YWlsYWJsZSBvbiBrZXlwcmVzcyBldmVudHMsIG1ha2luZyBjaGFyQ29kZSBhdmFp
bGFibGUgb24ga2V5ZG93bi9rZXl1cCBldmVudHMsCkBAIC0zMDEsNyArMzAyLDMyIEBAIHZpZXdw
b3J0Rml0RW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKIGFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIGluaXRpYWw9ZmFsc2UKIAorc3RvcmFnZUFj
Y2Vzc0FQSUVuYWJsZWQgaW5pdGlhbD1mYWxzZQorCit0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRC
ZWZvcmVIaWRpbmdDb250cm9scyB0eXBlPVNlY29uZHMsIGluaXRpYWw9M19zIAorCitmb250RmFs
bGJhY2tQcmVmZXJzUGljdG9ncmFwaHMgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2Fs
Y0luQWxsRnJhbWVzPTEKK3dlYkZvbnRzQWx3YXlzRmFsbEJhY2sgaW5pdGlhbD1mYWxzZQorCiBw
YXltZW50UmVxdWVzdEVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZTUVOVF9S
RVFVRVNUCiAKLXN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkIGluaXRpYWw9ZmFsc2UKK2FwcGxlUGF5
RW5hYmxlZCBpbml0aWFsPWZhbHNlLCBjb25kaXRpb25hbD1BUFBMRV9QQVkKK2FwcGxlUGF5Q2Fw
YWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9QVBQTEVf
UEFZCisKK2phdmFFbmFibGVkIGluaXRpYWw9ZmFsc2UsIGdldHRlcj1pc0phdmFFbmFibGVkCitq
YXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgaW5pdGlhbD10cnVlLCBnZXR0ZXI9aXNKYXZhRW5hYmxl
ZEZvckxvY2FsRmlsZXMKKworZm9udFJlbmRlcmluZ01vZGUgdHlwZT1Gb250UmVuZGVyaW5nTW9k
ZSwgaW5pdGlhbD1Gb250UmVuZGVyaW5nTW9kZTo6Tm9ybWFsCisKK3ByZWZlck1JTUVUeXBlRm9y
SW1hZ2VzIGluaXRpYWw9ZmFsc2UKKworZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgaW5pdGlhbD1m
YWxzZSwgZ2V0dGVyPWlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kKKworbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSB0eXBlPVN0cmluZywgY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QQorbWVkaWFEZXZpY2VJZGVudGlmaWVyU3RvcmFnZURpcmVjdG9yeSB0eXBlPVN0cmluZywgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCisKKyMgRklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGJl
Y2F1c2Ugb2YgUmFkYXIgNDY3NDUzNyBhbmQgNTIxMTI3MS4gV2UgbmVlZCB0byBwaGFzZSBpdCBv
dXQgb25jZSBBZG9iZQorIyBjYW4gZml4IHRoZSBidWcgZnJvbSB0aGVpciBlbmQuCituZWVkc0Fk
b2JlRnJhbWVSZWxvYWRpbmdRdWlyayBpbml0aWFsPWZhbHNlLCBnZXR0ZXI9bmVlZHNBY3JvYmF0
RnJhbWVSZWxvYWRpbmdRdWlyawogCit0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBpbml0aWFs
PWZhbHNlLCBnZXR0ZXI9aXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCwgY29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Gb250UmVuZGVyaW5nTW9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAkocmV2aXNpb24g
MjIyNjkxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oOjIy
MjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5n
LCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9
OworCitlbnVtIEZvbnRTbW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcs
IEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlhbGlhc2VkIH07CisKKy8vIFRoaXMgc2V0dGluZyBp
cyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5k
ZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBkaWZmZXJlbnQKKy8vIG1ldHJpY3MuIEl0IGlzIHVz
ZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5kIEdESSB0ZXh0IG9uIFdpbmRvd3MuCitlbnVtIGNs
YXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9ybWFsLCBBbHRlcm5hdGUgfTsKKworZW51bSBGb250
T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9OworCitlbnVtIGNsYXNzIE5vbkNK
S0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwgVXByaWdodCB9OworCisvLyBIZXJlLCAiTGVhZGlu
ZyIgYW5kICJUcmFpbGluZyIgYXJlIHJlbGV2YW50IGFmdGVyIHRoZSBsaW5lIGhhcyBiZWVuIHJl
YXJyYW5nZWQgZm9yIGJpZGkuCisvLyAoIkxlYWRpbmciIG1lYW5zICJsZWZ0IiBhbmQgIlRyYWls
aW5nIiBtZWFucyAicmlnaHQuIikKK2VudW0gRXhwYW5zaW9uQmVoYXZpb3JGbGFncyB7CisgICAg
Rm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gPSAwIDw8IDAsCisgICAgQWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiA9IDEgPDwgMCwKKyAgICBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uID0gMiA8PCAwLAorICAg
IFRyYWlsaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMCwKKworICAgIEZvcmJpZExlYWRpbmdFeHBh
bnNpb24gPSAwIDw8IDIsCisgICAgQWxsb3dMZWFkaW5nRXhwYW5zaW9uID0gMSA8PCAyLAorICAg
IEZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IDIgPDwgMiwKKyAgICBMZWFkaW5nRXhwYW5zaW9uTWFz
ayA9IDMgPDwgMiwKKworICAgIERlZmF1bHRFeHBhbnNpb24gPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwKK307Cit0eXBlZGVmIHVuc2lnbmVkIEV4cGFu
c2lvbkJlaGF2aW9yOworCitlbnVtIEZvbnRTeW50aGVzaXNWYWx1ZXMgeworICAgIEZvbnRTeW50
aGVzaXNOb25lID0gMHgwLAorICAgIEZvbnRTeW50aGVzaXNXZWlnaHQgPSAweDEsCisgICAgRm9u
dFN5bnRoZXNpc1N0eWxlID0gMHgyLAorICAgIEZvbnRTeW50aGVzaXNTbWFsbENhcHMgPSAweDQK
K307Cit0eXBlZGVmIHVuc2lnbmVkIEZvbnRTeW50aGVzaXM7Citjb25zdCB1bnNpZ25lZCBGb250
U3ludGhlc2lzV2lkdGggPSAzOworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50TGlnYXR1cmVzIHsK
KyAgICBOb3JtYWwsCisgICAgWWVzLAorICAgIE5vCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJp
YW50UG9zaXRpb24geworICAgIE5vcm1hbCwKKyAgICBTdWJzY3JpcHQsCisgICAgU3VwZXJzY3Jp
cHQKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnRDYXBzIHsKKyAgICBOb3JtYWwsCisgICAg
U21hbGwsCisgICAgQWxsU21hbGwsCisgICAgUGV0aXRlLAorICAgIEFsbFBldGl0ZSwKKyAgICBV
bmljYXNlLAorICAgIFRpdGxpbmcKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmlj
RmlndXJlIHsKKyAgICBOb3JtYWwsCisgICAgTGluaW5nTnVtYmVycywKKyAgICBPbGRTdHlsZU51
bWJlcnMKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyB7CisgICAg
Tm9ybWFsLAorICAgIFByb3BvcnRpb25hbE51bWJlcnMsCisgICAgVGFidWxhck51bWJlcnMKK307
CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24geworICAgIE5vcm1hbCwK
KyAgICBEaWFnb25hbEZyYWN0aW9ucywKKyAgICBTdGFja2VkRnJhY3Rpb25zCit9OworCitlbnVt
IGNsYXNzIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgeworICAgIE5vcm1hbCwKKyAgICBZZXMK
K307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8geworICAgIE5v
cm1hbCwKKyAgICBZZXMKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnRBbHRlcm5hdGVzIHsK
KyAgICBOb3JtYWwsCisgICAgSGlzdG9yaWNhbEZvcm1zCit9OworCitlbnVtIGNsYXNzIEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudCB7CisgICAgTm9ybWFsLAorICAgIEppczc4LAorICAgIEpp
czgzLAorICAgIEppczkwLAorICAgIEppczA0LAorICAgIFNpbXBsaWZpZWQsCisgICAgVHJhZGl0
aW9uYWwKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCB7CisgICAg
Tm9ybWFsLAorICAgIEZ1bGwsCisgICAgUHJvcG9ydGlvbmFsCit9OworCitlbnVtIGNsYXNzIEZv
bnRWYXJpYW50RWFzdEFzaWFuUnVieSB7CisgICAgTm9ybWFsLAorICAgIFllcworfTsKKworc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3MgeworICAgIEZvbnRWYXJpYW50U2V0dGluZ3MoKQorICAg
ICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsKQorICAg
ICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1h
bCkKKyAgICAgICAgLCBoaXN0b3JpY2FsTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpO
b3JtYWwpCisgICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVy
ZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBwb3NpdGlvbihGb250VmFyaWFudFBvc2l0aW9uOjpOb3Jt
YWwpCisgICAgICAgICwgY2FwcyhGb250VmFyaWFudENhcHM6Ok5vcm1hbCkKKyAgICAgICAgLCBu
dW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsKQorICAgICAgICAs
IG51bWVyaWNTcGFjaW5nKEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbCkKKyAgICAg
ICAgLCBudW1lcmljRnJhY3Rpb24oRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbCkK
KyAgICAgICAgLCBudW1lcmljT3JkaW5hbChGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3Jt
YWwpCisgICAgICAgICwgbnVtZXJpY1NsYXNoZWRaZXJvKEZvbnRWYXJpYW50TnVtZXJpY1NsYXNo
ZWRaZXJvOjpOb3JtYWwpCisgICAgICAgICwgYWx0ZXJuYXRlcyhGb250VmFyaWFudEFsdGVybmF0
ZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBlYXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50RWFzdEFz
aWFuVmFyaWFudDo6Tm9ybWFsKQorICAgICAgICAsIGVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbCkKKyAgICAgICAgLCBlYXN0QXNpYW5SdWJ5KEZvbnRWYXJp
YW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsKQorICAgIHsKKyAgICB9CisKKyAgICBGb250VmFyaWFu
dFNldHRpbmdzKAorICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXMs
CisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMsCisg
ICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWxMaWdhdHVyZXMsCisgICAgICAg
IEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzLAorICAgICAgICBGb250
VmFyaWFudFBvc2l0aW9uIHBvc2l0aW9uLAorICAgICAgICBGb250VmFyaWFudENhcHMgY2FwcywK
KyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmUsCisgICAgICAg
IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgbnVtZXJpY1NwYWNpbmcsCisgICAgICAgIEZvbnRW
YXJpYW50TnVtZXJpY0ZyYWN0aW9uIG51bWVyaWNGcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbCwKKyAgICAgICAgRm9udFZhcmlhbnROdW1l
cmljU2xhc2hlZFplcm8gbnVtZXJpY1NsYXNoZWRaZXJvLAorICAgICAgICBGb250VmFyaWFudEFs
dGVybmF0ZXMgYWx0ZXJuYXRlcywKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
IGVhc3RBc2lhblZhcmlhbnQsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggZWFz
dEFzaWFuV2lkdGgsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBlYXN0QXNpYW5S
dWJ5KQorICAgICAgICAgICAgOiBjb21tb25MaWdhdHVyZXMoY29tbW9uTGlnYXR1cmVzKQorICAg
ICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25hcnlMaWdhdHVyZXMp
CisgICAgICAgICAgICAsIGhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNhbExpZ2F0dXJlcykK
KyAgICAgICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoY29udGV4dHVhbEFsdGVybmF0ZXMp
CisgICAgICAgICAgICAsIHBvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAgICAgLCBjYXBzKGNh
cHMpCisgICAgICAgICAgICAsIG51bWVyaWNGaWd1cmUobnVtZXJpY0ZpZ3VyZSkKKyAgICAgICAg
ICAgICwgbnVtZXJpY1NwYWNpbmcobnVtZXJpY1NwYWNpbmcpCisgICAgICAgICAgICAsIG51bWVy
aWNGcmFjdGlvbihudW1lcmljRnJhY3Rpb24pCisgICAgICAgICAgICAsIG51bWVyaWNPcmRpbmFs
KG51bWVyaWNPcmRpbmFsKQorICAgICAgICAgICAgLCBudW1lcmljU2xhc2hlZFplcm8obnVtZXJp
Y1NsYXNoZWRaZXJvKQorICAgICAgICAgICAgLCBhbHRlcm5hdGVzKGFsdGVybmF0ZXMpCisgICAg
ICAgICAgICAsIGVhc3RBc2lhblZhcmlhbnQoZWFzdEFzaWFuVmFyaWFudCkKKyAgICAgICAgICAg
ICwgZWFzdEFzaWFuV2lkdGgoZWFzdEFzaWFuV2lkdGgpCisgICAgICAgICAgICAsIGVhc3RBc2lh
blJ1YnkoZWFzdEFzaWFuUnVieSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0FsbE5vcm1h
bCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IEZvbnRW
YXJpYW50TGlnYXR1cmVzOjpOb3JtYWwKKyAgICAgICAgICAgICYmIGRpc2NyZXRpb25hcnlMaWdh
dHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbAorICAgICAgICAgICAgJiYgaGlz
dG9yaWNhbExpZ2F0dXJlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCisgICAgICAg
ICAgICAmJiBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9y
bWFsCisgICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3Jt
YWwKKyAgICAgICAgICAgICYmIGNhcHMgPT0gRm9udFZhcmlhbnRDYXBzOjpOb3JtYWwKKyAgICAg
ICAgICAgICYmIG51bWVyaWNGaWd1cmUgPT0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3Jt
YWwKKyAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IEZvbnRWYXJpYW50TnVtZXJpY1Nw
YWNpbmc6Ok5vcm1hbAorICAgICAgICAgICAgJiYgbnVtZXJpY0ZyYWN0aW9uID09IEZvbnRWYXJp
YW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWwKKyAgICAgICAgICAgICYmIG51bWVyaWNPcmRpbmFs
ID09IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbAorICAgICAgICAgICAgJiYgbnVt
ZXJpY1NsYXNoZWRaZXJvID09IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwK
KyAgICAgICAgICAgICYmIGFsdGVybmF0ZXMgPT0gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3Jt
YWwKKyAgICAgICAgICAgICYmIGVhc3RBc2lhblZhcmlhbnQgPT0gRm9udFZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50OjpOb3JtYWwKKyAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IEZvbnRW
YXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbAorICAgICAgICAgICAgJiYgZWFzdEFzaWFuUnVi
eSA9PSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IG90aGVyLmNvbW1vbkxpZ2F0dXJl
cworICAgICAgICAgICAgJiYgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9PSBvdGhlci5kaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzCisgICAgICAgICAgICAmJiBoaXN0b3JpY2FsTGlnYXR1cmVzID09IG90
aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMKKyAgICAgICAgICAgICYmIGNvbnRleHR1YWxBbHRlcm5h
dGVzID09IG90aGVyLmNvbnRleHR1YWxBbHRlcm5hdGVzCisgICAgICAgICAgICAmJiBwb3NpdGlv
biA9PSBvdGhlci5wb3NpdGlvbgorICAgICAgICAgICAgJiYgY2FwcyA9PSBvdGhlci5jYXBzCisg
ICAgICAgICAgICAmJiBudW1lcmljRmlndXJlID09IG90aGVyLm51bWVyaWNGaWd1cmUKKyAgICAg
ICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IG90aGVyLm51bWVyaWNTcGFjaW5nCisgICAgICAg
ICAgICAmJiBudW1lcmljRnJhY3Rpb24gPT0gb3RoZXIubnVtZXJpY0ZyYWN0aW9uCisgICAgICAg
ICAgICAmJiBudW1lcmljT3JkaW5hbCA9PSBvdGhlci5udW1lcmljT3JkaW5hbAorICAgICAgICAg
ICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IG90aGVyLm51bWVyaWNTbGFzaGVkWmVybworICAg
ICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9PSBvdGhlci5hbHRlcm5hdGVzCisgICAgICAgICAgICAm
JiBlYXN0QXNpYW5WYXJpYW50ID09IG90aGVyLmVhc3RBc2lhblZhcmlhbnQKKyAgICAgICAgICAg
ICYmIGVhc3RBc2lhbldpZHRoID09IG90aGVyLmVhc3RBc2lhbldpZHRoCisgICAgICAgICAgICAm
JiBlYXN0QXNpYW5SdWJ5ID09IG90aGVyLmVhc3RBc2lhblJ1Ynk7CisgICAgfQorCisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgdW5zaWduZWQgdW5pcXVlVmFsdWUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21tb25M
aWdhdHVyZXMpIDw8IDI2CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXNj
cmV0aW9uYXJ5TGlnYXR1cmVzKSA8PCAyNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaGlzdG9yaWNhbExpZ2F0dXJlcykgPDwgMjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnRleHR1YWxBbHRlcm5hdGVzKSA8PCAyMAorICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pIDw8IDE4CisgICAgICAgICAgICB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjYXBzKSA8PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obnVtZXJpY0ZpZ3VyZSkgPDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG51bWVyaWNTcGFjaW5nKSA8PCAxMQorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obnVtZXJpY0ZyYWN0aW9uKSA8PCA5CisgICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihudW1lcmljT3JkaW5hbCkgPDwgOAorICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obnVtZXJpY1NsYXNoZWRaZXJvKSA8PCA3CisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihhbHRlcm5hdGVzKSA8PCA2CisgICAgICAgICAgICB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5WYXJpYW50KSA8PCAzCisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5XaWR0aCkgPDwgMQorICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZWFzdEFzaWFuUnVieSkgPDwgMDsKKyAgICB9CisKKyAgICBG
b250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdh
dHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBo
aXN0b3JpY2FsTGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxB
bHRlcm5hdGVzOworICAgIEZvbnRWYXJpYW50UG9zaXRpb24gcG9zaXRpb247CisgICAgRm9udFZh
cmlhbnRDYXBzIGNhcHM7CisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1
cmU7CisgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBudW1lcmljU3BhY2luZzsKKyAgICBG
b250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBudW1lcmljRnJhY3Rpb247CisgICAgRm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNT
bGFzaGVkWmVybyBudW1lcmljU2xhc2hlZFplcm87CisgICAgRm9udFZhcmlhbnRBbHRlcm5hdGVz
IGFsdGVybmF0ZXM7CisgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZh
cmlhbnQ7CisgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCBlYXN0QXNpYW5XaWR0aDsKKyAg
ICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgZWFzdEFzaWFuUnVieTsKK307CisKK3N0cnVjdCBG
b250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyB7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1
ZXMoCisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlcywKKyAgICAg
ICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcywKKyAgICAgICAg
Rm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlcywKKyAgICAgICAgRm9udFZh
cmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXMpCisgICAgICAgICAgICA6IGNvbW1v
bkxpZ2F0dXJlcyhjb21tb25MaWdhdHVyZXMpCisgICAgICAgICAgICAsIGRpc2NyZXRpb25hcnlM
aWdhdHVyZXMoZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKKyAgICAgICAgICAgICwgaGlzdG9yaWNh
bExpZ2F0dXJlcyhoaXN0b3JpY2FsTGlnYXR1cmVzKQorICAgICAgICAgICAgLCBjb250ZXh0dWFs
QWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0ZXJuYXRlcykKKyAgICB7CisgICAgfQorCisgICAgRm9u
dFZhcmlhbnRMaWdhdHVyZXMgY29tbW9uTGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlz
dG9yaWNhbExpZ2F0dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0
ZXJuYXRlczsKK307CisKK3N0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgeworICAgIEZv
bnRWYXJpYW50TnVtZXJpY1ZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJl
IGZpZ3VyZSwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nLAorICAg
ICAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiwKKyAgICAgICAgRm9udFZh
cmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNT
bGFzaGVkWmVybyBzbGFzaGVkWmVybykKKyAgICAgICAgICAgIDogZmlndXJlKGZpZ3VyZSkKKyAg
ICAgICAgICAgICwgc3BhY2luZyhzcGFjaW5nKQorICAgICAgICAgICAgLCBmcmFjdGlvbihmcmFj
dGlvbikKKyAgICAgICAgICAgICwgb3JkaW5hbChvcmRpbmFsKQorICAgICAgICAgICAgLCBzbGFz
aGVkWmVybyhzbGFzaGVkWmVybykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnROdW1l
cmljRmlndXJlIGZpZ3VyZTsKKyAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7
CisgICAgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb247CisgICAgRm9udFZhcmlh
bnROdW1lcmljT3JkaW5hbCBvcmRpbmFsOworICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRa
ZXJvIHNsYXNoZWRaZXJvOworfTsKKworc3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVz
IHsKKyAgICBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50IHZhcmlhbnQsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lk
dGggd2lkdGgsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBydWJ5KQorICAgICAg
ICAgICAgOiB2YXJpYW50KHZhcmlhbnQpCisgICAgICAgICAgICAsIHdpZHRoKHdpZHRoKQorICAg
ICAgICAgICAgLCBydWJ5KHJ1YnkpCisgICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFyaWFudCB2YXJpYW50OworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lk
dGg7CisgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1Ynk7Cit9OworCitlbnVtIEZvbnRX
aWR0aFZhcmlhbnQgeworICAgIFJlZ3VsYXJXaWR0aCwKKyAgICBIYWxmV2lkdGgsCisgICAgVGhp
cmRXaWR0aCwKKyAgICBRdWFydGVyV2lkdGgsCisgICAgTGFzdEZvbnRXaWR0aFZhcmlhbnQgPSBR
dWFydGVyV2lkdGgKK307CisKK2NvbnN0IHVuc2lnbmVkIEZvbnRXaWR0aFZhcmlhbnRXaWR0aCA9
IDI7CisKK0NPTVBJTEVfQVNTRVJUKCEoTGFzdEZvbnRXaWR0aFZhcmlhbnQgPj4gRm9udFdpZHRo
VmFyaWFudFdpZHRoKSwgRm9udFdpZHRoVmFyaWFudFdpZHRoX2lzX2NvcnJlY3QpOworCitlbnVt
IEZvbnRTbWFsbENhcHMgeworICAgIEZvbnRTbWFsbENhcHNPZmYgPSAwLAorICAgIEZvbnRTbWFs
bENhcHNPbiA9IDEKK307CisKK2VudW0gY2xhc3MgS2VybmluZyB7CisgICAgQXV0bywKKyAgICBO
b3JtYWwsCisgICAgTm9TaGlmdAorfTsKKworZW51bSBjbGFzcyBGb250T3B0aWNhbFNpemluZyB7
CisgICAgRW5hYmxlZCwKKyAgICBEaXNhYmxlZAorfTsKKworLy8gaHR0cHM6Ly93d3cubWljcm9z
b2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9mdmFyLmh0bSNWQVQKK2VudW0gY2xhc3MgRm9udFN0
eWxlQXhpcyB7CisgICAgc2xudCwKKyAgICBpdGFsCit9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9u
dFJlbmRlcmluZ01vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0ZvbnRSZW5kZXJpbmdNb2RlLmgJKHJldmlzaW9uIDIyMjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMzM5ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0UmVuZGVy
aW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2li
aWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwotCi1lbnVtIEZvbnRTbW9vdGhpbmdNb2RlIHsg
QXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlhbGlh
c2VkIH07Ci0KIC8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBzd2l0
Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBkaWZm
ZXJlbnQKIC8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5kIEdE
SSB0ZXh0IG9uIFdpbmRvd3MuCiBlbnVtIGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9ybWFs
LCBBbHRlcm5hdGUgfTsKIAotZW51bSBGb250T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBWZXJ0
aWNhbCB9OwotCi1lbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwgVXBy
aWdodCB9OwotCi0vLyBIZXJlLCAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHJlbGV2YW50
IGFmdGVyIHRoZSBsaW5lIGhhcyBiZWVuIHJlYXJyYW5nZWQgZm9yIGJpZGkuCi0vLyAoIkxlYWRp
bmciIG1lYW5zICJsZWZ0IiBhbmQgIlRyYWlsaW5nIiBtZWFucyAicmlnaHQuIikKLWVudW0gRXhw
YW5zaW9uQmVoYXZpb3JGbGFncyB7Ci0gICAgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gPSAwIDw8
IDAsCi0gICAgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiA9IDEgPDwgMCwKLSAgICBGb3JjZVRyYWls
aW5nRXhwYW5zaW9uID0gMiA8PCAwLAotICAgIFRyYWlsaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwg
MCwKLQotICAgIEZvcmJpZExlYWRpbmdFeHBhbnNpb24gPSAwIDw8IDIsCi0gICAgQWxsb3dMZWFk
aW5nRXhwYW5zaW9uID0gMSA8PCAyLAotICAgIEZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IDIgPDwg
MiwKLSAgICBMZWFkaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMiwKLQotICAgIERlZmF1bHRFeHBh
bnNpb24gPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwK
LX07Ci10eXBlZGVmIHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwotCi1lbnVtIEZvbnRTeW50
aGVzaXNWYWx1ZXMgewotICAgIEZvbnRTeW50aGVzaXNOb25lID0gMHgwLAotICAgIEZvbnRTeW50
aGVzaXNXZWlnaHQgPSAweDEsCi0gICAgRm9udFN5bnRoZXNpc1N0eWxlID0gMHgyLAotICAgIEZv
bnRTeW50aGVzaXNTbWFsbENhcHMgPSAweDQKLX07Ci10eXBlZGVmIHVuc2lnbmVkIEZvbnRTeW50
aGVzaXM7Ci1jb25zdCB1bnNpZ25lZCBGb250U3ludGhlc2lzV2lkdGggPSAzOwotCi1lbnVtIGNs
YXNzIEZvbnRWYXJpYW50TGlnYXR1cmVzIHsKLSAgICBOb3JtYWwsCi0gICAgWWVzLAotICAgIE5v
Ci19OwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50UG9zaXRpb24gewotICAgIE5vcm1hbCwKLSAg
ICBTdWJzY3JpcHQsCi0gICAgU3VwZXJzY3JpcHQKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlh
bnRDYXBzIHsKLSAgICBOb3JtYWwsCi0gICAgU21hbGwsCi0gICAgQWxsU21hbGwsCi0gICAgUGV0
aXRlLAotICAgIEFsbFBldGl0ZSwKLSAgICBVbmljYXNlLAotICAgIFRpdGxpbmcKLX07Ci0KLWVu
dW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIHsKLSAgICBOb3JtYWwsCi0gICAgTGlu
aW5nTnVtYmVycywKLSAgICBPbGRTdHlsZU51bWJlcnMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZh
cmlhbnROdW1lcmljU3BhY2luZyB7Ci0gICAgTm9ybWFsLAotICAgIFByb3BvcnRpb25hbE51bWJl
cnMsCi0gICAgVGFidWxhck51bWJlcnMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1l
cmljRnJhY3Rpb24gewotICAgIE5vcm1hbCwKLSAgICBEaWFnb25hbEZyYWN0aW9ucywKLSAgICBT
dGFja2VkRnJhY3Rpb25zCi19OwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50TnVtZXJpY09yZGlu
YWwgewotICAgIE5vcm1hbCwKLSAgICBZZXMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRO
dW1lcmljU2xhc2hlZFplcm8gewotICAgIE5vcm1hbCwKLSAgICBZZXMKLX07Ci0KLWVudW0gY2xh
c3MgRm9udFZhcmlhbnRBbHRlcm5hdGVzIHsKLSAgICBOb3JtYWwsCi0gICAgSGlzdG9yaWNhbEZv
cm1zCi19OwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB7Ci0gICAg
Tm9ybWFsLAotICAgIEppczc4LAotICAgIEppczgzLAotICAgIEppczkwLAotICAgIEppczA0LAot
ICAgIFNpbXBsaWZpZWQsCi0gICAgVHJhZGl0aW9uYWwKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZh
cmlhbnRFYXN0QXNpYW5XaWR0aCB7Ci0gICAgTm9ybWFsLAotICAgIEZ1bGwsCi0gICAgUHJvcG9y
dGlvbmFsCi19OwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSB7Ci0gICAg
Tm9ybWFsLAotICAgIFllcwotfTsKLQotc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3MgewotICAg
IEZvbnRWYXJpYW50U2V0dGluZ3MoKQotICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhGb250VmFy
aWFudExpZ2F0dXJlczo6Tm9ybWFsKQotICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMo
Rm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBoaXN0b3JpY2FsTGlnYXR1
cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwpCi0gICAgICAgICwgY29udGV4dHVhbEFs
dGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBwb3NpdGlv
bihGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwpCi0gICAgICAgICwgY2FwcyhGb250VmFyaWFu
dENhcHM6Ok5vcm1hbCkKLSAgICAgICAgLCBudW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJp
Y0ZpZ3VyZTo6Tm9ybWFsKQotICAgICAgICAsIG51bWVyaWNTcGFjaW5nKEZvbnRWYXJpYW50TnVt
ZXJpY1NwYWNpbmc6Ok5vcm1hbCkKLSAgICAgICAgLCBudW1lcmljRnJhY3Rpb24oRm9udFZhcmlh
bnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbCkKLSAgICAgICAgLCBudW1lcmljT3JkaW5hbChGb250
VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWwpCi0gICAgICAgICwgbnVtZXJpY1NsYXNoZWRa
ZXJvKEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwpCi0gICAgICAgICwgYWx0
ZXJuYXRlcyhGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBlYXN0QXNp
YW5WYXJpYW50KEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsKQotICAgICAgICAs
IGVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbCkKLSAgICAg
ICAgLCBlYXN0QXNpYW5SdWJ5KEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsKQotICAg
IHsKLSAgICB9Ci0KLSAgICBGb250VmFyaWFudFNldHRpbmdzKAotICAgICAgICBGb250VmFyaWFu
dExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVz
IGRpc2NyZXRpb25hcnlMaWdhdHVyZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhp
c3RvcmljYWxMaWdhdHVyZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1
YWxBbHRlcm5hdGVzLAotICAgICAgICBGb250VmFyaWFudFBvc2l0aW9uIHBvc2l0aW9uLAotICAg
ICAgICBGb250VmFyaWFudENhcHMgY2FwcywKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmln
dXJlIG51bWVyaWNGaWd1cmUsCi0gICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgbnVt
ZXJpY1NwYWNpbmcsCi0gICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIG51bWVyaWNG
cmFjdGlvbiwKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5h
bCwKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gbnVtZXJpY1NsYXNoZWRa
ZXJvLAotICAgICAgICBGb250VmFyaWFudEFsdGVybmF0ZXMgYWx0ZXJuYXRlcywKLSAgICAgICAg
Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQsCi0gICAgICAgIEZv
bnRWYXJpYW50RWFzdEFzaWFuV2lkdGggZWFzdEFzaWFuV2lkdGgsCi0gICAgICAgIEZvbnRWYXJp
YW50RWFzdEFzaWFuUnVieSBlYXN0QXNpYW5SdWJ5KQotICAgICAgICAgICAgOiBjb21tb25MaWdh
dHVyZXMoY29tbW9uTGlnYXR1cmVzKQotICAgICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5TGlnYXR1
cmVzKGRpc2NyZXRpb25hcnlMaWdhdHVyZXMpCi0gICAgICAgICAgICAsIGhpc3RvcmljYWxMaWdh
dHVyZXMoaGlzdG9yaWNhbExpZ2F0dXJlcykKLSAgICAgICAgICAgICwgY29udGV4dHVhbEFsdGVy
bmF0ZXMoY29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgICAgICAsIHBvc2l0aW9uKHBvc2l0
aW9uKQotICAgICAgICAgICAgLCBjYXBzKGNhcHMpCi0gICAgICAgICAgICAsIG51bWVyaWNGaWd1
cmUobnVtZXJpY0ZpZ3VyZSkKLSAgICAgICAgICAgICwgbnVtZXJpY1NwYWNpbmcobnVtZXJpY1Nw
YWNpbmcpCi0gICAgICAgICAgICAsIG51bWVyaWNGcmFjdGlvbihudW1lcmljRnJhY3Rpb24pCi0g
ICAgICAgICAgICAsIG51bWVyaWNPcmRpbmFsKG51bWVyaWNPcmRpbmFsKQotICAgICAgICAgICAg
LCBudW1lcmljU2xhc2hlZFplcm8obnVtZXJpY1NsYXNoZWRaZXJvKQotICAgICAgICAgICAgLCBh
bHRlcm5hdGVzKGFsdGVybmF0ZXMpCi0gICAgICAgICAgICAsIGVhc3RBc2lhblZhcmlhbnQoZWFz
dEFzaWFuVmFyaWFudCkKLSAgICAgICAgICAgICwgZWFzdEFzaWFuV2lkdGgoZWFzdEFzaWFuV2lk
dGgpCi0gICAgICAgICAgICAsIGVhc3RBc2lhblJ1YnkoZWFzdEFzaWFuUnVieSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0FsbE5vcm1hbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gY29tbW9uTGlnYXR1cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwKLSAgICAg
ICAgICAgICYmIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6
Ok5vcm1hbAotICAgICAgICAgICAgJiYgaGlzdG9yaWNhbExpZ2F0dXJlcyA9PSBGb250VmFyaWFu
dExpZ2F0dXJlczo6Tm9ybWFsCi0gICAgICAgICAgICAmJiBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9
PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCi0gICAgICAgICAgICAmJiBwb3NpdGlvbiA9
PSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGNhcHMgPT0gRm9u
dFZhcmlhbnRDYXBzOjpOb3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNGaWd1cmUgPT0gRm9u
dFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFj
aW5nID09IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbAotICAgICAgICAgICAgJiYg
bnVtZXJpY0ZyYWN0aW9uID09IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWwKLSAg
ICAgICAgICAgICYmIG51bWVyaWNPcmRpbmFsID09IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6
Ok5vcm1hbAotICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IEZvbnRWYXJpYW50
TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGFsdGVybmF0ZXMgPT0g
Rm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGVhc3RBc2lhblZh
cmlhbnQgPT0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWwKLSAgICAgICAgICAg
ICYmIGVhc3RBc2lhbldpZHRoID09IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbAot
ICAgICAgICAgICAgJiYgZWFzdEFzaWFuUnVieSA9PSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6
Ok5vcm1hbDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhcmlhbnRT
ZXR0aW5ncyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1
cmVzID09IG90aGVyLmNvbW1vbkxpZ2F0dXJlcwotICAgICAgICAgICAgJiYgZGlzY3JldGlvbmFy
eUxpZ2F0dXJlcyA9PSBvdGhlci5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVzCi0gICAgICAgICAgICAm
JiBoaXN0b3JpY2FsTGlnYXR1cmVzID09IG90aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMKLSAgICAg
ICAgICAgICYmIGNvbnRleHR1YWxBbHRlcm5hdGVzID09IG90aGVyLmNvbnRleHR1YWxBbHRlcm5h
dGVzCi0gICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbgotICAgICAgICAg
ICAgJiYgY2FwcyA9PSBvdGhlci5jYXBzCi0gICAgICAgICAgICAmJiBudW1lcmljRmlndXJlID09
IG90aGVyLm51bWVyaWNGaWd1cmUKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IG90
aGVyLm51bWVyaWNTcGFjaW5nCi0gICAgICAgICAgICAmJiBudW1lcmljRnJhY3Rpb24gPT0gb3Ro
ZXIubnVtZXJpY0ZyYWN0aW9uCi0gICAgICAgICAgICAmJiBudW1lcmljT3JkaW5hbCA9PSBvdGhl
ci5udW1lcmljT3JkaW5hbAotICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IG90
aGVyLm51bWVyaWNTbGFzaGVkWmVybwotICAgICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9PSBvdGhl
ci5hbHRlcm5hdGVzCi0gICAgICAgICAgICAmJiBlYXN0QXNpYW5WYXJpYW50ID09IG90aGVyLmVh
c3RBc2lhblZhcmlhbnQKLSAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IG90aGVyLmVh
c3RBc2lhbldpZHRoCi0gICAgICAgICAgICAmJiBlYXN0QXNpYW5SdWJ5ID09IG90aGVyLmVhc3RB
c2lhblJ1Ynk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRWYXJpYW50
U2V0dGluZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0g
ICAgdW5zaWduZWQgdW5pcXVlVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb21tb25MaWdhdHVyZXMpIDw8IDI2Ci0gICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSA8PCAyNAotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGlzdG9yaWNhbExpZ2F0dXJlcykgPDwg
MjIKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnRleHR1YWxBbHRlcm5h
dGVzKSA8PCAyMAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24p
IDw8IDE4Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXBzKSA8PCAxNQot
ICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZpZ3VyZSkgPDwgMTMK
LSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWVyaWNTcGFjaW5nKSA8PCAx
MQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZyYWN0aW9uKSA8
PCA5Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1lcmljT3JkaW5hbCkg
PDwgOAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY1NsYXNoZWRa
ZXJvKSA8PCA3Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhbHRlcm5hdGVz
KSA8PCA2Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5WYXJp
YW50KSA8PCAzCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5X
aWR0aCkgPDwgMQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWFzdEFzaWFu
UnVieSkgPDwgMDsKLSAgICB9Ci0KLSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdh
dHVyZXM7Ci0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsK
LSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1cmVzOwotICAgIEZvbnRW
YXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzOwotICAgIEZvbnRWYXJpYW50UG9z
aXRpb24gcG9zaXRpb247Ci0gICAgRm9udFZhcmlhbnRDYXBzIGNhcHM7Ci0gICAgRm9udFZhcmlh
bnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmU7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljU3Bh
Y2luZyBudW1lcmljU3BhY2luZzsKLSAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBudW1l
cmljRnJhY3Rpb247Ci0gICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5h
bDsKLSAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBudW1lcmljU2xhc2hlZFplcm87
Ci0gICAgRm9udFZhcmlhbnRBbHRlcm5hdGVzIGFsdGVybmF0ZXM7Ci0gICAgRm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQ7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNp
YW5XaWR0aCBlYXN0QXNpYW5XaWR0aDsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgZWFz
dEFzaWFuUnVieTsKLX07Ci0KLXN0cnVjdCBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyB7Ci0g
ICAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMoCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzIGNvbW1vbkxpZ2F0dXJlcywKLSAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3Jl
dGlvbmFyeUxpZ2F0dXJlcywKLSAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNh
bExpZ2F0dXJlcywKLSAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVy
bmF0ZXMpCi0gICAgICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhjb21tb25MaWdhdHVyZXMpCi0g
ICAgICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoZGlzY3JldGlvbmFyeUxpZ2F0dXJl
cykKLSAgICAgICAgICAgICwgaGlzdG9yaWNhbExpZ2F0dXJlcyhoaXN0b3JpY2FsTGlnYXR1cmVz
KQotICAgICAgICAgICAgLCBjb250ZXh0dWFsQWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0ZXJuYXRl
cykKLSAgICB7Ci0gICAgfQotCi0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9uTGlnYXR1
cmVzOwotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7Ci0g
ICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlczsKLSAgICBGb250VmFy
aWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlczsKLX07Ci0KLXN0cnVjdCBGb250VmFy
aWFudE51bWVyaWNWYWx1ZXMgewotICAgIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcygKLSAgICAg
ICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZSwKLSAgICAgICAgRm9udFZhcmlhbnRO
dW1lcmljU3BhY2luZyBzcGFjaW5nLAotICAgICAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlv
biBmcmFjdGlvbiwKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsLAot
ICAgICAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybykKLSAgICAg
ICAgICAgIDogZmlndXJlKGZpZ3VyZSkKLSAgICAgICAgICAgICwgc3BhY2luZyhzcGFjaW5nKQot
ICAgICAgICAgICAgLCBmcmFjdGlvbihmcmFjdGlvbikKLSAgICAgICAgICAgICwgb3JkaW5hbChv
cmRpbmFsKQotICAgICAgICAgICAgLCBzbGFzaGVkWmVybyhzbGFzaGVkWmVybykKLSAgICB7Ci0g
ICAgfQotCi0gICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZTsKLSAgICBGb250VmFy
aWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rp
b24gZnJhY3Rpb247Ci0gICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsOwotICAg
IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvOwotfTsKLQotc3RydWN0
IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIHsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblZh
bHVlcygKLSAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQsCi0gICAg
ICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGgsCi0gICAgICAgIEZvbnRWYXJpYW50
RWFzdEFzaWFuUnVieSBydWJ5KQotICAgICAgICAgICAgOiB2YXJpYW50KHZhcmlhbnQpCi0gICAg
ICAgICAgICAsIHdpZHRoKHdpZHRoKQotICAgICAgICAgICAgLCBydWJ5KHJ1YnkpCi0gICAgewot
ICAgIH0KLQotICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2YXJpYW50OwotICAgIEZv
bnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGg7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5S
dWJ5IHJ1Ynk7Ci19OwotCi1lbnVtIEZvbnRXaWR0aFZhcmlhbnQgewotICAgIFJlZ3VsYXJXaWR0
aCwKLSAgICBIYWxmV2lkdGgsCi0gICAgVGhpcmRXaWR0aCwKLSAgICBRdWFydGVyV2lkdGgsCi0g
ICAgTGFzdEZvbnRXaWR0aFZhcmlhbnQgPSBRdWFydGVyV2lkdGgKLX07Ci0KLWNvbnN0IHVuc2ln
bmVkIEZvbnRXaWR0aFZhcmlhbnRXaWR0aCA9IDI7Ci0KLUNPTVBJTEVfQVNTRVJUKCEoTGFzdEZv
bnRXaWR0aFZhcmlhbnQgPj4gRm9udFdpZHRoVmFyaWFudFdpZHRoKSwgRm9udFdpZHRoVmFyaWFu
dFdpZHRoX2lzX2NvcnJlY3QpOwotCi1lbnVtIEZvbnRTbWFsbENhcHMgewotICAgIEZvbnRTbWFs
bENhcHNPZmYgPSAwLAotICAgIEZvbnRTbWFsbENhcHNPbiA9IDEKLX07Ci0KLWVudW0gY2xhc3Mg
S2VybmluZyB7Ci0gICAgQXV0bywKLSAgICBOb3JtYWwsCi0gICAgTm9TaGlmdAotfTsKLQotZW51
bSBjbGFzcyBGb250T3B0aWNhbFNpemluZyB7Ci0gICAgRW5hYmxlZCwKLSAgICBEaXNhYmxlZAot
fTsKLQotLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9mdmFy
Lmh0bSNWQVQKLWVudW0gY2xhc3MgRm9udFN0eWxlQXhpcyB7Ci0gICAgc2xudCwKLSAgICBpdGFs
Ci19OwotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJ
KHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE2ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNw
ZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCiBlbnVtIEZv
bnRTbW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2Vk
LCBTdWJwaXhlbEFudGlhbGlhc2VkIH07CiAKLS8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHBy
b3ZpZGUgd2F5cyBvZiBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMg
dGhhdCBtYXkgaGF2ZSBkaWZmZXJlbnQKLS8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNo
IGJldHdlZW4gQ0cgYW5kIEdESSB0ZXh0IG9uIFdpbmRvd3MuCi1lbnVtIGNsYXNzIEZvbnRSZW5k
ZXJpbmdNb2RlIHsgTm9ybWFsLCBBbHRlcm5hdGUgfTsKLQogZW51bSBGb250T3JpZW50YXRpb24g
eyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9OwogCiBlbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50
YXRpb24geyBNaXhlZCwgVXByaWdodCB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322351</attachid>
            <date>2017-10-01 20:34:58 -0700</date>
            <delta_ts>2017-10-18 10:32:22 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-177730-20171001203457.patch</filename>
            <type>text/plain</type>
            <size>62483</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTEwLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIC0gQWRkcyBuZXcgb3B0aW9uIHR5cGUgZm9yIFNldHRpbmdz
LmluLCAnZ2V0dGVyJywgd2hpY2ggYWxsb3dzIHlvdSB0byBzcGVjaWZ5CisgICAgICAgICAgYSBj
dXN0b20gbmFtZSBmb3IgdGhlIHNldHRpbmcncyBnZXR0ZXIuIEZvciBpbnN0YW5jZSwgdGhlIHNl
dHRpbmcgamF2YUVuYWJsZWQKKyAgICAgICAgICBoYXMgYSBjdXN0b20gZ2V0dGVyIG5hbWUsICdp
c0phdmFFbmFibGVkJy4KKyAgICAgICAgLSBBZGRzIHN1cHBvcnQgZm9yIFdURjo6U2Vjb25kcyBh
cyBhIHR5cGUgb2Ygc2V0dGluZy4gVXNlZCBieSBvbmx5IAorICAgICAgICAgIHRpbWVXaXRob3V0
TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzIGF0IHRoZSBtb21lbnQuCisgICAgICAg
IC0gTW92ZXMgbm9uLWdlbmVyYXRlZCBzZXR0aW5ncyBmcm9tIFNldHRpbmdzLmgvY3BwIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBjdXN0b20KKyAgICAgICAgICBhY3Rpb24gd2hlbiBzZXQsIHRvIFNldHRp
bmdzLmluCisKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRl
cm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2Vu
ZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisKKyAgICAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciAnZ2V0dGVyJyBhbmQgdGhlIFNlY29uZHMgdHlwZS4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L0ZvbnRSZW5kZXJpbmdNb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEZsYWdzLmguCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDoK
KyAgICAgICAgCisgICAgICAgICAgICBBZGQgRm9udFJlbmRlcmluZ01vZGUuaC4gTW92ZWQgb3V0
IG9mIFRleHRGbGFncy5oIHRvIGJlIGFjY2Vzc2libGUgYnkKKyAgICAgICAgICAgIHRoZSBzZXR0
aW5ncyBnZW5lcmF0b3IuCisgICAgICAgIAorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldE5lZWRzQWRvYmVGcmFt
ZVJlbG9hZGluZ1F1aXJrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpz
ZXRGb250UmVuZGVyaW5nTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRXZWJGb250c0Fsd2F5
c0ZhbGxCYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnByZWZlck1JTUVUeXBlRm9y
SW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpuZWVk
c0Fjcm9iYXRGcmFtZVJlbG9hZGluZ1F1aXJrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25F
bmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1RvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6d2ViRm9udHNBbHdheXNGYWxsQmFj
ayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFEZXZpY2VJZGVudGlmaWVyU3RvcmFnZURpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bWVkaWFEZXZpY2VJZGVu
dGlmaWVyU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBheUVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OmFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBcHBsZVBheUNh
cGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6aXNGb3JjZVBlbmRpbmdXZWJHTFBvbGljeSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKworICAgICAgICAgICAgTW92ZWQgaGFuZC13cml0dGVu
IHNldHRpbmdzIHRvIGJlIFNldHRpbmdzLmluIGJhc2VkLgorCiAyMDE3LTEwLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1NldHRpbmdzXSBFbnVtcyBzaG91bGQg
bm90IGJlIHBhc3NlZCBieSBjb25zdCByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Nj
cmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRh
dGlvbkZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0
ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQko
cmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRp
bmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0aAogCi1mcm9tIFNldHRp
bmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlQ29uZGl0aW9u
YWxTdHJpbmcsIG1hcFRvSURMVHlwZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nCitmcm9tIFNldHRp
bmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlR2V0dGVyRnVu
Y3Rpb25OYW1lLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1hcFRvSURMVHlwZQogCiAKIGRlZiBn
ZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUob3V0cHV0RGlyZWN0b3J5
LCBzZXR0aW5ncyk6CkBAIC01Myw3ICs1Myw3IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGlu
Z3NJbXBsZW1lbnRhdGkKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAgICAgICAg
ICAgIG91dHB1dEZpbGUud3JpdGUoIiNpZiAiICsgbWFrZUNvbmRpdGlvbmFsU3RyaW5nKHNldHRp
bmcuY29uZGl0aW9uYWwpICsgIlxuIikKIAotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAg
LCBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiKHBhZ2UtPnNldHRpbmdzKCkuIiArIHNldHRpbmcubmFt
ZSArICIoKSlcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRp
bmcubmFtZSArICIocGFnZS0+c2V0dGluZ3MoKS4iICsgbWFrZUdldHRlckZ1bmN0aW9uTmFtZShz
ZXR0aW5nKSArICIoKSlcbiIpCiAKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAg
ICAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNlbmRpZlxuIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkJKHJldmlzaW9uIDIyMjY5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0
aAogCi1mcm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcs
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUsIGluY2x1ZGVGb3JTZXR0aW5nLCB0eXBlSXNBZ2dyZWdh
dGUKK2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywg
bWFrZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFrZUdldHRlckZ1bmN0aW9uTmFtZSwgaW5jbHVkZUZv
clNldHRpbmcsIHR5cGVJc1ZhbHVlVHlwZQogCiAKIGRlZiBnZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZShvdXRwdXREaXJlY3RvcnksIHNldHRpbmdzKToKQEAgLTExMiwyMSArMTEyLDIyIEBAIGRl
ZiBwcmludEluY2x1ZGVzKG91dHB1dEZpbGUsIHNvcnRlZFVuY28KIAogZGVmIHByaW50R2V0dGVy
QW5kU2V0dGVyKG91dHB1dEZpbGUsIHNldHRpbmcpOgogICAgIHNldHRlckZ1bmN0aW9uTmFtZSA9
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykKKyAgICBnZXR0ZXJGdW5jdGlvbk5hbWUg
PSBtYWtlR2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpCiAKICAgICAjIEV4cG9ydCBpcyBvbmx5
IG5lZWRlZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgaW4gdGhlIGhlYWRlci4KICAgICB3ZWJj
b3JlRXhwb3J0ID0gIldFQkNPUkVfRVhQT1JUICIgaWYgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVj
YWxjSW5BbGxGcmFtZXMgZWxzZSAiIgogCi0gICAgaWYgbm90IHR5cGVJc0FnZ3JlZ2F0ZShzZXR0
aW5nKToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0aW5nLnR5cGUgKyAi
ICIgKyBzZXR0aW5nLm5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1l
ICsgIjsgfSBcbiIpCisgICAgaWYgbm90IHR5cGVJc1ZhbHVlVHlwZShzZXR0aW5nKToKKyAgICAg
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0aW5nLnR5cGUgKyAiICIgKyBnZXR0ZXJG
dW5jdGlvbk5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsgIjsg
fSBcbiIpCiAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29yZUV4cG9ydCAr
ICJ2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKCIgKyBzZXR0aW5nLnR5cGUgKyAiICIg
KyBzZXR0aW5nLm5hbWUgKyAiKSIpCiAgICAgZWxzZToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0
ZSgiICAgIGNvbnN0ICIgKyBzZXR0aW5nLnR5cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIigp
IGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH0gXG4iKQorICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIgICAgY29uc3QgIiArIHNldHRpbmcudHlwZSArICImICIgKyBnZXR0
ZXJGdW5jdGlvbk5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsg
IjsgfSBcbiIpCiAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29yZUV4cG9y
dCArICJ2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKGNvbnN0ICIgKyBzZXR0aW5nLnR5
cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIikiKQogCiAgICAgaWYgc2V0dGluZy5zZXROZWVk
c1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIjsgXG4i
KQorICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCI7XG5cbiIpCiAgICAgZWxzZToKLSAgICAgICAg
b3V0cHV0RmlsZS53cml0ZSgiIHsgbV8iICsgc2V0dGluZy5uYW1lICsgIiA9ICIgKyBzZXR0aW5n
Lm5hbWUgKyAiOyB9IFxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiIHsgbV8iICsgc2V0
dGluZy5uYW1lICsgIiA9ICIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9XG5cbiIpCiAKIAogZGVmIHBy
aW50R2V0dGVyc0FuZFNldHRlcnMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRp
bmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3NCeUNvbmRpdGlvbmFsLCBzZXR0
aW5ncyk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2Vu
ZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxlbWVu
dGF0aW9uRmlsZS5weQkocmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0
cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJv
bSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtlU2V0
dGVyRnVuY3Rpb25OYW1lLCB0eXBlSXNBZ2dyZWdhdGUKK2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxp
Y2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFrZVNldHRlckZ1bmN0aW9uTmFtZSwgdHlw
ZUlzVmFsdWVUeXBlCiAKIAogZGVmIGdlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUo
b3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC0xNTUsNyArMTU1LDcgQEAgZGVmIHByaW50
U2V0dGVyQm9keShvdXRwdXRGaWxlLCBzZXR0aW5nKQogCiAgICAgc2V0dGVyRnVuY3Rpb25OYW1l
ID0gbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKQogCi0gICAgaWYgbm90IHR5cGVJc0Fn
Z3JlZ2F0ZShzZXR0aW5nKToKKyAgICBpZiBub3QgdHlwZUlzVmFsdWVUeXBlKHNldHRpbmcpOgog
ICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCJ2b2lkIFNldHRpbmdzR2VuZXJhdGVkOjoiICsgc2V0
dGVyRnVuY3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50eXBlICsgIiAiICsgc2V0dGluZy5uYW1l
ICsgIilcbiIpCiAgICAgZWxzZToKICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgidm9pZCBTZXR0
aW5nc0dlbmVyYXRlZDo6IiArIHNldHRlckZ1bmN0aW9uTmFtZSArICIoY29uc3QgIiArIHNldHRp
bmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHJldmlz
aW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9T
ZXR0aW5ncy5weQkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBjbGFzcyBTZXR0aW5n
OgogICAgICAgICBzZWxmLmNvbmRpdGlvbmFsID0gTm9uZQogICAgICAgICBzZWxmLnNldE5lZWRz
U3R5bGVSZWNhbGNJbkFsbEZyYW1lcyA9IE5vbmUKICAgICAgICAgc2VsZi5pbmNsdWRlID0gTm9u
ZQorICAgICAgICBzZWxmLmdldHRlciA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgog
ICAgICAgICByZXN1bHQgPSBzZWxmLm5hbWUgKyAiIFRZUEU6IiArIHNlbGYudHlwZQpAQCAtNzcs
NiArNzgsOCBAQCBjbGFzcyBTZXR0aW5nOgogICAgICAgICAgICAgcmVzdWx0ICs9ICIgUkVDQUxD
OiIgKyBzZWxmLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcwogICAgICAgICBpZiAoc2Vs
Zi5pbmNsdWRlKToKICAgICAgICAgICAgIHJlc3VsdCArPSAiIElOQ0xVREU6IiArIHNlbGYuaW5j
bHVkZQorICAgICAgICBpZiAoc2VsZi5nZXR0ZXIpOgorICAgICAgICAgICAgcmVzdWx0ICs9ICIg
R0VUVEVSOiIgKyBzZWxmLmdldHRlcgogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIApAQCAtOTEs
NiArOTQsMTIgQEAgZGVmIG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZyk6CiAgICAgcmV0
dXJuICJzZXQiICsgdXBwZXJjYXNlRmlyc3ROKHNldHRpbmcubmFtZSwgMSkKIAogCitkZWYgbWFr
ZUdldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKToKKyAgICBpZiBzZXR0aW5nLmdldHRlcjoKKyAg
ICAgICAgcmV0dXJuIHNldHRpbmcuZ2V0dGVyCisgICAgcmV0dXJuIHNldHRpbmcubmFtZQorCisK
IGRlZiBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwoY29uZGl0aW9uYWwpOgogICAgIHJldHVybiBj
b25kaXRpb25hbC5zcGxpdCgnfCcpWzBdCiAKQEAgLTEzMSwxNSArMTQwLDEwIEBAIGRlZiB0eXBl
SXNQcmltaXRpdmUoc2V0dGluZyk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotZGVmIHR5cGVJc0Fn
Z3JlZ2F0ZShzZXR0aW5nKToKLSAgICAjIFNwZWNpYWwgY2FzZSBzdXBwb3J0ZWQgYWdncmVnYXRl
cyAoZS5nLiBjbGFzc2VzL3N0cnVjdHMpCitkZWYgdHlwZUlzVmFsdWVUeXBlKHNldHRpbmcpOgog
ICAgIGlmIHNldHRpbmcudHlwZSA9PSAnU3RyaW5nJzoKICAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICBpZiBzZXR0aW5nLnR5cGUgPT0gJ0ludFNpemUnOgotICAgICAgICByZXR1cm4gVHJ1ZQogCi0g
ICAgIyBFdmVyeXRoaW5nIGVsc2UgaXMgYW4gZW51bQotICAgICMgRklYTUU6IFNob3VsZCB3ZSBt
YWtlIGl0IGEgcmVxdWlyZW1lbnQgdG8gYW5ub3RhdGUgZW51bXMgb3IgY2xhc3Nlcy9zdHJ1Y3Rz
IGluIHNvbWV3YXk/CiAgICAgcmV0dXJuIEZhbHNlCiAKIApAQCAtMTUyLDEwICsxNTYsMTIgQEAg
ZGVmIGluY2x1ZGVGb3JTZXR0aW5nKHNldHRpbmcpOgogICAgIGlmIHR5cGVJc1ByaW1pdGl2ZShz
ZXR0aW5nKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICMgU3BlY2lhbCBjYXNlIFN0cmlu
ZywgYXMgaXQgZG9lc24ndCBmb2xsb3cgdGhlIHBhdHRlcm4gb2YgYmVpbmcgaW4gYSBmaWxlIHdp
dGggdGhlCisgICAgIyBTcGVjaWFsIGNhc2UgU3RyaW5nIGFuZCBTZWNvbmRzLCBhcyB0aGV5IGRv
ZXNuJ3QgZm9sbG93IHRoZSBwYXR0ZXJuIG9mIGJlaW5nIGluIGEgZmlsZSB3aXRoIHRoZQogICAg
ICMgc2FtZSBuYW1lIGFzIHRoZSBjbGFzcy4KICAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ1N0cmlu
Zyc6CiAgICAgICAgIHJldHVybiAiPHd0Zi90ZXh0L1dURlN0cmluZy5oPiIKKyAgICBpZiBzZXR0
aW5nLnR5cGUgPT0gJ1NlY29uZHMnOgorICAgICAgICByZXR1cm4gIjx3dGYvU2Vjb25kcy5oPiIK
IAogICAgICMgRGVmYXVsdCB0byB1c2luZyB0aGUgdHlwZSBuYW1lIGZvciB0aGUgaW5jbHVkZS4K
ICAgICByZXR1cm4gIlwiIiArIHNldHRpbmcudHlwZSArICIuaFwiIgpAQCAtMTgyLDYgKzE4OCw4
IEBAIGRlZiBwYXJzZUlucHV0KGlucHV0KToKICAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5z
ZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMgPSB2YWx1ZQogICAgICAgICAgICAgICAgIGlm
IChuYW1lID09ICdpbmNsdWRlJyk6CiAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuaW5jbHVk
ZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ2dldHRlcicpOgorICAgICAg
ICAgICAgICAgICAgICBzZXR0aW5nLmdldHRlciA9IHZhbHVlCiAKICAgICAgICAgICAgICMgRklY
TUU6IEFTU0VSVCBzb21ldGhpbmcgYWJvdXQgc2V0dGluZy5pbml0aWFsCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMjY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE5Nyw2ICszMTk3LDcgQEAKIAkJN0MxRjVENTkx
RjIyRkY3MzAwQTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxRjVENTgxRjIyRkY3MzAw
QTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oICovOyB9OwogCQk3QzJCREQz
RDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4
RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdG
OThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyog
SlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkY4QkMyMUY4MUJGNUIwMDMwNUMz
MiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NDQjExRDgxRjgxQjIyMDAwODQ5QUZEIC8qIEZvbnRSZW5kZXJpbmdN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MyRkE2MTExRUE5NUEzOTAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJGQTYw
RjFFQTk1QTMyMDBBMDMxMDggLyogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCAqLzsg
fTsKIAkJN0MyRkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0My
RkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzBEOTgz
MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk3RTFGODE1QUMwMDAyNjgzNTYg
LyogSlNBYm9ydENvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTE2NDAsNiArMTE2NDEsNyBAQAog
CQk3Q0M2OTkzRTE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXROYW1lc3BhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyog
SlNXZWJLaXROYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJLaXROYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDN0UzRDYx
NzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0NDQjExRDgxRjgxQjIyMDAwODQ5QUZEIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZW5kZXJpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBCQTAyMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3Rp
dmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3RpdmVET01D
YWxsYmFja01pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0QwRTJC
NTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
b3J0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5NzgsNiAr
MjM5ODAsNyBAQAogCQkJCTBGREE3QzIwMTg4MzJCQ0MwMEM5NTRCNSAvKiBEYXRlVGltZUZvcm1h
dC5jcHAgKi8sCiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0
LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVl
bmNlcy5oICovLAorCQkJCTdDQ0IxMUQ4MUY4MUIyMjAwMDg0OUFGRCAvKiBGb250UmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5o
ICovLAogCQkJCTg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywK
IAkJCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovLApAQCAtMjYx
NjYsNiArMjYxNjksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNFMjYxNkE0MTg3RTY1QzEw
MDc5NTVGMyAvKiBpb3MgKi8sCiAJCQkJMkQ1MDM2NjYxQkNERERDNDAwRTIwQkIzIC8qIG1hYyAq
LywKKwkJCQk3Q0QwRTJCNjFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmNwcCAq
LywKKwkJCQk3Q0QwRTJCNTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8s
CisJCQkJN0NEMEUyQjcxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5pZGwgKi8s
CisJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKKwkJ
CQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCAqLywKKwkJCQk3Q0Qw
RTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaWRsICovLAogCQkJCTdDNTIyMjk3
MUUxREFFMTYwMDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCiAJCQkJN0M1MjIy
OTgxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCiAJCQkJN0NEMEJB
MDIxQjhGNzlDOTAwNUNFQkJFIC8qIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCAqLywK
QEAgLTI2MTczLDEyICsyNjE4Miw2IEBACiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8q
IEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8q
IEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBB
bGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLywKLQkJCQk3Q0QwRTJCNTFGODBBNDgyMDAxNkE0
Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi8sCi0JCQkJN0NEMEUyQjYxRjgwQTQ4MjAwMTZBNENF
IC8qIEFib3J0Q29udHJvbGxlci5jcHAgKi8sCi0JCQkJN0NEMEUyQjcxRjgwQTQ4MjAwMTZBNENF
IC8qIEFib3J0Q29udHJvbGxlci5pZGwgKi8sCi0JCQkJN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENF
IC8qIEFib3J0U2lnbmFsLmggKi8sCi0JCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZBNENFIC8qIEFi
b3J0U2lnbmFsLmNwcCAqLywKLQkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRT
aWduYWwuaWRsICovLAogCQkJCTMxOTg0N0ZFMUExRDgxNjcwMEExMzMxOCAvKiBBbmltYXRpb25F
dmVudC5jcHAgKi8sCiAJCQkJMzE5ODQ3RkYxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2
ZW50LmggKi8sCiAJCQkJMzE5ODQ4MDAxQTFEODE2NzAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50
LmlkbCAqLywKQEAgLTI3MDczLDYgKzI3MDc2LDggQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAor
CQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFz
dGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1
MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
Nzk1OSw2ICsyNzk2NCw3IEBACiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRN
ZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0NDAgLyog
Rm9udFBsYXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjRGRkMwRDI1RTdGMzAw
RUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMkY4QkMyMUY4MUJG
NUIwMDMwNUMzMiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJB
QjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0
b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgzNzQsNiArMjgzODAsOCBAQAogCQkJCTJE
MEI0QUFCMThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDMjFFNTdEMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwN0FDNDcwMjE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3QzMwRDk4NDFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdDMzBEOTg2MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyog
SlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwNDQwNUExRTUzOTM2MjAw
MzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UxRTVB
RDFFOEREMDlCMDBFRTM3QzkgLyogSlNBZXNDdHJQYXJhbXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MjkzODcsNyArMjkzOTUsNiBAQAogCQkJCTUyRjEwODY2MTYyQjZEQTgwMDlBQzgxRSAvKiBNaXhl
ZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBG
MkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAw
RTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzMwRDk4NDFG
ODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjgxLDcgKzMwMjg4LDYgQEAKIAkJCQlCMjIy
Nzk5NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTk4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyog
U1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzMwRDk4NjFGODE1QUVD
MDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGQjNGODQx
M0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OTlDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDaXJjbGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ2xpcFBh
dGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzI1LDcgKzMwMzMxLDYgQEAKIAkJCQlC
MjIyN0EwNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBMDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBB
Ym9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5
IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTBDMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0EwRjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzgzLDcgKzMwNzg4LDYgQEAKIAkJCQk3N0ExN0E3
ODEyRjI4NjQyMDA0RTAyRjYgLyogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzE2QkRCOEMxRTZFMTUzMDAwREUwRDVBIC8qIFdlYkdQVUxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUUyMTIzQzFFNDkyNEE0MDBDRTEwNDQgLyogV2ViSGVhcEFnZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyNTE4N0I4QUMyMDA4NDNCMTAg
LyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUzMDE4
NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI3Myw2ICszMTI3Nyw4IEBACiAJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQk3Q0QwRTJCOTFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDRDBFMkMwMUY4MEE1NkUwMDE2QTRDRSAvKiBB
Ym9ydFNpZ25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQjkxQTUw
NzI2OTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzN0Y1N0FCQTFBNTA3MjZGMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNTUwLDcgKzMxNTU2LDYgQEAKIAkJCQlDRTI4NDk4
OTFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGQTcxQzZBNTA1NzAwOTdCNTE4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRTZEQURGOTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDMzBEOTg1MUY4MTVBRUMwMDI2ODM1
NiAvKiBKU0Fib3J0U2lnbmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzk5RjlGMUM2QTRD
MTYwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0U3OTlGOTcxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGQUIxQzZBNTA2NjAwOTdC
NTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMTYyMiw3ICszMTYyNyw2IEBACiAJCQkJRTEyMzNGMTAxODVBNDEzMDAw
OERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRDMzMTkxODJEOERERDAwQzA1RDlGIC8qIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzI2NkQ4MTgzMTdBQjQw
MDNGOEIzMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk3QzMwRDk4MzFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4MkIxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENy
eXB0b0FsZ29yaXRobVNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRUUxODI0REM3
OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMTlBQzNGMDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzI0MDMsNiArMzI0MDcsOCBAQAogCQkJCTFDMjFFNTdDMTgzRUQx
RkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEOUZG
NkUxMTkwODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwN0FDNDcwMTE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMzBEOTgzMUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzMwRDk4NTFGODE1QUVDMDAyNjgzNTYgLyogSlNB
Ym9ydFNpZ25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MThGODgwNDBGRjk1N0FFMDA4MEYw
NDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzA0NDA1QzFF
NTM5Mzc5MDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTdFMUU1QUMxRThERDA5QjAwRUUzN0M5IC8qIEpTQWVzQ3RyUGFyYW1zLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzI0ODEsNyArMzI0ODcsNiBAQAogCQkJCUE1ODRGRTNCMTg2NEUyRDgwMDg0
M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Y5
QjZFMDBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc5QUM5MjE4MTA5OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJN0NEMEUyQzAxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUJEMTJCMDNGMEIwMDNBNTgzQSAvKiBKU0NvbnZv
bHZlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODcz
IC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQ0YzQjIxQjZCRTIw
ODAwNjJENEMyIC8qIEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjU3NCw3ICszMjU3OSw2IEBACiAJCQkJODM2QUNFRDIxRUNBQUIxOTAwNEJEMDEyIC8qIEpT
RE9NTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQkJCQ0NCMUY1NjE4MEQwMDVFRkFB
QyAvKiBKU0RPTU1hdHJpeDJESW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzU2NTdDNzFF
Q0FCMTA3MDBDREU3MkQgLyogSlNET01NYXRyaXhJbml0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTdDRDBFMkI5MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODM2QUNFRDUxRUNBQUIxOTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4UmVhZE9u
bHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4MDYwRDc1N0U3RDAwRkRGOTU5IC8qIEpT
RE9NTWltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ4MDgwRDc1N0U3RDAwRkRG
OTU5IC8qIEpTRE9NTWltZVR5cGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyMjI2OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFwLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTE0OCwzMCArMTQ3LDE3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdl
KiBwYWdlKQogICAgICwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OkFs
bG93QWxsU3RvcmFnZSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJl
c2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0
TWluaW11bUludGVydmFsKCkpCi0gICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCi0gICAgLCBt
X2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShmYWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQotICAgICwg
bV9wcmVmZXJNSU1FVHlwZUZvckltYWdlcyhmYWxzZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2lzU2NyaXB0RW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbmVlZHNB
ZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsoZmFsc2UpCiAgICAgLCBtX3VzZXNQYWdlQ2FjaGUoZmFs
c2UpCi0gICAgLCBtX2ZvbnRSZW5kZXJpbmdNb2RlKDApCi0gICAgLCBtX3Nob3dUaWxlZFNjcm9s
bGluZ0luZGljYXRvcihmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9u
ZFBhZ2UoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZChmYWxzZSkKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChm
YWxzZSkKLSNlbmRpZgogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGZhbHNlKQotICAgICwgbV90aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250
cm9scygzX3MpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZT
ZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9oaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1faGlkZGVuUGFnZUNT
U0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKGZhbHNlKQotICAgICwgbV9mb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMoZmFsc2UpCi0gICAgLCBtX3dlYkZvbnRzQWx3YXlzRmFsbEJhY2so
ZmFsc2UpCi0gICAgLCBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KGZhbHNlKQogewogICAgIC8v
IEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUg
dGhlIEF0b21pY1N0cmluZwogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkBA
IC0zNDQsMTYgKzMzMCw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNjcmlwdEVuYWJsZWQoYm9vbCBp
c1MKICNlbmRpZgogfQogCi12b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZChib29sIGlzSmF2
YUVuYWJsZWQpCi17Ci0gICAgbV9pc0phdmFFbmFibGVkID0gaXNKYXZhRW5hYmxlZDsKLX0KLQot
dm9pZCBTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wgaXNKYXZhRW5h
YmxlZEZvckxvY2FsRmlsZXMpCi17Ci0gICAgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA9
IGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOwotfQotCiB2b2lkIFNldHRpbmdzOjpzZXRJbWFn
ZXNFbmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBtX2FyZUltYWdlc0VuYWJs
ZWQgPSBhcmVJbWFnZXNFbmFibGVkOwpAQCAtMzYyLDE2ICszMzgsNiBAQCB2b2lkIFNldHRpbmdz
OjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlCiAgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRQcmVmZXJN
SU1FVHlwZUZvckltYWdlcyhib29sIHByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKQotewotICAgIG1f
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMgPSBwcmVmZXJNSU1FVHlwZUZvckltYWdlczsKLX0KLQot
dm9pZCBTZXR0aW5nczo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCBmb3JjZWQpCi17
Ci0gICAgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA9IGZvcmNlZDsKLX0KLQogdm9pZCBTZXR0
aW5nczo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkKIHsKICAgICBp
ZiAobV9hcmVQbHVnaW5zRW5hYmxlZCA9PSBhcmVQbHVnaW5zRW5hYmxlZCkKQEAgLTM5MiwxMyAr
MzU4LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbgogICAgICAg
ICBtX3BhZ2UtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7CiB9CiAKLS8vIEZJWE1F
OiBUaGlzIHF1aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2NzQ1MzcgYW5kIDUyMTEy
NzEuIFdlIG5lZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKLS8vIGNhbiBmaXggdGhlIGJ1
ZyBmcm9tIHRoZWlyIGVuZC4KLXZvaWQgU2V0dGluZ3M6OnNldE5lZWRzQWRvYmVGcmFtZVJlbG9h
ZGluZ1F1aXJrKGJvb2wgc2hvdWxkTm90UmVsb2FkSUZyYW1lc0ZvclVuY2hhbmdlZFNSQykKLXsK
LSAgICBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrID0gc2hvdWxkTm90UmVsb2FkSUZy
YW1lc0ZvclVuY2hhbmdlZFNSQzsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0TWluaW11bURPTVRp
bWVySW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKIHsKICAgICBhdXRvIG9sZFRpbWVySW50ZXJ2
YWwgPSBzdGQ6OmV4Y2hhbmdlKG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWwsIGludGVydmFsKTsK
QEAgLTQzMywyMCArMzkyLDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0VXNlc1BhZ2VDYWNoZShib29s
IHVzZQogICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5lVG9TaXplTm93KDAsIFBy
dW5pbmdSZWFzb246Ok5vbmUpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRGb250UmVuZGVyaW5n
TW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKQotewotICAgIGlmIChmb250UmVuZGVyaW5nTW9k
ZSgpID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ZvbnRSZW5kZXJpbmdNb2RlID0g
c3RhdGljX2Nhc3Q8aW50Pihtb2RlKTsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2Ut
PnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwotfQotCi1Gb250UmVuZGVyaW5nTW9k
ZSBTZXR0aW5nczo6Zm9udFJlbmRlcmluZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxGb250UmVuZGVyaW5nTW9kZT4obV9mb250UmVuZGVyaW5nTW9kZSk7Ci19Ci0KIHZv
aWQgU2V0dGluZ3M6OnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29sIGRuc1ByZWZldGNoaW5n
RW5hYmxlZCkKIHsKICAgICBpZiAobV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgPT0gZG5zUHJlZmV0
Y2hpbmdFbmFibGVkKQpAQCAtNDU3LDE0ICs0MDIsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRETlNQ
cmVmZXRjaGluZ0VuYWJsZWQoCiAgICAgICAgIG1fcGFnZS0+ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNo
YW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNh
dG9yKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobV9zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0
b3IgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX3Nob3dUaWxl
ZFNjcm9sbGluZ0luZGljYXRvciA9IGVuYWJsZWQ7Ci19Ci0KICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VVNBR0UpCiB2b2lkIFNldHRpbmdzOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9v
bCB2aXNpYmxlKQogewpAQCAtNjUwLDI0ICs1ODcsNiBAQCB2b2lkIFNldHRpbmdzOjpzZXRIaWRk
ZW5QYWdlQ1NTQW5pbWF0aW9uCiAgICAgICAgIG1fcGFnZS0+aGlkZGVuUGFnZUNTU0FuaW1hdGlv
blN1c3BlbnNpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0Rm9udEZh
bGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wgcHJlZmVyUGljdG9ncmFwaHMpCi17Ci0gICAg
aWYgKG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzID09IHByZWZlclBpY3RvZ3JhcGhz
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBo
cyA9IHByZWZlclBpY3RvZ3JhcGhzOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Ci19Ci0KLXZvaWQgU2V0dGluZ3M6OnNl
dFdlYkZvbnRzQWx3YXlzRmFsbEJhY2soYm9vbCBlbmFibGUpCi17Ci0gICAgaWYgKG1fd2ViRm9u
dHNBbHdheXNGYWxsQmFjayA9PSBlbmFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2Vi
Rm9udHNBbHdheXNGYWxsQmFjayA9IGVuYWJsZTsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0TG93
UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCBmbGFnKQogewogICAgIGdMb3dQ
b3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCA9IGZsYWc7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCShyZXZpc2lvbiAyMjI2OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzRGVmYXVsdFZhbHVlcy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzR2VuZXJhdGVkLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4K
QEAgLTg4LDE5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2NyaXB0RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTY3JpcHRFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTY3JpcHRFbmFibGVkKGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRK
YXZhRW5hYmxlZChib29sKTsKLSAgICBib29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzSmF2YUVuYWJsZWQ7IH0KLQotICAgIC8vIFRoaXMgc2V0dGluZ3MgaXMgb25seSBjb25z
dWx0ZWQgaWYgaXNKYXZhRW5hYmxlZCgpIHJldHVybnMgdHJ1ZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sKTsKLSAgICBib29sIGlzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9pc0phdmFFbmFibGVkRm9y
TG9jYWxGaWxlczsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZXNFbmFibGVk
KGJvb2wpOwogICAgIGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJl
SW1hZ2VzRW5hYmxlZDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVmZXJNSU1F
VHlwZUZvckltYWdlcyhib29sKTsKLSAgICBib29sIHByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlczsgfQotCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sKTsKICAgICBib29sIGFyZVBsdWdp
bnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5zRW5hYmxlZDsgfQogCkBAIC0x
MTAsOSArOTksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOwogICAgIGNvbnN0IFVSTCYgdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWly
ayhib29sKTsKLSAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrOyB9Ci0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1pbmltdW1ET01UaW1lckludGVydmFsKFNlY29uZHMpOyAvLyBJ
bml0aWFsaXplZCB0byBET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpLgogICAgIFNl
Y29uZHMgbWluaW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1E
T01UaW1lckludGVydmFsOyB9CiAKQEAgLTEyNiwxMiArMTEyLDYgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwogICAgIGJvb2wgdXNl
c1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VDYWNoZTsgfQotICAgICAgICAK
LSAgICB2b2lkIHNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRSZW5kZXJpbmdNb2RlIG1vZGUpOwot
ICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKCkgY29uc3Q7Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihib29sKTsK
LSAgICBib29sIHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOyB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNB
R0UpCiAgICAgYm9vbCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsgfQpAQCAtMTgzLDExICsxNjMsNiBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VXNlc01vY2tTY3JvbGxB
bmltYXRvcihib29sKTsKICAgICBzdGF0aWMgYm9vbCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCk7
CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxh
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQg
PSBlbmFibGVkOyB9Ci0gICAgYm9vbCBpc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZDsgfQotI2VuZGlmCi0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFn
ZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKQEAgLTE5NywxOCArMTcyLDkgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNob3VsZFJlc3BlY3RQcmlvcml0eUlu
Q1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0
UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKIAotICAgIHZvaWQgc2V0VGltZVdpdGhv
dXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoU2Vjb25kcyB0aW1lKSB7IG1fdGlt
ZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgPSB0aW1lOyB9Ci0gICAg
U2Vjb25kcyB0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJv
bHM7IH0KLQogICAgIGJvb2wgaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJs
ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25T
dXNwZW5zaW9uRW5hYmxlZChib29sKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9u
dEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wpOwotICAgIGJvb2wgZm9udEZhbGxiYWNr
UHJlZmVyc1BpY3RvZ3JhcGhzKCkgY29uc3QgeyByZXR1cm4gbV9mb250RmFsbGJhY2tQcmVmZXJz
UGljdG9ncmFwaHM7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViRm9udHNBbHdh
eXNGYWxsQmFjayhib29sKTsKLSAgICBib29sIHdlYkZvbnRzQWx3YXlzRmFsbEJhY2soKSBjb25z
dCB7IHJldHVybiBtX3dlYkZvbnRzQWx3YXlzRmFsbEJhY2s7IH0KLQogICAgIHN0YXRpYyBib29s
IGxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkgeyByZXR1cm4gZ0xvd1Bvd2Vy
VmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgc2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCk7CiAKQEAg
LTI0MSwxNiArMjA3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUGFz
dGVib2FyZERhdGFFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBnQ3VzdG9tUGFzdGVib2FyZERhdGFF
bmFibGVkID0gZW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOwotCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCi0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGRpcmVjdG9yeTsg
fQotICAgIGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotI2VuZGlmCiAgICAgCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9tZWRpYURldmljZUlk
ZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5n
JiBtZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KICAgICBzdGF0aWMg
Ym9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChib29sKTsKIApAQCAtMjU4LDE3
ICsyMTYsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVk
aWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2wpOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoQVBQTEVfUEFZKQotICAgIGJvb2wgYXBwbGVQYXlFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9hcHBsZVBheUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5RW5hYmxlZChib29s
IGFwcGxlUGF5RW5hYmxlZCkgeyBtX2FwcGxlUGF5RW5hYmxlZCA9IGFwcGxlUGF5RW5hYmxlZDsg
fQotCi0gICAgYm9vbCBhcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQ7IH0KLSAgICB2
b2lkIHNldEFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkKGJvb2wgYXBwbGVQYXlD
YXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQpIHsgbV9hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9z
dXJlQWxsb3dlZCA9IGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkOyB9Ci0jZW5k
aWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3ko
Ym9vbCk7Ci0gICAgYm9vbCBpc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCk7CiAgICAgc3RhdGljIGJv
b2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoKTsKIApAQCAtMjg5LDM2ICsyMzYsMjEgQEAgcHJp
dmF0ZToKICAgICBTZWNvbmRzIG1fbGF5b3V0SW50ZXJ2YWw7CiAgICAgU2Vjb25kcyBtX21pbmlt
dW1ET01UaW1lckludGVydmFsOwogCi0gICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwotICAg
IGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRz
SW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CiAgICAgYm9vbCBtX2FyZUltYWdlc0VuYWJsZWQgOiAx
OwotICAgIGJvb2wgbV9wcmVmZXJNSU1FVHlwZUZvckltYWdlcyA6IDE7CiAgICAgYm9vbCBtX2Fy
ZVBsdWdpbnNFbmFibGVkIDogMTsKICAgICBib29sIG1faXNTY3JpcHRFbmFibGVkIDogMTsKLSAg
ICBib29sIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsgOiAxOwogICAgIGJvb2wgbV91
c2VzUGFnZUNhY2hlIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZvbnRSZW5kZXJpbmdNb2RlIDogMTsK
LSAgICBib29sIG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yIDogMTsKICAgICBib29sIG1f
YmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgOiAxOwogICAgIGJvb2wgbV9kbnNQcmVm
ZXRjaGluZ0VuYWJsZWQgOiAxOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBib29s
IG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwotI2VuZGlmCiAgICAgYm9vbCBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgU2Vjb25kcyBtX3Rp
bWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzOwotCiAgICAgVGltZXIg
bV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwogICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lckZpcmVkKCk7CiAKICAgICBib29sIG1faGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0
bGluZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVu
c2lvbkVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFw
aHMgOiAxOwotICAgIGJvb2wgbV93ZWJGb250c0Fsd2F5c0ZhbGxCYWNrIDogMTsKLQotICAgIGJv
b2wgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA6IDE7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VVNBR0UpCiAgICAgYm9vbCBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSB7IGZhbHNlIH07
CkBAIC0zNTUsMjEgKzI4NywxMSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGdNYW5hZ2VBdWRpb1Nlc3Npb247CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgZ0N1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZDsKIAotI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQotICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0j
ZW5kaWYKLSAgICAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBtX21lZGlh
RGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgc3RhdGljIGJvb2wgZ01vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgZ01lZGlhQ2FwdHVyZVJlcXVp
cmVzU2VjdXJlQ29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAg
ICBib29sIG1fYXBwbGVQYXlFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXBwbGVQYXlD
YXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQgeyB0cnVlIH07Ci0jZW5kaWYKLQogICAgIHN0YXRp
YyBib29sIGdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZDsKICAgICBzdGF0aWMg
Ym9vbCBnUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRFbmFibGVkOwogICAgIHN0YXRpYyBi
b29sIGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgkocmV2aXNpb24gMjIyNjk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBhY2NlbGVyYXRlZENvbXBvc2l0ZWRBbmlt
YXRpb25zRW5hYmxlZCBpCiBzaG93RGVidWdCb3JkZXJzIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRz
U3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiBzaG93UmVwYWludENvdW50ZXIgaW5pdGlhbD1mYWxz
ZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKIHZpc2libGVEZWJ1Z092ZXJsYXlS
ZWdpb25zIHR5cGU9RGVidWdPdmVybGF5UmVnaW9ucywgaW5pdGlhbD0wCitzaG93VGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3IgaW5pdGlhbD1mYWxzZQogCiAjIFRoaXMgaXMgYSBxdWlyayB3ZSBhcmUg
cHJvLWFjdGl2ZWx5IGFwcGx5aW5nIHRvIG9sZCBhcHBsaWNhdGlvbnMuIEl0IGNoYW5nZXMga2V5
Ym9hcmQgZXZlbnQgZGlzcGF0Y2hpbmcsCiAjIG1ha2luZyBrZXlJZGVudGlmaWVyIGF2YWlsYWJs
ZSBvbiBrZXlwcmVzcyBldmVudHMsIG1ha2luZyBjaGFyQ29kZSBhdmFpbGFibGUgb24ga2V5ZG93
bi9rZXl1cCBldmVudHMsCkBAIC0zMDEsNyArMzAyLDMyIEBAIHZpZXdwb3J0Rml0RW5hYmxlZCBp
bml0aWFsPWZhbHNlCiAKIGFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnRBc0ZhbGxiYWNrIGluaXRpYWw9ZmFsc2UKIAorc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQg
aW5pdGlhbD1mYWxzZQorCit0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250
cm9scyB0eXBlPVNlY29uZHMsIGluaXRpYWw9M19zIAorCitmb250RmFsbGJhY2tQcmVmZXJzUGlj
dG9ncmFwaHMgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEK
K3dlYkZvbnRzQWx3YXlzRmFsbEJhY2sgaW5pdGlhbD1mYWxzZQorCiBwYXltZW50UmVxdWVzdEVu
YWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZTUVOVF9SRVFVRVNUCiAKLXN0b3Jh
Z2VBY2Nlc3NBUElFbmFibGVkIGluaXRpYWw9ZmFsc2UKK2FwcGxlUGF5RW5hYmxlZCBpbml0aWFs
PWZhbHNlLCBjb25kaXRpb25hbD1BUFBMRV9QQVkKK2FwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1
cmVBbGxvd2VkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9QVBQTEVfUEFZCisKK2phdmFFbmFi
bGVkIGluaXRpYWw9ZmFsc2UsIGdldHRlcj1pc0phdmFFbmFibGVkCitqYXZhRW5hYmxlZEZvckxv
Y2FsRmlsZXMgaW5pdGlhbD10cnVlLCBnZXR0ZXI9aXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMK
KworZm9udFJlbmRlcmluZ01vZGUgdHlwZT1Gb250UmVuZGVyaW5nTW9kZSwgaW5pdGlhbD1Gb250
UmVuZGVyaW5nTW9kZTo6Tm9ybWFsCisKK3ByZWZlck1JTUVUeXBlRm9ySW1hZ2VzIGluaXRpYWw9
ZmFsc2UKKworZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgaW5pdGlhbD1mYWxzZSwgZ2V0dGVyPWlz
Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kKKworbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSB0eXBl
PVN0cmluZywgY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQorbWVkaWFEZXZpY2VJ
ZGVudGlmaWVyU3RvcmFnZURpcmVjdG9yeSB0eXBlPVN0cmluZywgY29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNCisKKyMgRklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgUmFkYXIg
NDY3NDUzNyBhbmQgNTIxMTI3MS4gV2UgbmVlZCB0byBwaGFzZSBpdCBvdXQgb25jZSBBZG9iZQor
IyBjYW4gZml4IHRoZSBidWcgZnJvbSB0aGVpciBlbmQuCituZWVkc0Fkb2JlRnJhbWVSZWxvYWRp
bmdRdWlyayBpbml0aWFsPWZhbHNlLCBnZXR0ZXI9bmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRpbmdR
dWlyawogCit0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBnZXR0ZXI9
aXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCwgY29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Gb250UmVuZGVyaW5nTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAkocmV2aXNpb24gMjIyNjkxKQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oOjIyMjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVk
LCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OworCitlbnVtIEZvbnRT
bW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBT
dWJwaXhlbEFudGlhbGlhc2VkIH07CisKKy8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3Zp
ZGUgd2F5cyBvZiBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhh
dCBtYXkgaGF2ZSBkaWZmZXJlbnQKKy8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJl
dHdlZW4gQ0cgYW5kIEdESSB0ZXh0IG9uIFdpbmRvd3MuCitlbnVtIGNsYXNzIEZvbnRSZW5kZXJp
bmdNb2RlIHsgTm9ybWFsLCBBbHRlcm5hdGUgfTsKKworZW51bSBGb250T3JpZW50YXRpb24geyBI
b3Jpem9udGFsLCBWZXJ0aWNhbCB9OworCitlbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRp
b24geyBNaXhlZCwgVXByaWdodCB9OworCisvLyBIZXJlLCAiTGVhZGluZyIgYW5kICJUcmFpbGlu
ZyIgYXJlIHJlbGV2YW50IGFmdGVyIHRoZSBsaW5lIGhhcyBiZWVuIHJlYXJyYW5nZWQgZm9yIGJp
ZGkuCisvLyAoIkxlYWRpbmciIG1lYW5zICJsZWZ0IiBhbmQgIlRyYWlsaW5nIiBtZWFucyAicmln
aHQuIikKK2VudW0gRXhwYW5zaW9uQmVoYXZpb3JGbGFncyB7CisgICAgRm9yYmlkVHJhaWxpbmdF
eHBhbnNpb24gPSAwIDw8IDAsCisgICAgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiA9IDEgPDwgMCwK
KyAgICBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uID0gMiA8PCAwLAorICAgIFRyYWlsaW5nRXhwYW5z
aW9uTWFzayA9IDMgPDwgMCwKKworICAgIEZvcmJpZExlYWRpbmdFeHBhbnNpb24gPSAwIDw8IDIs
CisgICAgQWxsb3dMZWFkaW5nRXhwYW5zaW9uID0gMSA8PCAyLAorICAgIEZvcmNlTGVhZGluZ0V4
cGFuc2lvbiA9IDIgPDwgMiwKKyAgICBMZWFkaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMiwKKwor
ICAgIERlZmF1bHRFeHBhbnNpb24gPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbiwKK307Cit0eXBlZGVmIHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwor
CitlbnVtIEZvbnRTeW50aGVzaXNWYWx1ZXMgeworICAgIEZvbnRTeW50aGVzaXNOb25lID0gMHgw
LAorICAgIEZvbnRTeW50aGVzaXNXZWlnaHQgPSAweDEsCisgICAgRm9udFN5bnRoZXNpc1N0eWxl
ID0gMHgyLAorICAgIEZvbnRTeW50aGVzaXNTbWFsbENhcHMgPSAweDQKK307Cit0eXBlZGVmIHVu
c2lnbmVkIEZvbnRTeW50aGVzaXM7Citjb25zdCB1bnNpZ25lZCBGb250U3ludGhlc2lzV2lkdGgg
PSAzOworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50TGlnYXR1cmVzIHsKKyAgICBOb3JtYWwsCisg
ICAgWWVzLAorICAgIE5vCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50UG9zaXRpb24gewor
ICAgIE5vcm1hbCwKKyAgICBTdWJzY3JpcHQsCisgICAgU3VwZXJzY3JpcHQKK307CisKK2VudW0g
Y2xhc3MgRm9udFZhcmlhbnRDYXBzIHsKKyAgICBOb3JtYWwsCisgICAgU21hbGwsCisgICAgQWxs
U21hbGwsCisgICAgUGV0aXRlLAorICAgIEFsbFBldGl0ZSwKKyAgICBVbmljYXNlLAorICAgIFRp
dGxpbmcKK307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIHsKKyAgICBO
b3JtYWwsCisgICAgTGluaW5nTnVtYmVycywKKyAgICBPbGRTdHlsZU51bWJlcnMKK307CisKK2Vu
dW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyB7CisgICAgTm9ybWFsLAorICAgIFBy
b3BvcnRpb25hbE51bWJlcnMsCisgICAgVGFidWxhck51bWJlcnMKK307CisKK2VudW0gY2xhc3Mg
Rm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24geworICAgIE5vcm1hbCwKKyAgICBEaWFnb25hbEZy
YWN0aW9ucywKKyAgICBTdGFja2VkRnJhY3Rpb25zCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJp
YW50TnVtZXJpY09yZGluYWwgeworICAgIE5vcm1hbCwKKyAgICBZZXMKK307CisKK2VudW0gY2xh
c3MgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8geworICAgIE5vcm1hbCwKKyAgICBZZXMK
K307CisKK2VudW0gY2xhc3MgRm9udFZhcmlhbnRBbHRlcm5hdGVzIHsKKyAgICBOb3JtYWwsCisg
ICAgSGlzdG9yaWNhbEZvcm1zCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWFudCB7CisgICAgTm9ybWFsLAorICAgIEppczc4LAorICAgIEppczgzLAorICAgIEppczkw
LAorICAgIEppczA0LAorICAgIFNpbXBsaWZpZWQsCisgICAgVHJhZGl0aW9uYWwKK307CisKK2Vu
dW0gY2xhc3MgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCB7CisgICAgTm9ybWFsLAorICAgIEZ1
bGwsCisgICAgUHJvcG9ydGlvbmFsCit9OworCitlbnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFz
aWFuUnVieSB7CisgICAgTm9ybWFsLAorICAgIFllcworfTsKKworc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3MgeworICAgIEZvbnRWYXJpYW50U2V0dGluZ3MoKQorICAgICAgICA6IGNvbW1vbkxp
Z2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsKQorICAgICAgICAsIGRpc2NyZXRp
b25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKKyAgICAgICAgLCBo
aXN0b3JpY2FsTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwpCisgICAgICAg
ICwgY29udGV4dHVhbEFsdGVybmF0ZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKKyAg
ICAgICAgLCBwb3NpdGlvbihGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwpCisgICAgICAgICwg
Y2FwcyhGb250VmFyaWFudENhcHM6Ok5vcm1hbCkKKyAgICAgICAgLCBudW1lcmljRmlndXJlKEZv
bnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFsKQorICAgICAgICAsIG51bWVyaWNTcGFjaW5n
KEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbCkKKyAgICAgICAgLCBudW1lcmljRnJh
Y3Rpb24oRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb246Ok5vcm1hbCkKKyAgICAgICAgLCBudW1l
cmljT3JkaW5hbChGb250VmFyaWFudE51bWVyaWNPcmRpbmFsOjpOb3JtYWwpCisgICAgICAgICwg
bnVtZXJpY1NsYXNoZWRaZXJvKEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwp
CisgICAgICAgICwgYWx0ZXJuYXRlcyhGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbCkKKyAg
ICAgICAgLCBlYXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9y
bWFsKQorICAgICAgICAsIGVhc3RBc2lhbldpZHRoKEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6
Ok5vcm1hbCkKKyAgICAgICAgLCBlYXN0QXNpYW5SdWJ5KEZvbnRWYXJpYW50RWFzdEFzaWFuUnVi
eTo6Tm9ybWFsKQorICAgIHsKKyAgICB9CisKKyAgICBGb250VmFyaWFudFNldHRpbmdzKAorICAg
ICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXMsCisgICAgICAgIEZvbnRW
YXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJp
YW50TGlnYXR1cmVzIGhpc3RvcmljYWxMaWdhdHVyZXMsCisgICAgICAgIEZvbnRWYXJpYW50TGln
YXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzLAorICAgICAgICBGb250VmFyaWFudFBvc2l0aW9u
IHBvc2l0aW9uLAorICAgICAgICBGb250VmFyaWFudENhcHMgY2FwcywKKyAgICAgICAgRm9udFZh
cmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmUsCisgICAgICAgIEZvbnRWYXJpYW50TnVt
ZXJpY1NwYWNpbmcgbnVtZXJpY1NwYWNpbmcsCisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0Zy
YWN0aW9uIG51bWVyaWNGcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5h
bCBudW1lcmljT3JkaW5hbCwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8g
bnVtZXJpY1NsYXNoZWRaZXJvLAorICAgICAgICBGb250VmFyaWFudEFsdGVybmF0ZXMgYWx0ZXJu
YXRlcywKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlh
bnQsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggZWFzdEFzaWFuV2lkdGgsCisg
ICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBlYXN0QXNpYW5SdWJ5KQorICAgICAgICAg
ICAgOiBjb21tb25MaWdhdHVyZXMoY29tbW9uTGlnYXR1cmVzKQorICAgICAgICAgICAgLCBkaXNj
cmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25hcnlMaWdhdHVyZXMpCisgICAgICAgICAgICAs
IGhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNhbExpZ2F0dXJlcykKKyAgICAgICAgICAgICwg
Y29udGV4dHVhbEFsdGVybmF0ZXMoY29udGV4dHVhbEFsdGVybmF0ZXMpCisgICAgICAgICAgICAs
IHBvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAgICAgLCBjYXBzKGNhcHMpCisgICAgICAgICAg
ICAsIG51bWVyaWNGaWd1cmUobnVtZXJpY0ZpZ3VyZSkKKyAgICAgICAgICAgICwgbnVtZXJpY1Nw
YWNpbmcobnVtZXJpY1NwYWNpbmcpCisgICAgICAgICAgICAsIG51bWVyaWNGcmFjdGlvbihudW1l
cmljRnJhY3Rpb24pCisgICAgICAgICAgICAsIG51bWVyaWNPcmRpbmFsKG51bWVyaWNPcmRpbmFs
KQorICAgICAgICAgICAgLCBudW1lcmljU2xhc2hlZFplcm8obnVtZXJpY1NsYXNoZWRaZXJvKQor
ICAgICAgICAgICAgLCBhbHRlcm5hdGVzKGFsdGVybmF0ZXMpCisgICAgICAgICAgICAsIGVhc3RB
c2lhblZhcmlhbnQoZWFzdEFzaWFuVmFyaWFudCkKKyAgICAgICAgICAgICwgZWFzdEFzaWFuV2lk
dGgoZWFzdEFzaWFuV2lkdGgpCisgICAgICAgICAgICAsIGVhc3RBc2lhblJ1YnkoZWFzdEFzaWFu
UnVieSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0FsbE5vcm1hbCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVz
OjpOb3JtYWwKKyAgICAgICAgICAgICYmIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMgPT0gRm9udFZh
cmlhbnRMaWdhdHVyZXM6Ok5vcm1hbAorICAgICAgICAgICAgJiYgaGlzdG9yaWNhbExpZ2F0dXJl
cyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCisgICAgICAgICAgICAmJiBjb250ZXh0
dWFsQWx0ZXJuYXRlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsCisgICAgICAgICAg
ICAmJiBwb3NpdGlvbiA9PSBGb250VmFyaWFudFBvc2l0aW9uOjpOb3JtYWwKKyAgICAgICAgICAg
ICYmIGNhcHMgPT0gRm9udFZhcmlhbnRDYXBzOjpOb3JtYWwKKyAgICAgICAgICAgICYmIG51bWVy
aWNGaWd1cmUgPT0gRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3JtYWwKKyAgICAgICAgICAg
ICYmIG51bWVyaWNTcGFjaW5nID09IEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbAor
ICAgICAgICAgICAgJiYgbnVtZXJpY0ZyYWN0aW9uID09IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0
aW9uOjpOb3JtYWwKKyAgICAgICAgICAgICYmIG51bWVyaWNPcmRpbmFsID09IEZvbnRWYXJpYW50
TnVtZXJpY09yZGluYWw6Ok5vcm1hbAorICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJv
ID09IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwKKyAgICAgICAgICAgICYm
IGFsdGVybmF0ZXMgPT0gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpOb3JtYWwKKyAgICAgICAgICAg
ICYmIGVhc3RBc2lhblZhcmlhbnQgPT0gRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3Jt
YWwKKyAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IEZvbnRWYXJpYW50RWFzdEFzaWFu
V2lkdGg6Ok5vcm1hbAorICAgICAgICAgICAgJiYgZWFzdEFzaWFuUnVieSA9PSBGb250VmFyaWFu
dEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY29tbW9uTGlnYXR1cmVzID09IG90aGVyLmNvbW1vbkxpZ2F0dXJlcworICAgICAgICAgICAg
JiYgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9PSBvdGhlci5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
CisgICAgICAgICAgICAmJiBoaXN0b3JpY2FsTGlnYXR1cmVzID09IG90aGVyLmhpc3RvcmljYWxM
aWdhdHVyZXMKKyAgICAgICAgICAgICYmIGNvbnRleHR1YWxBbHRlcm5hdGVzID09IG90aGVyLmNv
bnRleHR1YWxBbHRlcm5hdGVzCisgICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3Np
dGlvbgorICAgICAgICAgICAgJiYgY2FwcyA9PSBvdGhlci5jYXBzCisgICAgICAgICAgICAmJiBu
dW1lcmljRmlndXJlID09IG90aGVyLm51bWVyaWNGaWd1cmUKKyAgICAgICAgICAgICYmIG51bWVy
aWNTcGFjaW5nID09IG90aGVyLm51bWVyaWNTcGFjaW5nCisgICAgICAgICAgICAmJiBudW1lcmlj
RnJhY3Rpb24gPT0gb3RoZXIubnVtZXJpY0ZyYWN0aW9uCisgICAgICAgICAgICAmJiBudW1lcmlj
T3JkaW5hbCA9PSBvdGhlci5udW1lcmljT3JkaW5hbAorICAgICAgICAgICAgJiYgbnVtZXJpY1Ns
YXNoZWRaZXJvID09IG90aGVyLm51bWVyaWNTbGFzaGVkWmVybworICAgICAgICAgICAgJiYgYWx0
ZXJuYXRlcyA9PSBvdGhlci5hbHRlcm5hdGVzCisgICAgICAgICAgICAmJiBlYXN0QXNpYW5WYXJp
YW50ID09IG90aGVyLmVhc3RBc2lhblZhcmlhbnQKKyAgICAgICAgICAgICYmIGVhc3RBc2lhbldp
ZHRoID09IG90aGVyLmVhc3RBc2lhbldpZHRoCisgICAgICAgICAgICAmJiBlYXN0QXNpYW5SdWJ5
ID09IG90aGVyLmVhc3RBc2lhblJ1Ynk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQorCisgICAgdW5zaWduZWQgdW5pcXVlVmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21tb25MaWdhdHVyZXMpIDw8IDI2
CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXNjcmV0aW9uYXJ5TGlnYXR1
cmVzKSA8PCAyNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGlzdG9yaWNh
bExpZ2F0dXJlcykgPDwgMjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnRleHR1YWxBbHRlcm5hdGVzKSA8PCAyMAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9zaXRpb24pIDw8IDE4CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjYXBzKSA8PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJp
Y0ZpZ3VyZSkgPDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWVy
aWNTcGFjaW5nKSA8PCAxMQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVt
ZXJpY0ZyYWN0aW9uKSA8PCA5CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
dW1lcmljT3JkaW5hbCkgPDwgOAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bnVtZXJpY1NsYXNoZWRaZXJvKSA8PCA3CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihhbHRlcm5hdGVzKSA8PCA2CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihlYXN0QXNpYW5WYXJpYW50KSA8PCAzCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlYXN0QXNpYW5XaWR0aCkgPDwgMQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZWFzdEFzaWFuUnVieSkgPDwgMDsKKyAgICB9CisKKyAgICBGb250VmFyaWFudExpZ2F0
dXJlcyBjb21tb25MaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlv
bmFyeUxpZ2F0dXJlczsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1
cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzOworICAg
IEZvbnRWYXJpYW50UG9zaXRpb24gcG9zaXRpb247CisgICAgRm9udFZhcmlhbnRDYXBzIGNhcHM7
CisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1cmU7CisgICAgRm9udFZh
cmlhbnROdW1lcmljU3BhY2luZyBudW1lcmljU3BhY2luZzsKKyAgICBGb250VmFyaWFudE51bWVy
aWNGcmFjdGlvbiBudW1lcmljRnJhY3Rpb247CisgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5h
bCBudW1lcmljT3JkaW5hbDsKKyAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBudW1l
cmljU2xhc2hlZFplcm87CisgICAgRm9udFZhcmlhbnRBbHRlcm5hdGVzIGFsdGVybmF0ZXM7Cisg
ICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQ7CisgICAgRm9u
dFZhcmlhbnRFYXN0QXNpYW5XaWR0aCBlYXN0QXNpYW5XaWR0aDsKKyAgICBGb250VmFyaWFudEVh
c3RBc2lhblJ1YnkgZWFzdEFzaWFuUnVieTsKK307CisKK3N0cnVjdCBGb250VmFyaWFudExpZ2F0
dXJlc1ZhbHVlcyB7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMoCisgICAgICAgIEZv
bnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRM
aWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdh
dHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlcywKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMg
Y29udGV4dHVhbEFsdGVybmF0ZXMpCisgICAgICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhjb21t
b25MaWdhdHVyZXMpCisgICAgICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoZGlzY3Jl
dGlvbmFyeUxpZ2F0dXJlcykKKyAgICAgICAgICAgICwgaGlzdG9yaWNhbExpZ2F0dXJlcyhoaXN0
b3JpY2FsTGlnYXR1cmVzKQorICAgICAgICAgICAgLCBjb250ZXh0dWFsQWx0ZXJuYXRlcyhjb250
ZXh0dWFsQWx0ZXJuYXRlcykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnRMaWdhdHVy
ZXMgY29tbW9uTGlnYXR1cmVzOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25h
cnlMaWdhdHVyZXM7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJl
czsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb250ZXh0dWFsQWx0ZXJuYXRlczsKK307CisK
K3N0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgeworICAgIEZvbnRWYXJpYW50TnVtZXJp
Y1ZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZSwKKyAgICAg
ICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBzcGFjaW5nLAorICAgICAgICBGb250VmFyaWFu
dE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiwKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljT3Jk
aW5hbCBvcmRpbmFsLAorICAgICAgICBGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFz
aGVkWmVybykKKyAgICAgICAgICAgIDogZmlndXJlKGZpZ3VyZSkKKyAgICAgICAgICAgICwgc3Bh
Y2luZyhzcGFjaW5nKQorICAgICAgICAgICAgLCBmcmFjdGlvbihmcmFjdGlvbikKKyAgICAgICAg
ICAgICwgb3JkaW5hbChvcmRpbmFsKQorICAgICAgICAgICAgLCBzbGFzaGVkWmVybyhzbGFzaGVk
WmVybykKKyAgICB7CisgICAgfQorCisgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3Vy
ZTsKKyAgICBGb250VmFyaWFudE51bWVyaWNTcGFjaW5nIHNwYWNpbmc7CisgICAgRm9udFZhcmlh
bnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb247CisgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5h
bCBvcmRpbmFsOworICAgIEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJv
OworfTsKKworc3RydWN0IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIHsKKyAgICBGb250VmFy
aWFudEVhc3RBc2lhblZhbHVlcygKKyAgICAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
IHZhcmlhbnQsCisgICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGgsCisgICAg
ICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBydWJ5KQorICAgICAgICAgICAgOiB2YXJpYW50
KHZhcmlhbnQpCisgICAgICAgICAgICAsIHdpZHRoKHdpZHRoKQorICAgICAgICAgICAgLCBydWJ5
KHJ1YnkpCisgICAgeworICAgIH0KKworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2
YXJpYW50OworICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGggd2lkdGg7CisgICAgRm9udFZh
cmlhbnRFYXN0QXNpYW5SdWJ5IHJ1Ynk7Cit9OworCitlbnVtIEZvbnRXaWR0aFZhcmlhbnQgewor
ICAgIFJlZ3VsYXJXaWR0aCwKKyAgICBIYWxmV2lkdGgsCisgICAgVGhpcmRXaWR0aCwKKyAgICBR
dWFydGVyV2lkdGgsCisgICAgTGFzdEZvbnRXaWR0aFZhcmlhbnQgPSBRdWFydGVyV2lkdGgKK307
CisKK2NvbnN0IHVuc2lnbmVkIEZvbnRXaWR0aFZhcmlhbnRXaWR0aCA9IDI7CisKK0NPTVBJTEVf
QVNTRVJUKCEoTGFzdEZvbnRXaWR0aFZhcmlhbnQgPj4gRm9udFdpZHRoVmFyaWFudFdpZHRoKSwg
Rm9udFdpZHRoVmFyaWFudFdpZHRoX2lzX2NvcnJlY3QpOworCitlbnVtIEZvbnRTbWFsbENhcHMg
eworICAgIEZvbnRTbWFsbENhcHNPZmYgPSAwLAorICAgIEZvbnRTbWFsbENhcHNPbiA9IDEKK307
CisKK2VudW0gY2xhc3MgS2VybmluZyB7CisgICAgQXV0bywKKyAgICBOb3JtYWwsCisgICAgTm9T
aGlmdAorfTsKKworZW51bSBjbGFzcyBGb250T3B0aWNhbFNpemluZyB7CisgICAgRW5hYmxlZCwK
KyAgICBEaXNhYmxlZAorfTsKKworLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3Jh
cGh5L290c3BlYy9mdmFyLmh0bSNWQVQKK2VudW0gY2xhc3MgRm9udFN0eWxlQXhpcyB7CisgICAg
c2xudCwKKyAgICBpdGFsCit9OworCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRm9udFJlbmRlcmluZ01vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0ZvbnRSZW5kZXJp
bmdNb2RlLmgJKHJldmlzaW9uIDIyMjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvRm9udFJlbmRlcmluZ01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMzM5ICsyNyw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0UmVuZGVyaW5nTW9kZSB7IEF1dG9U
ZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxlZ2liaWxpdHksIEdlb21ldHJp
Y1ByZWNpc2lvbiB9OwotCi1lbnVtIEZvbnRTbW9vdGhpbmdNb2RlIHsgQXV0b1Ntb290aGluZywg
Tm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlhbGlhc2VkIH07Ci0KIC8vIFRo
aXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBzd2l0Y2hpbmcgYmV0d2VlbiBt
dWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBkaWZmZXJlbnQKIC8vIG1ldHJp
Y3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5kIEdESSB0ZXh0IG9uIFdpbmRv
d3MuCiBlbnVtIGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9ybWFsLCBBbHRlcm5hdGUgfTsK
IAotZW51bSBGb250T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBWZXJ0aWNhbCB9OwotCi1lbnVt
IGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwgVXByaWdodCB9OwotCi0vLyBI
ZXJlLCAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHJlbGV2YW50IGFmdGVyIHRoZSBsaW5l
IGhhcyBiZWVuIHJlYXJyYW5nZWQgZm9yIGJpZGkuCi0vLyAoIkxlYWRpbmciIG1lYW5zICJsZWZ0
IiBhbmQgIlRyYWlsaW5nIiBtZWFucyAicmlnaHQuIikKLWVudW0gRXhwYW5zaW9uQmVoYXZpb3JG
bGFncyB7Ci0gICAgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gPSAwIDw8IDAsCi0gICAgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiA9IDEgPDwgMCwKLSAgICBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uID0g
MiA8PCAwLAotICAgIFRyYWlsaW5nRXhwYW5zaW9uTWFzayA9IDMgPDwgMCwKLQotICAgIEZvcmJp
ZExlYWRpbmdFeHBhbnNpb24gPSAwIDw8IDIsCi0gICAgQWxsb3dMZWFkaW5nRXhwYW5zaW9uID0g
MSA8PCAyLAotICAgIEZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IDIgPDwgMiwKLSAgICBMZWFkaW5n
RXhwYW5zaW9uTWFzayA9IDMgPDwgMiwKLQotICAgIERlZmF1bHRFeHBhbnNpb24gPSBBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwKLX07Ci10eXBlZGVmIHVu
c2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwotCi1lbnVtIEZvbnRTeW50aGVzaXNWYWx1ZXMgewot
ICAgIEZvbnRTeW50aGVzaXNOb25lID0gMHgwLAotICAgIEZvbnRTeW50aGVzaXNXZWlnaHQgPSAw
eDEsCi0gICAgRm9udFN5bnRoZXNpc1N0eWxlID0gMHgyLAotICAgIEZvbnRTeW50aGVzaXNTbWFs
bENhcHMgPSAweDQKLX07Ci10eXBlZGVmIHVuc2lnbmVkIEZvbnRTeW50aGVzaXM7Ci1jb25zdCB1
bnNpZ25lZCBGb250U3ludGhlc2lzV2lkdGggPSAzOwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50
TGlnYXR1cmVzIHsKLSAgICBOb3JtYWwsCi0gICAgWWVzLAotICAgIE5vCi19OwotCi1lbnVtIGNs
YXNzIEZvbnRWYXJpYW50UG9zaXRpb24gewotICAgIE5vcm1hbCwKLSAgICBTdWJzY3JpcHQsCi0g
ICAgU3VwZXJzY3JpcHQKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRDYXBzIHsKLSAgICBO
b3JtYWwsCi0gICAgU21hbGwsCi0gICAgQWxsU21hbGwsCi0gICAgUGV0aXRlLAotICAgIEFsbFBl
dGl0ZSwKLSAgICBVbmljYXNlLAotICAgIFRpdGxpbmcKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZh
cmlhbnROdW1lcmljRmlndXJlIHsKLSAgICBOb3JtYWwsCi0gICAgTGluaW5nTnVtYmVycywKLSAg
ICBPbGRTdHlsZU51bWJlcnMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU3Bh
Y2luZyB7Ci0gICAgTm9ybWFsLAotICAgIFByb3BvcnRpb25hbE51bWJlcnMsCi0gICAgVGFidWxh
ck51bWJlcnMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gewot
ICAgIE5vcm1hbCwKLSAgICBEaWFnb25hbEZyYWN0aW9ucywKLSAgICBTdGFja2VkRnJhY3Rpb25z
Ci19OwotCi1lbnVtIGNsYXNzIEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWwgewotICAgIE5vcm1h
bCwKLSAgICBZZXMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnROdW1lcmljU2xhc2hlZFpl
cm8gewotICAgIE5vcm1hbCwKLSAgICBZZXMKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRB
bHRlcm5hdGVzIHsKLSAgICBOb3JtYWwsCi0gICAgSGlzdG9yaWNhbEZvcm1zCi19OwotCi1lbnVt
IGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB7Ci0gICAgTm9ybWFsLAotICAgIEpp
czc4LAotICAgIEppczgzLAotICAgIEppczkwLAotICAgIEppczA0LAotICAgIFNpbXBsaWZpZWQs
Ci0gICAgVHJhZGl0aW9uYWwKLX07Ci0KLWVudW0gY2xhc3MgRm9udFZhcmlhbnRFYXN0QXNpYW5X
aWR0aCB7Ci0gICAgTm9ybWFsLAotICAgIEZ1bGwsCi0gICAgUHJvcG9ydGlvbmFsCi19OwotCi1l
bnVtIGNsYXNzIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSB7Ci0gICAgTm9ybWFsLAotICAgIFll
cwotfTsKLQotc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3MgewotICAgIEZvbnRWYXJpYW50U2V0
dGluZ3MoKQotICAgICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlczo6
Tm9ybWFsKQotICAgICAgICAsIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdh
dHVyZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBoaXN0b3JpY2FsTGlnYXR1cmVzKEZvbnRWYXJpYW50
TGlnYXR1cmVzOjpOb3JtYWwpCi0gICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoRm9udFZh
cmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBwb3NpdGlvbihGb250VmFyaWFudFBv
c2l0aW9uOjpOb3JtYWwpCi0gICAgICAgICwgY2FwcyhGb250VmFyaWFudENhcHM6Ok5vcm1hbCkK
LSAgICAgICAgLCBudW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6Tm9ybWFs
KQotICAgICAgICAsIG51bWVyaWNTcGFjaW5nKEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6Ok5v
cm1hbCkKLSAgICAgICAgLCBudW1lcmljRnJhY3Rpb24oRm9udFZhcmlhbnROdW1lcmljRnJhY3Rp
b246Ok5vcm1hbCkKLSAgICAgICAgLCBudW1lcmljT3JkaW5hbChGb250VmFyaWFudE51bWVyaWNP
cmRpbmFsOjpOb3JtYWwpCi0gICAgICAgICwgbnVtZXJpY1NsYXNoZWRaZXJvKEZvbnRWYXJpYW50
TnVtZXJpY1NsYXNoZWRaZXJvOjpOb3JtYWwpCi0gICAgICAgICwgYWx0ZXJuYXRlcyhGb250VmFy
aWFudEFsdGVybmF0ZXM6Ok5vcm1hbCkKLSAgICAgICAgLCBlYXN0QXNpYW5WYXJpYW50KEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsKQotICAgICAgICAsIGVhc3RBc2lhbldpZHRo
KEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbCkKLSAgICAgICAgLCBlYXN0QXNpYW5S
dWJ5KEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBGb250VmFyaWFudFNldHRpbmdzKAotICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21t
b25MaWdhdHVyZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlM
aWdhdHVyZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGhpc3RvcmljYWxMaWdhdHVy
ZXMsCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbnRleHR1YWxBbHRlcm5hdGVzLAot
ICAgICAgICBGb250VmFyaWFudFBvc2l0aW9uIHBvc2l0aW9uLAotICAgICAgICBGb250VmFyaWFu
dENhcHMgY2FwcywKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJlIG51bWVyaWNGaWd1
cmUsCi0gICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmcgbnVtZXJpY1NwYWNpbmcsCi0g
ICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uIG51bWVyaWNGcmFjdGlvbiwKLSAgICAg
ICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbCwKLSAgICAgICAgRm9u
dFZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gbnVtZXJpY1NsYXNoZWRaZXJvLAotICAgICAgICBG
b250VmFyaWFudEFsdGVybmF0ZXMgYWx0ZXJuYXRlcywKLSAgICAgICAgRm9udFZhcmlhbnRFYXN0
QXNpYW5WYXJpYW50IGVhc3RBc2lhblZhcmlhbnQsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFz
aWFuV2lkdGggZWFzdEFzaWFuV2lkdGgsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVi
eSBlYXN0QXNpYW5SdWJ5KQotICAgICAgICAgICAgOiBjb21tb25MaWdhdHVyZXMoY29tbW9uTGln
YXR1cmVzKQotICAgICAgICAgICAgLCBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKGRpc2NyZXRpb25h
cnlMaWdhdHVyZXMpCi0gICAgICAgICAgICAsIGhpc3RvcmljYWxMaWdhdHVyZXMoaGlzdG9yaWNh
bExpZ2F0dXJlcykKLSAgICAgICAgICAgICwgY29udGV4dHVhbEFsdGVybmF0ZXMoY29udGV4dHVh
bEFsdGVybmF0ZXMpCi0gICAgICAgICAgICAsIHBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAg
ICAgLCBjYXBzKGNhcHMpCi0gICAgICAgICAgICAsIG51bWVyaWNGaWd1cmUobnVtZXJpY0ZpZ3Vy
ZSkKLSAgICAgICAgICAgICwgbnVtZXJpY1NwYWNpbmcobnVtZXJpY1NwYWNpbmcpCi0gICAgICAg
ICAgICAsIG51bWVyaWNGcmFjdGlvbihudW1lcmljRnJhY3Rpb24pCi0gICAgICAgICAgICAsIG51
bWVyaWNPcmRpbmFsKG51bWVyaWNPcmRpbmFsKQotICAgICAgICAgICAgLCBudW1lcmljU2xhc2hl
ZFplcm8obnVtZXJpY1NsYXNoZWRaZXJvKQotICAgICAgICAgICAgLCBhbHRlcm5hdGVzKGFsdGVy
bmF0ZXMpCi0gICAgICAgICAgICAsIGVhc3RBc2lhblZhcmlhbnQoZWFzdEFzaWFuVmFyaWFudCkK
LSAgICAgICAgICAgICwgZWFzdEFzaWFuV2lkdGgoZWFzdEFzaWFuV2lkdGgpCi0gICAgICAgICAg
ICAsIGVhc3RBc2lhblJ1YnkoZWFzdEFzaWFuUnVieSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0FsbE5vcm1hbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1
cmVzID09IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGRpc2Ny
ZXRpb25hcnlMaWdhdHVyZXMgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbAotICAgICAg
ICAgICAgJiYgaGlzdG9yaWNhbExpZ2F0dXJlcyA9PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm9y
bWFsCi0gICAgICAgICAgICAmJiBjb250ZXh0dWFsQWx0ZXJuYXRlcyA9PSBGb250VmFyaWFudExp
Z2F0dXJlczo6Tm9ybWFsCi0gICAgICAgICAgICAmJiBwb3NpdGlvbiA9PSBGb250VmFyaWFudFBv
c2l0aW9uOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGNhcHMgPT0gRm9udFZhcmlhbnRDYXBzOjpO
b3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNGaWd1cmUgPT0gRm9udFZhcmlhbnROdW1lcmlj
RmlndXJlOjpOb3JtYWwKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IEZvbnRWYXJp
YW50TnVtZXJpY1NwYWNpbmc6Ok5vcm1hbAotICAgICAgICAgICAgJiYgbnVtZXJpY0ZyYWN0aW9u
ID09IEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uOjpOb3JtYWwKLSAgICAgICAgICAgICYmIG51
bWVyaWNPcmRpbmFsID09IEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw6Ok5vcm1hbAotICAgICAg
ICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRa
ZXJvOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGFsdGVybmF0ZXMgPT0gRm9udFZhcmlhbnRBbHRl
cm5hdGVzOjpOb3JtYWwKLSAgICAgICAgICAgICYmIGVhc3RBc2lhblZhcmlhbnQgPT0gRm9udFZh
cmlhbnRFYXN0QXNpYW5WYXJpYW50OjpOb3JtYWwKLSAgICAgICAgICAgICYmIGVhc3RBc2lhbldp
ZHRoID09IEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg6Ok5vcm1hbAotICAgICAgICAgICAgJiYg
ZWFzdEFzaWFuUnVieSA9PSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IG90aGVyLmNv
bW1vbkxpZ2F0dXJlcwotICAgICAgICAgICAgJiYgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9PSBv
dGhlci5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVzCi0gICAgICAgICAgICAmJiBoaXN0b3JpY2FsTGln
YXR1cmVzID09IG90aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMKLSAgICAgICAgICAgICYmIGNvbnRl
eHR1YWxBbHRlcm5hdGVzID09IG90aGVyLmNvbnRleHR1YWxBbHRlcm5hdGVzCi0gICAgICAgICAg
ICAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbgotICAgICAgICAgICAgJiYgY2FwcyA9PSBv
dGhlci5jYXBzCi0gICAgICAgICAgICAmJiBudW1lcmljRmlndXJlID09IG90aGVyLm51bWVyaWNG
aWd1cmUKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IG90aGVyLm51bWVyaWNTcGFj
aW5nCi0gICAgICAgICAgICAmJiBudW1lcmljRnJhY3Rpb24gPT0gb3RoZXIubnVtZXJpY0ZyYWN0
aW9uCi0gICAgICAgICAgICAmJiBudW1lcmljT3JkaW5hbCA9PSBvdGhlci5udW1lcmljT3JkaW5h
bAotICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IG90aGVyLm51bWVyaWNTbGFz
aGVkWmVybwotICAgICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9PSBvdGhlci5hbHRlcm5hdGVzCi0g
ICAgICAgICAgICAmJiBlYXN0QXNpYW5WYXJpYW50ID09IG90aGVyLmVhc3RBc2lhblZhcmlhbnQK
LSAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IG90aGVyLmVhc3RBc2lhbldpZHRoCi0g
ICAgICAgICAgICAmJiBlYXN0QXNpYW5SdWJ5ID09IG90aGVyLmVhc3RBc2lhblJ1Ynk7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgdW5zaWduZWQgdW5p
cXVlVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb21tb25MaWdhdHVyZXMpIDw8IDI2Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKSA8PCAyNAotICAgICAgICAgICAgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaGlzdG9yaWNhbExpZ2F0dXJlcykgPDwgMjIKLSAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnRleHR1YWxBbHRlcm5hdGVzKSA8PCAyMAotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pIDw8IDE4Ci0gICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXBzKSA8PCAxNQotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZpZ3VyZSkgPDwgMTMKLSAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWVyaWNTcGFjaW5nKSA8PCAxMQotICAgICAgICAgICAg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY0ZyYWN0aW9uKSA8PCA5Ci0gICAgICAgICAg
ICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1lcmljT3JkaW5hbCkgPDwgOAotICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY1NsYXNoZWRaZXJvKSA8PCA3Ci0gICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhbHRlcm5hdGVzKSA8PCA2Ci0gICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5WYXJpYW50KSA8PCAzCi0gICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlYXN0QXNpYW5XaWR0aCkgPDwgMQotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWFzdEFzaWFuUnVieSkgPDwgMDsKLSAg
ICB9Ci0KLSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBjb21tb25MaWdhdHVyZXM7Ci0gICAgRm9u
dFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKLSAgICBGb250VmFyaWFu
dExpZ2F0dXJlcyBoaXN0b3JpY2FsTGlnYXR1cmVzOwotICAgIEZvbnRWYXJpYW50TGlnYXR1cmVz
IGNvbnRleHR1YWxBbHRlcm5hdGVzOwotICAgIEZvbnRWYXJpYW50UG9zaXRpb24gcG9zaXRpb247
Ci0gICAgRm9udFZhcmlhbnRDYXBzIGNhcHM7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljRmlndXJl
IG51bWVyaWNGaWd1cmU7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBudW1lcmljU3Bh
Y2luZzsKLSAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBudW1lcmljRnJhY3Rpb247Ci0g
ICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBudW1lcmljT3JkaW5hbDsKLSAgICBGb250VmFy
aWFudE51bWVyaWNTbGFzaGVkWmVybyBudW1lcmljU2xhc2hlZFplcm87Ci0gICAgRm9udFZhcmlh
bnRBbHRlcm5hdGVzIGFsdGVybmF0ZXM7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
IGVhc3RBc2lhblZhcmlhbnQ7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aCBlYXN0QXNp
YW5XaWR0aDsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblJ1YnkgZWFzdEFzaWFuUnVieTsKLX07
Ci0KLXN0cnVjdCBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyB7Ci0gICAgRm9udFZhcmlhbnRM
aWdhdHVyZXNWYWx1ZXMoCi0gICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzIGNvbW1vbkxpZ2F0
dXJlcywKLSAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgZGlzY3JldGlvbmFyeUxpZ2F0dXJl
cywKLSAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlcywKLSAg
ICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAg
ICAgICA6IGNvbW1vbkxpZ2F0dXJlcyhjb21tb25MaWdhdHVyZXMpCi0gICAgICAgICAgICAsIGRp
c2NyZXRpb25hcnlMaWdhdHVyZXMoZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKLSAgICAgICAgICAg
ICwgaGlzdG9yaWNhbExpZ2F0dXJlcyhoaXN0b3JpY2FsTGlnYXR1cmVzKQotICAgICAgICAgICAg
LCBjb250ZXh0dWFsQWx0ZXJuYXRlcyhjb250ZXh0dWFsQWx0ZXJuYXRlcykKLSAgICB7Ci0gICAg
fQotCi0gICAgRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbW9uTGlnYXR1cmVzOwotICAgIEZvbnRW
YXJpYW50TGlnYXR1cmVzIGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7Ci0gICAgRm9udFZhcmlhbnRM
aWdhdHVyZXMgaGlzdG9yaWNhbExpZ2F0dXJlczsKLSAgICBGb250VmFyaWFudExpZ2F0dXJlcyBj
b250ZXh0dWFsQWx0ZXJuYXRlczsKLX07Ci0KLXN0cnVjdCBGb250VmFyaWFudE51bWVyaWNWYWx1
ZXMgewotICAgIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcygKLSAgICAgICAgRm9udFZhcmlhbnRO
dW1lcmljRmlndXJlIGZpZ3VyZSwKLSAgICAgICAgRm9udFZhcmlhbnROdW1lcmljU3BhY2luZyBz
cGFjaW5nLAotICAgICAgICBGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbiBmcmFjdGlvbiwKLSAg
ICAgICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsLAotICAgICAgICBGb250VmFy
aWFudE51bWVyaWNTbGFzaGVkWmVybyBzbGFzaGVkWmVybykKLSAgICAgICAgICAgIDogZmlndXJl
KGZpZ3VyZSkKLSAgICAgICAgICAgICwgc3BhY2luZyhzcGFjaW5nKQotICAgICAgICAgICAgLCBm
cmFjdGlvbihmcmFjdGlvbikKLSAgICAgICAgICAgICwgb3JkaW5hbChvcmRpbmFsKQotICAgICAg
ICAgICAgLCBzbGFzaGVkWmVybyhzbGFzaGVkWmVybykKLSAgICB7Ci0gICAgfQotCi0gICAgRm9u
dFZhcmlhbnROdW1lcmljRmlndXJlIGZpZ3VyZTsKLSAgICBGb250VmFyaWFudE51bWVyaWNTcGFj
aW5nIHNwYWNpbmc7Ci0gICAgRm9udFZhcmlhbnROdW1lcmljRnJhY3Rpb24gZnJhY3Rpb247Ci0g
ICAgRm9udFZhcmlhbnROdW1lcmljT3JkaW5hbCBvcmRpbmFsOwotICAgIEZvbnRWYXJpYW50TnVt
ZXJpY1NsYXNoZWRaZXJvIHNsYXNoZWRaZXJvOwotfTsKLQotc3RydWN0IEZvbnRWYXJpYW50RWFz
dEFzaWFuVmFsdWVzIHsKLSAgICBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcygKLSAgICAgICAg
Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlhbnQsCi0gICAgICAgIEZvbnRWYXJpYW50
RWFzdEFzaWFuV2lkdGggd2lkdGgsCi0gICAgICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBy
dWJ5KQotICAgICAgICAgICAgOiB2YXJpYW50KHZhcmlhbnQpCi0gICAgICAgICAgICAsIHdpZHRo
KHdpZHRoKQotICAgICAgICAgICAgLCBydWJ5KHJ1YnkpCi0gICAgewotICAgIH0KLQotICAgIEZv
bnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudCB2YXJpYW50OwotICAgIEZvbnRWYXJpYW50RWFzdEFz
aWFuV2lkdGggd2lkdGg7Ci0gICAgRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5IHJ1Ynk7Ci19Owot
Ci1lbnVtIEZvbnRXaWR0aFZhcmlhbnQgewotICAgIFJlZ3VsYXJXaWR0aCwKLSAgICBIYWxmV2lk
dGgsCi0gICAgVGhpcmRXaWR0aCwKLSAgICBRdWFydGVyV2lkdGgsCi0gICAgTGFzdEZvbnRXaWR0
aFZhcmlhbnQgPSBRdWFydGVyV2lkdGgKLX07Ci0KLWNvbnN0IHVuc2lnbmVkIEZvbnRXaWR0aFZh
cmlhbnRXaWR0aCA9IDI7Ci0KLUNPTVBJTEVfQVNTRVJUKCEoTGFzdEZvbnRXaWR0aFZhcmlhbnQg
Pj4gRm9udFdpZHRoVmFyaWFudFdpZHRoKSwgRm9udFdpZHRoVmFyaWFudFdpZHRoX2lzX2NvcnJl
Y3QpOwotCi1lbnVtIEZvbnRTbWFsbENhcHMgewotICAgIEZvbnRTbWFsbENhcHNPZmYgPSAwLAot
ICAgIEZvbnRTbWFsbENhcHNPbiA9IDEKLX07Ci0KLWVudW0gY2xhc3MgS2VybmluZyB7Ci0gICAg
QXV0bywKLSAgICBOb3JtYWwsCi0gICAgTm9TaGlmdAotfTsKLQotZW51bSBjbGFzcyBGb250T3B0
aWNhbFNpemluZyB7Ci0gICAgRW5hYmxlZCwKLSAgICBEaXNhYmxlZAotfTsKLQotLy8gaHR0cHM6
Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9mdmFyLmh0bSNWQVQKLWVudW0g
Y2xhc3MgRm9udFN0eWxlQXhpcyB7Ci0gICAgc2xudCwKLSAgICBpdGFsCi19OwotCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHJldmlzaW9uIDIyMjY5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE2ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZv
bnRSZW5kZXJpbmdNb2RlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBUZXh0UmVu
ZGVyaW5nTW9kZSB7IEF1dG9UZXh0UmVuZGVyaW5nLCBPcHRpbWl6ZVNwZWVkLCBPcHRpbWl6ZUxl
Z2liaWxpdHksIEdlb21ldHJpY1ByZWNpc2lvbiB9OwogCiBlbnVtIEZvbnRTbW9vdGhpbmdNb2Rl
IHsgQXV0b1Ntb290aGluZywgTm9TbW9vdGhpbmcsIEFudGlhbGlhc2VkLCBTdWJwaXhlbEFudGlh
bGlhc2VkIH07CiAKLS8vIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgd2F5cyBvZiBz
d2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSByZW5kZXJpbmcgbW9kZXMgdGhhdCBtYXkgaGF2ZSBk
aWZmZXJlbnQKLS8vIG1ldHJpY3MuIEl0IGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gQ0cgYW5k
IEdESSB0ZXh0IG9uIFdpbmRvd3MuCi1lbnVtIGNsYXNzIEZvbnRSZW5kZXJpbmdNb2RlIHsgTm9y
bWFsLCBBbHRlcm5hdGUgfTsKLQogZW51bSBGb250T3JpZW50YXRpb24geyBIb3Jpem9udGFsLCBW
ZXJ0aWNhbCB9OwogCiBlbnVtIGNsYXNzIE5vbkNKS0dseXBoT3JpZW50YXRpb24geyBNaXhlZCwg
VXByaWdodCB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324131</attachid>
            <date>2017-10-18 10:36:15 -0700</date>
            <delta_ts>2017-10-18 10:51:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177730-20171018103614.patch</filename>
            <type>text/plain</type>
            <size>18973</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzQ3NjMzNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisgICAgICAgIChTZXR0
aW5nLl9faW5pdF9fKToKKyAgICAgICAgKFNldHRpbmcuX19zdHJfXyk6CisgICAgICAgIChTZXR0
aW5nLmdldHRlckZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChwYXJzZUlucHV0KToKKworICAgICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlICdnZXR0ZXInIG9wdGlvbi4KKworICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisgICAgICAgIAorICAgICAgICAgICAgTWlncmFnZSBz
aW1wbGUgc2V0dGluZ3MgZnJvbSBTZXR0aW5nc0Jhc2UgdG8gaGVyZS4KKyAgICAgICAgCisgICAg
ICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NC
YXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRK
YXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXROZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlyayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jh
c2U6OnNldEZvbnRSZW5kZXJpbmdNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzQmFzZTo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRGb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzSmF2YUVuYWJsZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjppc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
c0Jhc2U6OnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRpbmdRdWlyayBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNob3dUaWxl
ZFNjcm9sbGluZ0luZGljYXRvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFRp
bWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3NCYXNlOjpmb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjptZWRpYURldmljZUlkZW50
aWZpZXJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0QXBwbGVQYXlFbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3Vy
ZUFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNl
OjpzZXRBcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgICAgIFJlbW92ZSBzaW1wbGUgc2V0dGlu
Z3MuCisKIDIwMTctMTAtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbU2V0dGluZ3NdIE1pc2NlbGxhbmVvdXMgY2xlYW51cCBvZiB0aGUgc2V0dGluZ3MgZ2VuZXJh
dGlvbiBzY3JpcHRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MvU2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5l
cmF0ZVNldHRpbmdzL1NldHRpbmdzLnB5CShyZXZpc2lvbiAyMjM2MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgU2V0dGluZzoKICAgICAgICAgc2VsZi5pbml0aWFsID0g
Tm9uZQogICAgICAgICBzZWxmLmNvbmRpdGlvbmFsID0gTm9uZQogICAgICAgICBzZWxmLnNldE5l
ZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcyA9IE5vbmUKKyAgICAgICAgc2VsZi5nZXR0ZXIgPSBO
b25lCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5uYW1l
ICsgIiBUWVBFOiIgKyBzZWxmLnR5cGUKQEAgLTc0LDYgKzc1LDggQEAgY2xhc3MgU2V0dGluZzoK
ICAgICAgICAgICAgIHJlc3VsdCArPSAiIENPTkQ6IiArIHNlbGYuY29uZGl0aW9uYWwKICAgICAg
ICAgaWYgKHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzKToKICAgICAgICAgICAg
IHJlc3VsdCArPSAiIFJFQ0FMQzoiICsgc2VsZi5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFt
ZXMKKyAgICAgICAgaWYgKHNlbGYuZ2V0dGVyKToKKyAgICAgICAgICAgIHJlc3VsdCArPSAiIEdF
VFRFUjoiICsgc2VsZi5nZXR0ZXIKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGhh
c0NvbXBsZXhTZXR0ZXIoc2VsZik6CkBAIC05Myw2ICs5Niw4IEBAIGNsYXNzIFNldHRpbmc6CiAg
ICAgICAgIHJldHVybiAic2V0IiArIHVwcGVyY2FzZUZpcnN0TihzZWxmLm5hbWUsIDEpCiAKICAg
ICBkZWYgZ2V0dGVyRnVuY3Rpb25OYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmdldHRlcjoK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldHRlcgogICAgICAgICByZXR1cm4gc2VsZi5uYW1l
CiAKICAgICBkZWYgaWRsVHlwZShzZWxmKToKQEAgLTE0NSw2ICsxNTAsOCBAQCBkZWYgcGFyc2VJ
bnB1dChpbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuY29uZGl0aW9uYWwgPSB2
YWx1ZQogICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICdzZXROZWVkc1N0eWxlUmVjYWxjSW5B
bGxGcmFtZXMnKToKICAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVj
YWxjSW5BbGxGcmFtZXMgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICdnZXR0
ZXInKToKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5nZXR0ZXIgPSB2YWx1ZQogCiAgICAg
ICAgICAgICAjIEZJWE1FOiBBU1NFUlQgc29tZXRoaW5nIGFib3V0IHNldHRpbmcuaW5pdGlhbAog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9uIDIyMzYxMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcg
QEAgYWNjZWxlcmF0ZWRDb21wb3NpdGVkQW5pbWF0aW9uc0VuYWJsZWQgaQogc2hvd0RlYnVnQm9y
ZGVycyBpbml0aWFsPWZhbHNlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogc2hv
d1JlcGFpbnRDb3VudGVyIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZy
YW1lcz0xCiB2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyB0eXBlPURlYnVnT3ZlcmxheVJlZ2lv
bnMsIGluaXRpYWw9MAorc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yIGluaXRpYWw9ZmFsc2UK
IAogIyBUaGlzIGlzIGEgcXVpcmsgd2UgYXJlIHByby1hY3RpdmVseSBhcHBseWluZyB0byBvbGQg
YXBwbGljYXRpb25zLiBJdCBjaGFuZ2VzIGtleWJvYXJkIGV2ZW50IGRpc3BhdGNoaW5nLAogIyBt
YWtpbmcga2V5SWRlbnRpZmllciBhdmFpbGFibGUgb24ga2V5cHJlc3MgZXZlbnRzLCBtYWtpbmcg
Y2hhckNvZGUgYXZhaWxhYmxlIG9uIGtleWRvd24va2V5dXAgZXZlbnRzLApAQCAtMzAzLDEwICsz
MDQsMzMgQEAgdmlld3BvcnRGaXRFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAogYWxsb3dNZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgaW5pdGlhbD1mYWxz
ZQogCi1wYXltZW50UmVxdWVzdEVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZ
TUVOVF9SRVFVRVNUCitzdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCBpbml0aWFsPWZhbHNlCisKK3Rp
bWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzIHR5cGU9U2Vjb25kcywg
aW5pdGlhbD0zX3MgCisKK2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyBpbml0aWFsPWZh
bHNlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogCiBmb250TG9hZFRpbWluZ092
ZXJyaWRlIHR5cGU9Rm9udExvYWRUaW1pbmdPdmVycmlkZSwgaW5pdGlhbD1Gb250TG9hZFRpbWlu
Z092ZXJyaWRlOjpOb25lCiBzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zIGluaXRpYWw9
ZmFsc2UKIAotc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgaW5pdGlhbD1mYWxzZQorcGF5bWVudFJl
cXVlc3RFbmFibGVkIGluaXRpYWw9ZmFsc2UsIGNvbmRpdGlvbmFsPVBBWU1FTlRfUkVRVUVTVAor
YXBwbGVQYXlFbmFibGVkIGluaXRpYWw9ZmFsc2UsIGNvbmRpdGlvbmFsPUFQUExFX1BBWQorYXBw
bGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQgaW5pdGlhbD10cnVlLCBjb25kaXRpb25h
bD1BUFBMRV9QQVkKKworamF2YUVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgZ2V0dGVyPWlzSmF2YUVu
YWJsZWQKK2phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyBpbml0aWFsPXRydWUsIGdldHRlcj1pc0ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcworCitmb250UmVuZGVyaW5nTW9kZSB0eXBlPUZvbnRSZW5k
ZXJpbmdNb2RlLCBpbml0aWFsPUZvbnRSZW5kZXJpbmdNb2RlOjpOb3JtYWwKKworcHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMgaW5pdGlhbD1mYWxzZQorCitmb3JjZVBlbmRpbmdXZWJHTFBvbGljeSBp
bml0aWFsPWZhbHNlLCBnZXR0ZXI9aXNGb3JjZVBlbmRpbmdXZWJHTFBvbGljeQorCittZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5IHR5cGU9U3RyaW5nLCBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQ
VEVEX01FRElBCittZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5IHR5cGU9U3Ry
aW5nLCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KKworIyBGSVhNRTogVGhpcyBxdWlyayBpcyBu
ZWVkZWQgYmVjYXVzZSBvZiBSYWRhciA0Njc0NTM3IGFuZCA1MjExMjcxLiBXZSBuZWVkIHRvIHBo
YXNlIGl0IG91dCBvbmNlIEFkb2JlCisjIGNhbiBmaXggdGhlIGJ1ZyBmcm9tIHRoZWlyIGVuZC4K
K25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrIGluaXRpYWw9ZmFsc2UsIGdldHRlcj1uZWVk
c0Fjcm9iYXRGcmFtZVJlbG9hZGluZ1F1aXJrCiAKK3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVk
IGluaXRpYWw9ZmFsc2UsIGdldHRlcj1pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkLCBjb25k
aXRpb25hbD1UT1VDSF9FVkVOVFMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5j
cHAJKHJldmlzaW9uIDIyMzYxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDI4ICsxNDYsMTggQEAgU2V0dGluZ3NCYXNlOjpT
ZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6
Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVy
dmFsKGxheW91dFNjaGVkdWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRl
cnZhbChET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQotICAgICwgbV9pc0phdmFF
bmFibGVkKGZhbHNlKQotICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyh0cnVlKQog
ICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX2FyZUltYWdl
c0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoZmFsc2UpCiAg
ICAgLCBtX2FyZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1NjcmlwdEVuYWJsZWQo
ZmFsc2UpCi0gICAgLCBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGZhbHNlKQogICAg
ICwgbV91c2VzUGFnZUNhY2hlKGZhbHNlKQotICAgICwgbV9mb250UmVuZGVyaW5nTW9kZSgwKQot
ICAgICwgbV9zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX2JhY2tn
cm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKGZhbHNlKQogICAgICwgbV9kbnNQcmVmZXRjaGlu
Z0VuYWJsZWQoZmFsc2UpCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIG1fdG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1fc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lcigqdGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
ckZpcmVkKQogICAgICwgbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKGZhbHNl
KQotICAgICwgbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMoZmFsc2UpCi0gICAgLCBt
X2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5v
dCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmlu
ZwogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkBAIC0zMzQsMTYgKzMyNCw2
IEBAIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRTY3JpcHRFbmFibGVkKGJvb2wKICNlbmRpZgogfQog
Ci12b2lkIFNldHRpbmdzQmFzZTo6c2V0SmF2YUVuYWJsZWQoYm9vbCBpc0phdmFFbmFibGVkKQot
ewotICAgIG1faXNKYXZhRW5hYmxlZCA9IGlzSmF2YUVuYWJsZWQ7Ci19Ci0KLXZvaWQgU2V0dGlu
Z3NCYXNlOjpzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0phdmFFbmFibGVkRm9y
TG9jYWxGaWxlcykKLXsKLSAgICBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzID0gaXNKYXZh
RW5hYmxlZEZvckxvY2FsRmlsZXM7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZXNF
bmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBtX2FyZUltYWdlc0VuYWJsZWQg
PSBhcmVJbWFnZXNFbmFibGVkOwpAQCAtMzUyLDE2ICszMzIsNiBAQCB2b2lkIFNldHRpbmdzQmFz
ZTo6c2V0SW1hZ2VzRW5hYmxlZChib29sCiAgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1Rp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0UHJlZmVy
TUlNRVR5cGVGb3JJbWFnZXMoYm9vbCBwcmVmZXJNSU1FVHlwZUZvckltYWdlcykKLXsKLSAgICBt
X3ByZWZlck1JTUVUeXBlRm9ySW1hZ2VzID0gcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXM7Ci19Ci0K
LXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGb3JjZVBlbmRpbmdXZWJHTFBvbGljeShib29sIGZvcmNl
ZCkKLXsKLSAgICBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5ID0gZm9yY2VkOwotfQotCiB2b2lk
IFNldHRpbmdzQmFzZTo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkK
IHsKICAgICBpZiAobV9hcmVQbHVnaW5zRW5hYmxlZCA9PSBhcmVQbHVnaW5zRW5hYmxlZCkKQEAg
LTM4MiwxMyArMzUyLDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFVzZXJTdHlsZVNoZWV0TG9j
YQogICAgICAgICBtX3BhZ2UtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7CiB9CiAK
LS8vIEZJWE1FOiBUaGlzIHF1aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2NzQ1Mzcg
YW5kIDUyMTEyNzEuIFdlIG5lZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKLS8vIGNhbiBm
aXggdGhlIGJ1ZyBmcm9tIHRoZWlyIGVuZC4KLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXROZWVkc0Fk
b2JlRnJhbWVSZWxvYWRpbmdRdWlyayhib29sIHNob3VsZE5vdFJlbG9hZElGcmFtZXNGb3JVbmNo
YW5nZWRTUkMpCi17Ci0gICAgbV9uZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlyayA9IHNob3Vs
ZE5vdFJlbG9hZElGcmFtZXNGb3JVbmNoYW5nZWRTUkM7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNl
OjpzZXRNaW5pbXVtRE9NVGltZXJJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogewogICAgIGF1
dG8gb2xkVGltZXJJbnRlcnZhbCA9IHN0ZDo6ZXhjaGFuZ2UobV9taW5pbXVtRE9NVGltZXJJbnRl
cnZhbCwgaW50ZXJ2YWwpOwpAQCAtNDIzLDIwICszODYsNiBAQCB2b2lkIFNldHRpbmdzQmFzZTo6
c2V0VXNlc1BhZ2VDYWNoZShib29sCiAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1
bmVUb1NpemVOb3coMCwgUHJ1bmluZ1JlYXNvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgU2V0dGluZ3NC
YXNlOjpzZXRGb250UmVuZGVyaW5nTW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKQotewotICAg
IGlmIChmb250UmVuZGVyaW5nTW9kZSgpID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2ZvbnRSZW5kZXJpbmdNb2RlID0gc3RhdGljX2Nhc3Q8aW50Pihtb2RlKTsKLSAgICBpZiAobV9w
YWdlKQotICAgICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwot
fQotCi1Gb250UmVuZGVyaW5nTW9kZSBTZXR0aW5nc0Jhc2U6OmZvbnRSZW5kZXJpbmdNb2RlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFJlbmRlcmluZ01vZGU+KG1fZm9u
dFJlbmRlcmluZ01vZGUpOwotfQotCiB2b2lkIFNldHRpbmdzQmFzZTo6c2V0RE5TUHJlZmV0Y2hp
bmdFbmFibGVkKGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKQogewogICAgIGlmIChtX2Ruc1By
ZWZldGNoaW5nRW5hYmxlZCA9PSBkbnNQcmVmZXRjaGluZ0VuYWJsZWQpCkBAIC00NDcsMTQgKzM5
Niw2IEBAIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRETlNQcmVmZXRjaGluZ0VuYWIKICAgICAgICAg
bV9wYWdlLT5kbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFNldHRpbmdz
QmFzZTo6c2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKGJvb2wgZW5hYmxlZCkKLXsKLSAg
ICBpZiAobV9zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgPT0gZW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA9IGVu
YWJsZWQ7Ci19Ci0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiB2b2lkIFNldHRpbmdzQmFz
ZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKQEAgLTY0
MCwxNiArNTgxLDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEhpZGRlblBhZ2VDU1NBbmltYQog
ICAgICAgICBtX3BhZ2UtPmhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uU3RhdGVDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGb250RmFsbGJhY2tQcmVmZXJzUGlj
dG9ncmFwaHMoYm9vbCBwcmVmZXJQaWN0b2dyYXBocykKLXsKLSAgICBpZiAobV9mb250RmFsbGJh
Y2tQcmVmZXJzUGljdG9ncmFwaHMgPT0gcHJlZmVyUGljdG9ncmFwaHMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzID0gcHJlZmVyUGljdG9n
cmFwaHM7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0
eWxlSW5BbGxGcmFtZXMoKTsKLX0KLQogdm9pZCBTZXR0aW5nc0Jhc2U6OnNldExvd1Bvd2VyVmlk
ZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBnTG93UG93ZXJWaWRl
b0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQgPSBmbGFnOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzQmFzZS5oCShyZXZpc2lvbiAyMjM2MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTkgKzE1MCw5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdEVuYWJsZWQoYm9vbCk7CiAKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SmF2YUVuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0phdmFF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0phdmFFbmFibGVkOyB9Ci0KLSAgICAvLyBUaGlz
IHNldHRpbmdzIGlzIG9ubHkgY29uc3VsdGVkIGlmIGlzSmF2YUVuYWJsZWQoKSByZXR1cm5zIHRy
dWU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMo
Ym9vbCk7Ci0gICAgYm9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXM7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKICAgICBib29sIGFyZUltYWdlc0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2FyZUltYWdlc0VuYWJsZWQ7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoYm9vbCk7Ci0gICAgYm9vbCBwcmVm
ZXJNSU1FVHlwZUZvckltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXM7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9v
bCk7CiAgICAgYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlUGx1
Z2luc0VuYWJsZWQ7IH0KIApAQCAtMTcyLDkgKzE2Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJik7CiAgICAg
Y29uc3QgVVJMJiB1c2VyU3R5bGVTaGVldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
U3R5bGVTaGVldExvY2F0aW9uOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5lZWRz
QWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wpOwotICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJh
bWVSZWxvYWRpbmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2Fk
aW5nUXVpcms7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bURPTVRpbWVy
SW50ZXJ2YWwoU2Vjb25kcyk7IC8vIEluaXRpYWxpemVkIHRvIERPTVRpbWVyOjpkZWZhdWx0TWlu
aW11bUludGVydmFsKCkuCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7IH0KIApAQCAtMTg5LDEyICsx
NzYsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VzUGFnZUNhY2hl
KGJvb2wpOwogICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1Bh
Z2VDYWNoZTsgfQogICAgICAgICAKLSAgICB2b2lkIHNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRS
ZW5kZXJpbmdNb2RlIG1vZGUpOwotICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdN
b2RlKCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3dUaWxlZFNjcm9s
bGluZ0luZGljYXRvcihib29sKTsKLSAgICBib29sIHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOyB9Ci0KICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgYm9vbCByZXNvdXJjZVVzYWdlT3ZlcmxheVZp
c2libGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJv
b2wpOwpAQCAtMjQ4LDExICsyMjksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sKTsKICAgICBzdGF0aWMgYm9v
bCB1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCk7CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgYm9vbCBpc1RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZDsgfQotI2VuZGlmCi0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsK
ICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKQEAg
LTI2MiwxNSArMjM4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMo
KTsKIAotICAgIHZvaWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29u
dHJvbHMoU2Vjb25kcyB0aW1lKSB7IG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlk
aW5nQ29udHJvbHMgPSB0aW1lOyB9Ci0gICAgU2Vjb25kcyB0aW1lV2l0aG91dE1vdXNlTW92ZW1l
bnRCZWZvcmVIaWRpbmdDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVdpdGhvdXRNb3Vz
ZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHM7IH0KLQogICAgIGJvb2wgaGlkZGVuUGFnZUNT
U0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oaWRkZW5QYWdl
Q1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZChib29sKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJv
b2wpOwotICAgIGJvb2wgZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHM7IH0KLQogICAgIHN0YXRpYyBi
b29sIGxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkgeyByZXR1cm4gZ0xvd1Bv
d2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCk7CiAK
QEAgLTMwNCwxNiArMjc0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVBh
c3RlYm9hcmREYXRhRW5hYmxlZChib29sIGVuYWJsZWQpIHsgZ0N1c3RvbVBhc3RlYm9hcmREYXRh
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBjdXN0b21QYXN0ZWJvYXJkRGF0
YUVuYWJsZWQoKSB7IHJldHVybiBnQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVmYXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgpOwotCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBz
ZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSB7IG1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeTsgfQotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICB2b2lkIHNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGly
ZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBtZWRpYURldmljZUlkZW50
aWZpZXJTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYURldmljZUlkZW50
aWZpZXJTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KICAgICBzdGF0aWMgYm9vbCBtb2NrQ2FwdHVyZURl
dmljZXNFbmFibGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZChib29sKTsKIApAQCAtMzIxLDE3ICsyODMsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNT
ZWN1cmVDb25uZWN0aW9uKGJvb2wpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQot
ICAgIGJvb2wgYXBwbGVQYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsZVBheUVuYWJs
ZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5RW5hYmxlZChib29sIGFwcGxlUGF5RW5hYmxlZCkg
eyBtX2FwcGxlUGF5RW5hYmxlZCA9IGFwcGxlUGF5RW5hYmxlZDsgfQotCi0gICAgYm9vbCBhcHBs
ZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGVQ
YXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5Q2Fw
YWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkKGJvb2wgYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3Vy
ZUFsbG93ZWQpIHsgbV9hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCA9IGFwcGxl
UGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkOyB9Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCk7Ci0gICAgYm9vbCBp
c0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVBlbmRpbmdX
ZWJHTFBvbGljeTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWxsb3dz
QW55U1NMQ2VydGlmaWNhdGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUoKTsKIApAQCAtMzU0LDM1ICszMDUsMjEgQEAgcHJvdGVjdGVkOgogICAgIFNlY29u
ZHMgbV9sYXlvdXRJbnRlcnZhbDsKICAgICBTZWNvbmRzIG1fbWluaW11bURPTVRpbWVySW50ZXJ2
YWw7CiAKLSAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7Ci0gICAgYm9vbCBtX2lzSmF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAgICBib29sIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5IDogMTsKICAgICBib29sIG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7Ci0gICAgYm9vbCBtX3By
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQg
OiAxOwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9uZWVkc0Fk
b2JlRnJhbWVSZWxvYWRpbmdRdWlyayA6IDE7CiAgICAgYm9vbCBtX3VzZXNQYWdlQ2FjaGUgOiAx
OwotICAgIHVuc2lnbmVkIG1fZm9udFJlbmRlcmluZ01vZGUgOiAxOwogICAgIGJvb2wgbV9zaG93
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgOiAxOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kU2hvdWxk
RXh0ZW5kQmV5b25kUGFnZSA6IDE7CiAgICAgYm9vbCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCA6
IDE7Ci0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgbV90b3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZCA6IDE7Ci0jZW5kaWYKICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICBTZWNvbmRzIG1fdGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgeyAzX3MgfTsKLQogICAgIFRpbWVyIG1fc2V0SW1h
Z2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGlt
ZXJGaXJlZCgpOwogCiAgICAgYm9vbCBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFi
bGVkIDogMTsKICAgICBib29sIG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFi
bGVkIDogMTsKLSAgICBib29sIG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzIDogMTsK
LQotICAgIGJvb2wgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA6IDE7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfVVNBR0UpCiAgICAgYm9vbCBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSB7
IGZhbHNlIH07CkBAIC00MTgsMjIgKzM1NSwxMiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnTWFuYWdlQXVkaW9TZXNzaW9uOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGdDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQ7Ci0KLSNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBTdHJpbmcgbV9tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5OwotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBTdHJpbmcgbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5OwogICAg
IHN0YXRpYyBib29sIGdNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkOwogICAgIHN0YXRpYyBib29s
IGdNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShBUFBMRV9QQVkpCi0gICAgYm9vbCBtX2FwcGxlUGF5RW5hYmxlZCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2FwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkIHsgdHJ1ZSB9Owot
I2VuZGlmCi0KICAgICBzdGF0aWMgYm9vbCBnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVu
YWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkRW5h
YmxlZDsKICAgICBzdGF0aWMgYm9vbCBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324134</attachid>
            <date>2017-10-18 10:51:09 -0700</date>
            <delta_ts>2017-10-18 11:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177730-20171018105107.patch</filename>
            <type>text/plain</type>
            <size>20640</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzQ3NjMzNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisgICAgICAgIChTZXR0
aW5nLl9faW5pdF9fKToKKyAgICAgICAgKFNldHRpbmcuX19zdHJfXyk6CisgICAgICAgIChTZXR0
aW5nLmdldHRlckZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChwYXJzZUlucHV0KToKKworICAgICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlICdnZXR0ZXInIG9wdGlvbi4KKworICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisgICAgICAgIAorICAgICAgICAgICAgTWlncmFnZSBz
aW1wbGUgc2V0dGluZ3MgZnJvbSBTZXR0aW5nc0Jhc2UgdG8gaGVyZS4KKyAgICAgICAgCisgICAg
ICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NC
YXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRK
YXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXROZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlyayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jh
c2U6OnNldEZvbnRSZW5kZXJpbmdNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzQmFzZTo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRGb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzSmF2YUVuYWJsZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjppc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
c0Jhc2U6OnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRpbmdRdWlyayBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNob3dUaWxl
ZFNjcm9sbGluZ0luZGljYXRvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFRp
bWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3NCYXNlOjpmb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjptZWRpYURldmljZUlkZW50
aWZpZXJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0QXBwbGVQYXlFbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3Vy
ZUFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNl
OjpzZXRBcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgICAgIFJlbW92ZSBzaW1wbGUgc2V0dGlu
Z3MuCisKIDIwMTctMTAtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbU2V0dGluZ3NdIE1pc2NlbGxhbmVvdXMgY2xlYW51cCBvZiB0aGUgc2V0dGluZ3MgZ2VuZXJh
dGlvbiBzY3JpcHRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MvU2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5l
cmF0ZVNldHRpbmdzL1NldHRpbmdzLnB5CShyZXZpc2lvbiAyMjM2MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDM4ICs2MSwzOSBAQCBkZWYgbGljZW5zZSgpOgogY2xhc3MgU2V0dGluZzoKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAg
ICAgc2VsZi50eXBlID0gImJvb2wiCisgICAgICAgIHNlbGYudHlwZSA9ICdib29sJwogICAgICAg
ICBzZWxmLmluaXRpYWwgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZGl0aW9uYWwgPSBOb25lCiAg
ICAgICAgIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzID0gTm9uZQorICAgICAg
ICBzZWxmLmdldHRlciA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBy
ZXN1bHQgPSBzZWxmLm5hbWUgKyAiIFRZUEU6IiArIHNlbGYudHlwZQorICAgICAgICByZXN1bHQg
PSBzZWxmLm5hbWUgKyAnIFRZUEU6JyArIHNlbGYudHlwZQogICAgICAgICBpZiAoc2VsZi5pbml0
aWFsKToKLSAgICAgICAgICAgIHJlc3VsdCArPSAiIElOSVQ6IiArIHNlbGYuaW5pdGlhbAorICAg
ICAgICAgICAgcmVzdWx0ICs9ICcgSU5JVDonICsgc2VsZi5pbml0aWFsCiAgICAgICAgIGlmIChz
ZWxmLmNvbmRpdGlvbmFsKToKLSAgICAgICAgICAgIHJlc3VsdCArPSAiIENPTkQ6IiArIHNlbGYu
Y29uZGl0aW9uYWwKKyAgICAgICAgICAgIHJlc3VsdCArPSAnIENPTkQ6JyArIHNlbGYuY29uZGl0
aW9uYWwKICAgICAgICAgaWYgKHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzKToK
LSAgICAgICAgICAgIHJlc3VsdCArPSAiIFJFQ0FMQzoiICsgc2VsZi5zZXROZWVkc1N0eWxlUmVj
YWxjSW5BbGxGcmFtZXMKKyAgICAgICAgICAgIHJlc3VsdCArPSAnIFJFQ0FMQzonICsgc2VsZi5z
ZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMKKyAgICAgICAgaWYgKHNlbGYuZ2V0dGVyKToK
KyAgICAgICAgICAgIHJlc3VsdCArPSAnIEdFVFRFUjonICsgc2VsZi5nZXR0ZXIKICAgICAgICAg
cmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGhhc0NvbXBsZXhTZXR0ZXIoc2VsZik6Ci0gICAgICAg
IGlmIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzOgotICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLnNldE5l
ZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcwogCiAgICAgZGVmIHR5cGVJc1ZhbHVlVHlwZShzZWxm
KToKLSAgICAgICAgaWYgc2VsZi50eXBlID09ICdTdHJpbmcnOgotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLnR5cGUgIT0g
J1N0cmluZycKIAogICAgIGRlZiBzZXR0ZXJGdW5jdGlvbk5hbWUoc2VsZik6Ci0gICAgICAgIGZv
ciBwcmVmaXggaW4gWyJjc3MiLCAieHNzIiwgImZ0cCIsICJkb20iXToKKyAgICAgICAgZm9yIHBy
ZWZpeCBpbiBbJ2NzcycsICd4c3MnLCAnZnRwJywgJ2RvbSddOgogICAgICAgICAgICAgaWYgc2Vs
Zi5uYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICByZXR1cm4gInNldCIg
KyB1cHBlcmNhc2VGaXJzdE4oc2VsZi5uYW1lLCBsZW4ocHJlZml4KSkKLSAgICAgICAgcmV0dXJu
ICJzZXQiICsgdXBwZXJjYXNlRmlyc3ROKHNlbGYubmFtZSwgMSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJ3NldCcgKyB1cHBlcmNhc2VGaXJzdE4oc2VsZi5uYW1lLCBsZW4ocHJlZml4KSkKKyAg
ICAgICAgcmV0dXJuICdzZXQnICsgdXBwZXJjYXNlRmlyc3ROKHNlbGYubmFtZSwgMSkKIAogICAg
IGRlZiBnZXR0ZXJGdW5jdGlvbk5hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZ2V0dGVyOgor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0dGVyCiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUK
IAogICAgIGRlZiBpZGxUeXBlKHNlbGYpOgpAQCAtMTIyLDEzICsxMjMsMTMgQEAgZGVmIG1ha2VQ
cmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRpb25hbAogCiBkZWYgbWFrZUNvbmRpdGlvbmFsU3Ry
aW5nKGNvbmRpdGlvbmFsKToKICAgICBjb25kaXRpb25hbHMgPSBjb25kaXRpb25hbC5zcGxpdCgn
fCcpCi0gICAgcmV0dXJuICJFTkFCTEUoIiArICIpIHx8IEVOQUJMRSgiLmpvaW4oY29uZGl0aW9u
YWxzKSArICIpIgorICAgIHJldHVybiAnRU5BQkxFKCcgKyAnKSB8fCBFTkFCTEUoJy5qb2luKGNv
bmRpdGlvbmFscykgKyAnKScKIAogCiBkZWYgcGFyc2VJbnB1dChpbnB1dCk6CiAgICAgc2V0dGlu
Z3MgPSB7fQotICAgIGZvciBsaW5lIGluIG9wZW4oaW5wdXQsICJyIik6Ci0gICAgICAgIGlmIG5v
dCBsaW5lLnN0YXJ0c3dpdGgoIiMiKSBhbmQgbm90IGxpbmUuaXNzcGFjZSgpOgorICAgIGZvciBs
aW5lIGluIG9wZW4oaW5wdXQsICdyJyk6CisgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgo
JyMnKSBhbmQgbm90IGxpbmUuaXNzcGFjZSgpOgogCiAgICAgICAgICAgICAobmFtZSwgb3B0aW9u
c1N0cmluZykgPSBsaW5lLnJzdHJpcCgpLnNwbGl0KCcgJywgMSkKIApAQCAtMTQ1LDYgKzE0Niw4
IEBAIGRlZiBwYXJzZUlucHV0KGlucHV0KToKICAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5j
b25kaXRpb25hbCA9IHZhbHVlCiAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ3NldE5lZWRz
U3R5bGVSZWNhbGNJbkFsbEZyYW1lcycpOgogICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNl
dE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcyA9IHZhbHVlCisgICAgICAgICAgICAgICAgaWYg
KG5hbWUgPT0gJ2dldHRlcicpOgorICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLmdldHRlciA9
IHZhbHVlCiAKICAgICAgICAgICAgICMgRklYTUU6IEFTU0VSVCBzb21ldGhpbmcgYWJvdXQgc2V0
dGluZy5pbml0aWFsCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMjIz
NjEyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpA
QCAtNjYsNiArNjYsNyBAQCBhY2NlbGVyYXRlZENvbXBvc2l0ZWRBbmltYXRpb25zRW5hYmxlZCBp
CiBzaG93RGVidWdCb3JkZXJzIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFs
bEZyYW1lcz0xCiBzaG93UmVwYWludENvdW50ZXIgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHls
ZVJlY2FsY0luQWxsRnJhbWVzPTEKIHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zIHR5cGU9RGVi
dWdPdmVybGF5UmVnaW9ucywgaW5pdGlhbD0wCitzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3Ig
aW5pdGlhbD1mYWxzZQogCiAjIFRoaXMgaXMgYSBxdWlyayB3ZSBhcmUgcHJvLWFjdGl2ZWx5IGFw
cGx5aW5nIHRvIG9sZCBhcHBsaWNhdGlvbnMuIEl0IGNoYW5nZXMga2V5Ym9hcmQgZXZlbnQgZGlz
cGF0Y2hpbmcsCiAjIG1ha2luZyBrZXlJZGVudGlmaWVyIGF2YWlsYWJsZSBvbiBrZXlwcmVzcyBl
dmVudHMsIG1ha2luZyBjaGFyQ29kZSBhdmFpbGFibGUgb24ga2V5ZG93bi9rZXl1cCBldmVudHMs
CkBAIC0zMDMsMTAgKzMwNCwzMyBAQCB2aWV3cG9ydEZpdEVuYWJsZWQgaW5pdGlhbD1mYWxzZQog
CiBhbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFj
ayBpbml0aWFsPWZhbHNlCiAKLXBheW1lbnRSZXF1ZXN0RW5hYmxlZCBpbml0aWFsPWZhbHNlLCBj
b25kaXRpb25hbD1QQVlNRU5UX1JFUVVFU1QKK3N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkIGluaXRp
YWw9ZmFsc2UKKwordGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMg
dHlwZT1TZWNvbmRzLCBpbml0aWFsPTNfcyAKKworZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3Jh
cGhzIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiAKIGZv
bnRMb2FkVGltaW5nT3ZlcnJpZGUgdHlwZT1Gb250TG9hZFRpbWluZ092ZXJyaWRlLCBpbml0aWFs
PUZvbnRMb2FkVGltaW5nT3ZlcnJpZGU6Ok5vbmUKIHNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxl
dGlvbnMgaW5pdGlhbD1mYWxzZQogCi1zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCBpbml0aWFsPWZh
bHNlCitwYXltZW50UmVxdWVzdEVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZ
TUVOVF9SRVFVRVNUCithcHBsZVBheUVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9
QVBQTEVfUEFZCithcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCBpbml0aWFsPXRy
dWUsIGNvbmRpdGlvbmFsPUFQUExFX1BBWQorCitqYXZhRW5hYmxlZCBpbml0aWFsPWZhbHNlLCBn
ZXR0ZXI9aXNKYXZhRW5hYmxlZAoramF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIGluaXRpYWw9dHJ1
ZSwgZ2V0dGVyPWlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzCisKK2ZvbnRSZW5kZXJpbmdNb2Rl
IHR5cGU9Rm9udFJlbmRlcmluZ01vZGUsIGluaXRpYWw9Rm9udFJlbmRlcmluZ01vZGU6Ok5vcm1h
bAorCitwcmVmZXJNSU1FVHlwZUZvckltYWdlcyBpbml0aWFsPWZhbHNlCisKK2ZvcmNlUGVuZGlu
Z1dlYkdMUG9saWN5IGluaXRpYWw9ZmFsc2UsIGdldHRlcj1pc0ZvcmNlUGVuZGluZ1dlYkdMUG9s
aWN5CisKK21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgdHlwZT1TdHJpbmcsIGNvbmRpdGlvbmFs
PUxFR0FDWV9FTkNSWVBURURfTUVESUEKK21lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJl
Y3RvcnkgdHlwZT1TdHJpbmcsIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorCisjIEZJWE1FOiBU
aGlzIHF1aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2NzQ1MzcgYW5kIDUyMTEyNzEu
IFdlIG5lZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKKyMgY2FuIGZpeCB0aGUgYnVnIGZy
b20gdGhlaXIgZW5kLgorbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsgaW5pdGlhbD1mYWxz
ZSwgZ2V0dGVyPW5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsKIAordG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgZ2V0dGVyPWlzVG91Y2hFdmVudEVtdWxhdGlv
bkVuYWJsZWQsIGNvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5nc0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmNwcAkocmV2aXNpb24gMjIzNjEyKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMjggKzE0NiwxOCBAQCBT
ZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdlKQogICAgICwgbV9mb250R2VuZXJp
Y0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAs
IG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmlt
dW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCi0g
ICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2Nh
bEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKICAg
ICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9wcmVmZXJNSU1FVHlwZUZvcklt
YWdlcyhmYWxzZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lz
U2NyaXB0RW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVp
cmsoZmFsc2UpCiAgICAgLCBtX3VzZXNQYWdlQ2FjaGUoZmFsc2UpCi0gICAgLCBtX2ZvbnRSZW5k
ZXJpbmdNb2RlKDApCi0gICAgLCBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihmYWxzZSkK
ICAgICAsIG1fYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoZmFsc2UpCiAgICAgLCBt
X2Ruc1ByZWZldGNoaW5nRW5hYmxlZChmYWxzZSkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgICwgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChmYWxzZSkKLSNlbmRpZgogICAgICwg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKCp0aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lv
bkVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyhm
YWxzZSkKLSAgICAsIG1fZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koZmFsc2UpCiB7CiAgICAgLy8g
QSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0
aGUgQXRvbWljU3RyaW5nCiAgICAgLy8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KQEAg
LTMzNCwxNiArMzI0LDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNjcmlwdEVuYWJsZWQoYm9v
bAogI2VuZGlmCiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRKYXZhRW5hYmxlZChib29sIGlz
SmF2YUVuYWJsZWQpCi17Ci0gICAgbV9pc0phdmFFbmFibGVkID0gaXNKYXZhRW5hYmxlZDsKLX0K
LQotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sIGlz
SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKQotewotICAgIG1faXNKYXZhRW5hYmxlZEZvckxvY2Fs
RmlsZXMgPSBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlczsKLX0KLQogdm9pZCBTZXR0aW5nc0Jh
c2U6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBhcmVJbWFnZXNFbmFibGVkKQogewogICAgIG1fYXJl
SW1hZ2VzRW5hYmxlZCA9IGFyZUltYWdlc0VuYWJsZWQ7CkBAIC0zNTIsMTYgKzMzMiw2IEBAIHZv
aWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wKICAgICBtX3NldEltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU2V0dGluZ3NC
YXNlOjpzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyhib29sIHByZWZlck1JTUVUeXBlRm9ySW1h
Z2VzKQotewotICAgIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMgPSBwcmVmZXJNSU1FVHlwZUZv
ckltYWdlczsKLX0KLQotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZvcmNlUGVuZGluZ1dlYkdMUG9s
aWN5KGJvb2wgZm9yY2VkKQotewotICAgIG1fZm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgPSBmb3Jj
ZWQ7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBs
dWdpbnNFbmFibGVkKQogewogICAgIGlmIChtX2FyZVBsdWdpbnNFbmFibGVkID09IGFyZVBsdWdp
bnNFbmFibGVkKQpAQCAtMzgyLDEzICszNTIsNiBAQCB2b2lkIFNldHRpbmdzQmFzZTo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhCiAgICAgICAgIG1fcGFnZS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNo
YW5nZWQoKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgcXVpcmsgaXMgbmVlZGVkIGJlY2F1c2Ugb2Yg
UmFkYXIgNDY3NDUzNyBhbmQgNTIxMTI3MS4gV2UgbmVlZCB0byBwaGFzZSBpdCBvdXQgb25jZSBB
ZG9iZQotLy8gY2FuIGZpeCB0aGUgYnVnIGZyb20gdGhlaXIgZW5kLgotdm9pZCBTZXR0aW5nc0Jh
c2U6OnNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wgc2hvdWxkTm90UmVsb2Fk
SUZyYW1lc0ZvclVuY2hhbmdlZFNSQykKLXsKLSAgICBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGlu
Z1F1aXJrID0gc2hvdWxkTm90UmVsb2FkSUZyYW1lc0ZvclVuY2hhbmdlZFNSQzsKLX0KLQogdm9p
ZCBTZXR0aW5nc0Jhc2U6OnNldE1pbmltdW1ET01UaW1lckludGVydmFsKFNlY29uZHMgaW50ZXJ2
YWwpCiB7CiAgICAgYXV0byBvbGRUaW1lckludGVydmFsID0gc3RkOjpleGNoYW5nZShtX21pbmlt
dW1ET01UaW1lckludGVydmFsLCBpbnRlcnZhbCk7CkBAIC00MjMsMjAgKzM4Niw2IEBAIHZvaWQg
U2V0dGluZ3NCYXNlOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wKICAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5wcnVuZVRvU2l6ZU5vdygwLCBQcnVuaW5nUmVhc29uOjpOb25lKTsKIH0KIAot
dm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRSZW5kZXJpbmdNb2Rl
IG1vZGUpCi17Ci0gICAgaWYgKGZvbnRSZW5kZXJpbmdNb2RlKCkgPT0gbW9kZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fZm9udFJlbmRlcmluZ01vZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1vZGUp
OwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUlu
QWxsRnJhbWVzKCk7Ci19Ci0KLUZvbnRSZW5kZXJpbmdNb2RlIFNldHRpbmdzQmFzZTo6Zm9udFJl
bmRlcmluZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb250UmVuZGVy
aW5nTW9kZT4obV9mb250UmVuZGVyaW5nTW9kZSk7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNlOjpz
ZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQpCiB7CiAg
ICAgaWYgKG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkID09IGRuc1ByZWZldGNoaW5nRW5hYmxlZCkK
QEAgLTQ0NywxNCArMzk2LDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEROU1ByZWZldGNoaW5n
RW5hYgogICAgICAgICBtX3BhZ2UtPmRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiB9CiAK
LXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoYm9vbCBl
bmFibGVkKQotewotICAgIGlmIChtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA9PSBlbmFi
bGVkKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIG1fc2hvd1RpbGVkU2Nyb2xsaW5n
SW5kaWNhdG9yID0gZW5hYmxlZDsKLX0KLQogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKIHZv
aWQgU2V0dGluZ3NCYXNlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNp
YmxlKQogewpAQCAtNjQwLDE2ICs1ODEsNiBAQCB2b2lkIFNldHRpbmdzQmFzZTo6c2V0SGlkZGVu
UGFnZUNTU0FuaW1hCiAgICAgICAgIG1fcGFnZS0+aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3Bl
bnNpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZvbnRGYWxs
YmFja1ByZWZlcnNQaWN0b2dyYXBocyhib29sIHByZWZlclBpY3RvZ3JhcGhzKQotewotICAgIGlm
IChtX2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyA9PSBwcmVmZXJQaWN0b2dyYXBocykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMg
PSBwcmVmZXJQaWN0b2dyYXBoczsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNl
dE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwotfQotCiB2b2lkIFNldHRpbmdzQmFzZTo6
c2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCBmbGFnKQogewogICAg
IGdMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5hYmxlZCA9IGZsYWc7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgJKHJldmlzaW9uIDIyMzYxMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxOSArMTUwLDkg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0RW5hYmxlZChib29s
KTsKIAogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxlZChib29sKTsKLSAg
ICBib29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWQ7IH0K
LQotICAgIC8vIFRoaXMgc2V0dGluZ3MgaXMgb25seSBjb25zdWx0ZWQgaWYgaXNKYXZhRW5hYmxl
ZCgpIHJldHVybnMgdHJ1ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEphdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcyhib29sKTsKLSAgICBib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
KCkgY29uc3QgeyByZXR1cm4gbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlczsgfQotCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOwogICAgIGJvb2wgYXJl
SW1hZ2VzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlSW1hZ2VzRW5hYmxlZDsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVmZXJNSU1FVHlwZUZvckltYWdlcyhib29sKTsK
LSAgICBib29sIHByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVm
ZXJNSU1FVHlwZUZvckltYWdlczsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQbHVn
aW5zRW5hYmxlZChib29sKTsKICAgICBib29sIGFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcmVQbHVnaW5zRW5hYmxlZDsgfQogCkBAIC0xNzIsOSArMTYyLDYgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25z
dCBVUkwmKTsKICAgICBjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsoYm9vbCk7Ci0gICAgYm9vbCBu
ZWVkc0Fjcm9iYXRGcmFtZVJlbG9hZGluZ1F1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Fk
b2JlRnJhbWVSZWxvYWRpbmdRdWlyazsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
aW5pbXVtRE9NVGltZXJJbnRlcnZhbChTZWNvbmRzKTsgLy8gSW5pdGlhbGl6ZWQgdG8gRE9NVGlt
ZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKS4KICAgICBTZWNvbmRzIG1pbmltdW1ET01UaW1l
ckludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbDsgfQog
CkBAIC0xODksMTIgKzE3Niw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFVzZXNQYWdlQ2FjaGUoYm9vbCk7CiAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VzUGFnZUNhY2hlOyB9CiAgICAgICAgIAotICAgIHZvaWQgc2V0Rm9udFJlbmRl
cmluZ01vZGUoRm9udFJlbmRlcmluZ01vZGUgbW9kZSk7Ci0gICAgRm9udFJlbmRlcmluZ01vZGUg
Zm9udFJlbmRlcmluZ01vZGUoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKGJvb2wpOwotICAgIGJvb2wgc2hvd1RpbGVkU2Ny
b2xsaW5nSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zaG93VGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3I7IH0KLQogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBib29sIHJlc291cmNl
VXNhZ2VPdmVybGF5VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZVVzYWdlT3Zl
cmxheVZpc2libGUoYm9vbCk7CkBAIC0yNDgsMTEgKzIyOSw2IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGJvb2wpOwog
ICAgIHN0YXRpYyBib29sIHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKTsKIAotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAg
ICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kpOwogICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kg
c3RvcmFnZUJsb2NraW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3k7IH0KIApAQCAtMjYyLDE1ICsyMzgsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0
ZXJzKGJvb2wpOwogICAgIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0
cmlidXRlU2V0dGVycygpOwogCi0gICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRC
ZWZvcmVIaWRpbmdDb250cm9scyhTZWNvbmRzIHRpbWUpIHsgbV90aW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IHRpbWU7IH0KLSAgICBTZWNvbmRzIHRpbWVXaXRo
b3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9sczsgfQotCiAgICAgYm9v
bCBoaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2hpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZDsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVk
KGJvb2wpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb250RmFsbGJhY2tQcmVmZXJz
UGljdG9ncmFwaHMoYm9vbCk7Ci0gICAgYm9vbCBmb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFw
aHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBoczsgfQot
CiAgICAgc3RhdGljIGJvb2wgbG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSB7
IHJldHVybiBnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQ7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5h
YmxlZChib29sKTsKIApAQCAtMzA0LDE2ICsyNzQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBnQ3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpIHsgcmV0dXJuIGdDdXN0b21QYXN0ZWJvYXJkRGF0YUVu
YWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWZhdWx0Q3VzdG9tUGFz
dGVib2FyZERhdGFFbmFibGVkKCk7Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKLSAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0jZW5kaWYKICAgICAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIHZvaWQgc2V0TWVkaWFEZXZpY2VJZGVudGlmaWVyU3RvcmFn
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgeyBtX21lZGlhRGV2aWNlSWRlbnRp
ZmllclN0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLSAgICBjb25zdCBTdHJpbmcmIG1l
ZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQogICAgIHN0YXRpYyBib29s
IG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKGJvb2wpOwogCkBAIC0zMjEsMTcgKzI4
Myw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNZWRpYUNh
cHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oYm9vbCk7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShBUFBMRV9QQVkpCi0gICAgYm9vbCBhcHBsZVBheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2FwcGxlUGF5RW5hYmxlZDsgfQotICAgIHZvaWQgc2V0QXBwbGVQYXlFbmFibGVkKGJvb2wgYXBw
bGVQYXlFbmFibGVkKSB7IG1fYXBwbGVQYXlFbmFibGVkID0gYXBwbGVQYXlFbmFibGVkOyB9Ci0K
LSAgICBib29sIGFwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZDsgfQotICAgIHZvaWQg
c2V0QXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQoYm9vbCBhcHBsZVBheUNhcGFi
aWxpdHlEaXNjbG9zdXJlQWxsb3dlZCkgeyBtX2FwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVB
bGxvd2VkID0gYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQ7IH0KLSNlbmRpZgot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb3JjZVBlbmRpbmdXZWJHTFBvbGljeShib29s
KTsKLSAgICBib29sIGlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5OyB9Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBh
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpOwogCkBAIC0zNTQsMzUgKzMwNSwyMSBAQCBwcm90ZWN0
ZWQ6CiAgICAgU2Vjb25kcyBtX2xheW91dEludGVydmFsOwogICAgIFNlY29uZHMgbV9taW5pbXVt
RE9NVGltZXJJbnRlcnZhbDsKIAotICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKLSAgICBi
b29sIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgOiAxOwogICAgIGJvb2wgbV9sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNFbmFibGVkIDogMTsK
LSAgICBib29sIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMgOiAxOwogICAgIGJvb2wgbV9hcmVQ
bHVnaW5zRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2lzU2NyaXB0RW5hYmxlZCA6IDE7Ci0gICAg
Ym9vbCBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrIDogMTsKICAgICBib29sIG1fdXNl
c1BhZ2VDYWNoZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9mb250UmVuZGVyaW5nTW9kZSA6IDE7CiAg
ICAgYm9vbCBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA6IDE7CiAgICAgYm9vbCBtX2Jh
Y2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlIDogMTsKICAgICBib29sIG1fZG5zUHJlZmV0
Y2hpbmdFbmFibGVkIDogMTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9vbCBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIDogMTsKLSNlbmRpZgogICAgIGJvb2wgbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgIFNlY29uZHMgbV90aW1l
V2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyB7IDNfcyB9OwotCiAgICAg
VGltZXIgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwogICAgIHZvaWQgaW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lckZpcmVkKCk7CiAKICAgICBib29sIG1faGlkZGVuUGFnZURPTVRpbWVy
VGhyb3R0bGluZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5QYWdlQ1NTQW5pbWF0aW9u
U3VzcGVuc2lvbkVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9mb250RmFsbGJhY2tQcmVmZXJzUGlj
dG9ncmFwaHMgOiAxOwotCi0gICAgYm9vbCBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5IDogMTsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKICAgICBib29sIG1fcmVzb3VyY2VVc2FnZU92
ZXJsYXlWaXNpYmxlIHsgZmFsc2UgfTsKQEAgLTQxOCwyMiArMzU1LDEyIEBAIHByb3RlY3RlZDoK
ICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGdNYW5hZ2VBdWRpb1Nlc3Np
b247CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ0N1c3RvbVBhc3RlYm9hcmREYXRh
RW5hYmxlZDsKLQotI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIFN0cmlu
ZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0jZW5kaWYKICAgICAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBtX21lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgc3RhdGljIGJvb2wgZ01vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQ7CiAg
ICAgc3RhdGljIGJvb2wgZ01lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbjsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBib29sIG1fYXBwbGVQYXlFbmFibGVk
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93
ZWQgeyB0cnVlIH07Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBib29sIGdMb3dQb3dlclZpZGVvQXVk
aW9CdWZmZXJTaXplRW5hYmxlZDsKICAgICBzdGF0aWMgYm9vbCBnUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWRFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324137</attachid>
            <date>2017-10-18 11:07:45 -0700</date>
            <delta_ts>2017-10-18 13:18:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177730-20171018110744.patch</filename>
            <type>text/plain</type>
            <size>21985</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNb3ZlIHJlbWFpbmlu
ZyBzaW1wbGUgc2V0dGluZ3MgdG8gU2V0dGluZ3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzczMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzQ3NjMzNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHk6CisgICAgICAgIChTZXR0
aW5nLl9faW5pdF9fKToKKyAgICAgICAgKFNldHRpbmcuX19zdHJfXyk6CisgICAgICAgIChTZXR0
aW5nLmdldHRlckZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChwYXJzZUlucHV0KToKKworICAgICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlICdnZXR0ZXInIG9wdGlvbi4KKworICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisgICAgICAgIAorICAgICAgICAgICAgTWlncmF0ZSBz
aW1wbGUgc2V0dGluZ3MgZnJvbSBTZXR0aW5nc0Jhc2UgdG8gaGVyZS4KKyAgICAgICAgCisgICAg
ICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NC
YXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRK
YXZhRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXROZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlyayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jh
c2U6OnNldEZvbnRSZW5kZXJpbmdNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzQmFzZTo6Zm9udFJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRGb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHMpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzSmF2YUVuYWJsZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjppc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
c0Jhc2U6OnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRpbmdRdWlyayBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNob3dUaWxl
ZFNjcm9sbGluZ0luZGljYXRvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFRp
bWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3NCYXNlOjpmb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nc0Jhc2U6OnNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjptZWRpYURldmljZUlkZW50
aWZpZXJTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0QXBwbGVQYXlFbmFibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6YXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3Vy
ZUFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNl
OjpzZXRBcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3kgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgICAgIFJlbW92ZSBzaW1wbGUgc2V0dGlu
Z3MuCisKIDIwMTctMTAtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbU2V0dGluZ3NdIE1pc2NlbGxhbmVvdXMgY2xlYW51cCBvZiB0aGUgc2V0dGluZ3MgZ2VuZXJh
dGlvbiBzY3JpcHRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MvU2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5l
cmF0ZVNldHRpbmdzL1NldHRpbmdzLnB5CShyZXZpc2lvbiAyMjM2MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDM5ICs2MSwzOCBAQCBkZWYgbGljZW5zZSgpOgogY2xhc3MgU2V0dGluZzoKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAg
ICAgc2VsZi50eXBlID0gImJvb2wiCisgICAgICAgIHNlbGYudHlwZSA9ICdib29sJwogICAgICAg
ICBzZWxmLmluaXRpYWwgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZGl0aW9uYWwgPSBOb25lCiAg
ICAgICAgIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzID0gTm9uZQorICAgICAg
ICBzZWxmLmdldHRlciA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBy
ZXN1bHQgPSBzZWxmLm5hbWUgKyAiIFRZUEU6IiArIHNlbGYudHlwZQorICAgICAgICByZXN1bHQg
PSBzZWxmLm5hbWUgKyAnIFRZUEU6JyArIHNlbGYudHlwZQogICAgICAgICBpZiAoc2VsZi5pbml0
aWFsKToKLSAgICAgICAgICAgIHJlc3VsdCArPSAiIElOSVQ6IiArIHNlbGYuaW5pdGlhbAorICAg
ICAgICAgICAgcmVzdWx0ICs9ICcgSU5JVDonICsgc2VsZi5pbml0aWFsCiAgICAgICAgIGlmIChz
ZWxmLmNvbmRpdGlvbmFsKToKLSAgICAgICAgICAgIHJlc3VsdCArPSAiIENPTkQ6IiArIHNlbGYu
Y29uZGl0aW9uYWwKKyAgICAgICAgICAgIHJlc3VsdCArPSAnIENPTkQ6JyArIHNlbGYuY29uZGl0
aW9uYWwKICAgICAgICAgaWYgKHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzKToK
LSAgICAgICAgICAgIHJlc3VsdCArPSAiIFJFQ0FMQzoiICsgc2VsZi5zZXROZWVkc1N0eWxlUmVj
YWxjSW5BbGxGcmFtZXMKKyAgICAgICAgICAgIHJlc3VsdCArPSAnIFJFQ0FMQzonICsgc2VsZi5z
ZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMKKyAgICAgICAgaWYgKHNlbGYuZ2V0dGVyKToK
KyAgICAgICAgICAgIHJlc3VsdCArPSAnIEdFVFRFUjonICsgc2VsZi5nZXR0ZXIKICAgICAgICAg
cmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGhhc0NvbXBsZXhTZXR0ZXIoc2VsZik6Ci0gICAgICAg
IGlmIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzOgotICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLnNldE5l
ZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcwogCiAgICAgZGVmIHR5cGVJc1ZhbHVlVHlwZShzZWxm
KToKLSAgICAgICAgaWYgc2VsZi50eXBlID09ICdTdHJpbmcnOgotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLnR5cGUgIT0g
J1N0cmluZycKIAogICAgIGRlZiBzZXR0ZXJGdW5jdGlvbk5hbWUoc2VsZik6Ci0gICAgICAgIGZv
ciBwcmVmaXggaW4gWyJjc3MiLCAieHNzIiwgImZ0cCIsICJkb20iXToKKyAgICAgICAgZm9yIHBy
ZWZpeCBpbiBbJ2NzcycsICd4c3MnLCAnZnRwJywgJ2RvbSddOgogICAgICAgICAgICAgaWYgc2Vs
Zi5uYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICByZXR1cm4gInNldCIg
KyB1cHBlcmNhc2VGaXJzdE4oc2VsZi5uYW1lLCBsZW4ocHJlZml4KSkKLSAgICAgICAgcmV0dXJu
ICJzZXQiICsgdXBwZXJjYXNlRmlyc3ROKHNlbGYubmFtZSwgMSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJ3NldCcgKyB1cHBlcmNhc2VGaXJzdE4oc2VsZi5uYW1lLCBsZW4ocHJlZml4KSkKKyAg
ICAgICAgcmV0dXJuICdzZXQnICsgdXBwZXJjYXNlRmlyc3ROKHNlbGYubmFtZSwgMSkKIAogICAg
IGRlZiBnZXR0ZXJGdW5jdGlvbk5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm5hbWUK
KyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0dGVyIG9yIHNlbGYubmFtZQogCiAgICAgZGVmIGlkbFR5
cGUoc2VsZik6CiAgICAgICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBtb3JlIHR5cGVzIGlu
Y2x1ZGluZyBlbnVtZXJhdGUgdHlwZXMuCkBAIC0xMjIsMzIgKzEyMSwzNiBAQCBkZWYgbWFrZVBy
ZWZlcnJlZENvbmRpdGlvbmFsKGNvbmRpdGlvbmFsCiAKIGRlZiBtYWtlQ29uZGl0aW9uYWxTdHJp
bmcoY29uZGl0aW9uYWwpOgogICAgIGNvbmRpdGlvbmFscyA9IGNvbmRpdGlvbmFsLnNwbGl0KCd8
JykKLSAgICByZXR1cm4gIkVOQUJMRSgiICsgIikgfHwgRU5BQkxFKCIuam9pbihjb25kaXRpb25h
bHMpICsgIikiCisgICAgcmV0dXJuICdFTkFCTEUoJyArICcpIHx8IEVOQUJMRSgnLmpvaW4oY29u
ZGl0aW9uYWxzKSArICcpJwogCiAKIGRlZiBwYXJzZUlucHV0KGlucHV0KToKICAgICBzZXR0aW5n
cyA9IHt9Ci0gICAgZm9yIGxpbmUgaW4gb3BlbihpbnB1dCwgInIiKToKLSAgICAgICAgaWYgbm90
IGxpbmUuc3RhcnRzd2l0aCgiIyIpIGFuZCBub3QgbGluZS5pc3NwYWNlKCk6Ci0KLSAgICAgICAg
ICAgIChuYW1lLCBvcHRpb25zU3RyaW5nKSA9IGxpbmUucnN0cmlwKCkuc3BsaXQoJyAnLCAxKQot
Ci0gICAgICAgICAgICBvcHRpb25zID0gcmUuc3BsaXQocicgKiwgKicsIG9wdGlvbnNTdHJpbmcp
CiAKLSAgICAgICAgICAgIHNldHRpbmcgPSBTZXR0aW5nKG5hbWUpCi0gICAgICAgICAgICBmb3Ig
b3B0aW9uIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlKSA9IHJlLnNw
bGl0KHInICo9IConLCBvcHRpb24pCi0gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ3R5cGUn
KToKLSAgICAgICAgICAgICAgICAgICAgc2V0dGluZy50eXBlID0gdmFsdWUKLSAgICAgICAgICAg
ICAgICBpZiAobmFtZSA9PSAnaW5pdGlhbCcpOgotICAgICAgICAgICAgICAgICAgICBzZXR0aW5n
LmluaXRpYWwgPSB2YWx1ZQotICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICdjb25kaXRpb25h
bCcpOgotICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLmNvbmRpdGlvbmFsID0gdmFsdWUKLSAg
ICAgICAgICAgICAgICBpZiAobmFtZSA9PSAnc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVz
Jyk6Ci0gICAgICAgICAgICAgICAgICAgIHNldHRpbmcuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxs
RnJhbWVzID0gdmFsdWUKKyAgICB3aXRoIG9wZW4oaW5wdXQsICdyJykgYXMgZmlsZToKKyAgICAg
ICAgZm9yIGxpbmUgaW4gZmlsZToKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgo
JyMnKSBhbmQgbm90IGxpbmUuaXNzcGFjZSgpOgorCisgICAgICAgICAgICAgICAgKG5hbWUsIG9w
dGlvbnNTdHJpbmcpID0gbGluZS5yc3RyaXAoKS5zcGxpdCgnICcsIDEpCisKKyAgICAgICAgICAg
ICAgICBvcHRpb25zID0gcmUuc3BsaXQocicgKiwgKicsIG9wdGlvbnNTdHJpbmcpCisKKyAgICAg
ICAgICAgICAgICBzZXR0aW5nID0gU2V0dGluZyhuYW1lKQorICAgICAgICAgICAgICAgIGZvciBv
cHRpb24gaW4gb3B0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlKSA9IHJl
LnNwbGl0KHInICo9IConLCBvcHRpb24pCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09
ICd0eXBlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnR5cGUgPSB2YWx1ZQor
ICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSAnaW5pdGlhbCcpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0dGluZy5pbml0aWFsID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG5hbWUgPT0gJ2NvbmRpdGlvbmFsJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXR0
aW5nLmNvbmRpdGlvbmFsID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0g
J3NldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcycpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMgPSB2YWx1ZQorICAgICAg
ICAgICAgICAgICAgICBpZiAobmFtZSA9PSAnZ2V0dGVyJyk6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZXR0aW5nLmdldHRlciA9IHZhbHVlCiAKLSAgICAgICAgICAgICMgRklYTUU6IEFTU0VS
VCBzb21ldGhpbmcgYWJvdXQgc2V0dGluZy5pbml0aWFsCisgICAgICAgICAgICAgICAgIyBGSVhN
RTogQVNTRVJUIHNvbWV0aGluZyBhYm91dCBzZXR0aW5nLmluaXRpYWwKIAotICAgICAgICAgICAg
c2V0dGluZ3Nbc2V0dGluZy5uYW1lXSA9IHNldHRpbmcKKyAgICAgICAgICAgICAgICBzZXR0aW5n
c1tzZXR0aW5nLm5hbWVdID0gc2V0dGluZwogCiAgICAgcmV0dXJuIHNldHRpbmdzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9uIDIyMzYxMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgYWNjZWxl
cmF0ZWRDb21wb3NpdGVkQW5pbWF0aW9uc0VuYWJsZWQgaQogc2hvd0RlYnVnQm9yZGVycyBpbml0
aWFsPWZhbHNlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogc2hvd1JlcGFpbnRD
b3VudGVyIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiB2
aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyB0eXBlPURlYnVnT3ZlcmxheVJlZ2lvbnMsIGluaXRp
YWw9MAorc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yIGluaXRpYWw9ZmFsc2UKIAogIyBUaGlz
IGlzIGEgcXVpcmsgd2UgYXJlIHByby1hY3RpdmVseSBhcHBseWluZyB0byBvbGQgYXBwbGljYXRp
b25zLiBJdCBjaGFuZ2VzIGtleWJvYXJkIGV2ZW50IGRpc3BhdGNoaW5nLAogIyBtYWtpbmcga2V5
SWRlbnRpZmllciBhdmFpbGFibGUgb24ga2V5cHJlc3MgZXZlbnRzLCBtYWtpbmcgY2hhckNvZGUg
YXZhaWxhYmxlIG9uIGtleWRvd24va2V5dXAgZXZlbnRzLApAQCAtMzAzLDEwICszMDQsMzMgQEAg
dmlld3BvcnRGaXRFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAogYWxsb3dNZWRpYUNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgaW5pdGlhbD1mYWxzZQogCi1wYXlt
ZW50UmVxdWVzdEVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgY29uZGl0aW9uYWw9UEFZTUVOVF9SRVFV
RVNUCitzdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCBpbml0aWFsPWZhbHNlCisKK3RpbWVXaXRob3V0
TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzIHR5cGU9U2Vjb25kcywgaW5pdGlhbD0z
X3MgCisKK2ZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyBpbml0aWFsPWZhbHNlLCBzZXRO
ZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogCiBmb250TG9hZFRpbWluZ092ZXJyaWRlIHR5
cGU9Rm9udExvYWRUaW1pbmdPdmVycmlkZSwgaW5pdGlhbD1Gb250TG9hZFRpbWluZ092ZXJyaWRl
OjpOb25lCiBzaG91bGRJZ25vcmVGb250TG9hZENvbXBsZXRpb25zIGluaXRpYWw9ZmFsc2UKIAot
c3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQgaW5pdGlhbD1mYWxzZQorcGF5bWVudFJlcXVlc3RFbmFi
bGVkIGluaXRpYWw9ZmFsc2UsIGNvbmRpdGlvbmFsPVBBWU1FTlRfUkVRVUVTVAorYXBwbGVQYXlF
bmFibGVkIGluaXRpYWw9ZmFsc2UsIGNvbmRpdGlvbmFsPUFQUExFX1BBWQorYXBwbGVQYXlDYXBh
YmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQgaW5pdGlhbD10cnVlLCBjb25kaXRpb25hbD1BUFBMRV9Q
QVkKKworamF2YUVuYWJsZWQgaW5pdGlhbD1mYWxzZSwgZ2V0dGVyPWlzSmF2YUVuYWJsZWQKK2ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcyBpbml0aWFsPXRydWUsIGdldHRlcj1pc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcworCitmb250UmVuZGVyaW5nTW9kZSB0eXBlPUZvbnRSZW5kZXJpbmdNb2Rl
LCBpbml0aWFsPUZvbnRSZW5kZXJpbmdNb2RlOjpOb3JtYWwKKworcHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXMgaW5pdGlhbD1mYWxzZQorCitmb3JjZVBlbmRpbmdXZWJHTFBvbGljeSBpbml0aWFsPWZh
bHNlLCBnZXR0ZXI9aXNGb3JjZVBlbmRpbmdXZWJHTFBvbGljeQorCittZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5IHR5cGU9U3RyaW5nLCBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElB
CittZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5IHR5cGU9U3RyaW5nLCBjb25k
aXRpb25hbD1NRURJQV9TVFJFQU0KKworIyBGSVhNRTogVGhpcyBxdWlyayBpcyBuZWVkZWQgYmVj
YXVzZSBvZiBSYWRhciA0Njc0NTM3IGFuZCA1MjExMjcxLiBXZSBuZWVkIHRvIHBoYXNlIGl0IG91
dCBvbmNlIEFkb2JlCisjIGNhbiBmaXggdGhlIGJ1ZyBmcm9tIHRoZWlyIGVuZC4KK25lZWRzQWRv
YmVGcmFtZVJlbG9hZGluZ1F1aXJrIGluaXRpYWw9ZmFsc2UsIGdldHRlcj1uZWVkc0Fjcm9iYXRG
cmFtZVJlbG9hZGluZ1F1aXJrCiAKK3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIGluaXRpYWw9
ZmFsc2UsIGdldHRlcj1pc1RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkLCBjb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAJKHJldmlz
aW9uIDIyMzYxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDI4ICsxNDYsMTcgQEAgU2V0dGluZ3NCYXNlOjpTZXR0aW5nc0Jh
c2UoUGFnZSogcGFnZSkKICAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxheW91
dFNjaGVkdWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChET01U
aW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQotICAgICwgbV9pc0phdmFFbmFibGVkKGZh
bHNlKQotICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyh0cnVlKQogICAgICwgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX2FyZUltYWdlc0VuYWJsZWQo
dHJ1ZSkKLSAgICAsIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoZmFsc2UpCiAgICAgLCBtX2Fy
ZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1NjcmlwdEVuYWJsZWQoZmFsc2UpCi0g
ICAgLCBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGZhbHNlKQogICAgICwgbV91c2Vz
UGFnZUNhY2hlKGZhbHNlKQotICAgICwgbV9mb250UmVuZGVyaW5nTW9kZSgwKQotICAgICwgbV9z
aG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX2JhY2tncm91bmRTaG91
bGRFeHRlbmRCZXlvbmRQYWdlKGZhbHNlKQogICAgICwgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQo
ZmFsc2UpCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIG1fdG91Y2hFdmVudEVtdWxh
dGlvbkVuYWJsZWQoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
cigqdGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQog
ICAgICwgbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSkKICAgICAs
IG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKGZhbHNlKQotICAgICwg
bV9mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMoZmFsc2UpCi0gICAgLCBtX2ZvcmNlUGVu
ZGluZ1dlYkdMUG9saWN5KGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJl
ZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwogICAgIC8v
IGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkBAIC0zMzQsMTYgKzMyMyw2IEBAIHZvaWQg
U2V0dGluZ3NCYXNlOjpzZXRTY3JpcHRFbmFibGVkKGJvb2wKICNlbmRpZgogfQogCi12b2lkIFNl
dHRpbmdzQmFzZTo6c2V0SmF2YUVuYWJsZWQoYm9vbCBpc0phdmFFbmFibGVkKQotewotICAgIG1f
aXNKYXZhRW5hYmxlZCA9IGlzSmF2YUVuYWJsZWQ7Ci19Ci0KLXZvaWQgU2V0dGluZ3NCYXNlOjpz
ZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
cykKLXsKLSAgICBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzID0gaXNKYXZhRW5hYmxlZEZv
ckxvY2FsRmlsZXM7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRJbWFnZXNFbmFibGVkKGJv
b2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBtX2FyZUltYWdlc0VuYWJsZWQgPSBhcmVJbWFn
ZXNFbmFibGVkOwpAQCAtMzUyLDE2ICszMzEsNiBAQCB2b2lkIFNldHRpbmdzQmFzZTo6c2V0SW1h
Z2VzRW5hYmxlZChib29sCiAgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0UHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoYm9vbCBwcmVmZXJNSU1FVHlwZUZvckltYWdlcykKLXsKLSAgICBtX3ByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzID0gcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXM7Ci19Ci0KLXZvaWQgU2V0
dGluZ3NCYXNlOjpzZXRGb3JjZVBlbmRpbmdXZWJHTFBvbGljeShib29sIGZvcmNlZCkKLXsKLSAg
ICBtX2ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5ID0gZm9yY2VkOwotfQotCiB2b2lkIFNldHRpbmdz
QmFzZTo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkKIHsKICAgICBp
ZiAobV9hcmVQbHVnaW5zRW5hYmxlZCA9PSBhcmVQbHVnaW5zRW5hYmxlZCkKQEAgLTM4MiwxMyAr
MzUxLDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFVzZXJTdHlsZVNoZWV0TG9jYQogICAgICAg
ICBtX3BhZ2UtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7CiB9CiAKLS8vIEZJWE1F
OiBUaGlzIHF1aXJrIGlzIG5lZWRlZCBiZWNhdXNlIG9mIFJhZGFyIDQ2NzQ1MzcgYW5kIDUyMTEy
NzEuIFdlIG5lZWQgdG8gcGhhc2UgaXQgb3V0IG9uY2UgQWRvYmUKLS8vIGNhbiBmaXggdGhlIGJ1
ZyBmcm9tIHRoZWlyIGVuZC4KLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXROZWVkc0Fkb2JlRnJhbWVS
ZWxvYWRpbmdRdWlyayhib29sIHNob3VsZE5vdFJlbG9hZElGcmFtZXNGb3JVbmNoYW5nZWRTUkMp
Ci17Ci0gICAgbV9uZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlyayA9IHNob3VsZE5vdFJlbG9h
ZElGcmFtZXNGb3JVbmNoYW5nZWRTUkM7Ci19Ci0KIHZvaWQgU2V0dGluZ3NCYXNlOjpzZXRNaW5p
bXVtRE9NVGltZXJJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogewogICAgIGF1dG8gb2xkVGlt
ZXJJbnRlcnZhbCA9IHN0ZDo6ZXhjaGFuZ2UobV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbCwgaW50
ZXJ2YWwpOwpAQCAtNDIzLDIwICszODUsNiBAQCB2b2lkIFNldHRpbmdzQmFzZTo6c2V0VXNlc1Bh
Z2VDYWNoZShib29sCiAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVO
b3coMCwgUHJ1bmluZ1JlYXNvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRG
b250UmVuZGVyaW5nTW9kZShGb250UmVuZGVyaW5nTW9kZSBtb2RlKQotewotICAgIGlmIChmb250
UmVuZGVyaW5nTW9kZSgpID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ZvbnRSZW5k
ZXJpbmdNb2RlID0gc3RhdGljX2Nhc3Q8aW50Pihtb2RlKTsKLSAgICBpZiAobV9wYWdlKQotICAg
ICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwotfQotCi1Gb250
UmVuZGVyaW5nTW9kZSBTZXR0aW5nc0Jhc2U6OmZvbnRSZW5kZXJpbmdNb2RlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFJlbmRlcmluZ01vZGU+KG1fZm9udFJlbmRlcmlu
Z01vZGUpOwotfQotCiB2b2lkIFNldHRpbmdzQmFzZTo6c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVk
KGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKQogewogICAgIGlmIChtX2Ruc1ByZWZldGNoaW5n
RW5hYmxlZCA9PSBkbnNQcmVmZXRjaGluZ0VuYWJsZWQpCkBAIC00NDcsMTQgKzM5NSw2IEBAIHZv
aWQgU2V0dGluZ3NCYXNlOjpzZXRETlNQcmVmZXRjaGluZ0VuYWIKICAgICAgICAgbV9wYWdlLT5k
bnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0
U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobV9z
aG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKLSAgICBtX3Nob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA9IGVuYWJsZWQ7Ci19
Ci0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiB2b2lkIFNldHRpbmdzQmFzZTo6c2V0UmVz
b3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKQEAgLTY0MCwxNiArNTgw
LDYgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEhpZGRlblBhZ2VDU1NBbmltYQogICAgICAgICBt
X3BhZ2UtPmhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uU3RhdGVDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMo
Ym9vbCBwcmVmZXJQaWN0b2dyYXBocykKLXsKLSAgICBpZiAobV9mb250RmFsbGJhY2tQcmVmZXJz
UGljdG9ncmFwaHMgPT0gcHJlZmVyUGljdG9ncmFwaHMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzID0gcHJlZmVyUGljdG9ncmFwaHM7Ci0g
ICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxG
cmFtZXMoKTsKLX0KLQogdm9pZCBTZXR0aW5nc0Jhc2U6OnNldExvd1Bvd2VyVmlkZW9BdWRpb0J1
ZmZlclNpemVFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBnTG93UG93ZXJWaWRlb0F1ZGlvQnVm
ZmVyU2l6ZUVuYWJsZWQgPSBmbGFnOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
c0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5o
CShyZXZpc2lvbiAyMjM2MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMTkgKzE1MCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjcmlwdEVuYWJsZWQoYm9vbCk7CiAKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0SmF2YUVuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBpc0phdmFFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0phdmFFbmFibGVkOyB9Ci0KLSAgICAvLyBUaGlzIHNldHRpbmdz
IGlzIG9ubHkgY29uc3VsdGVkIGlmIGlzSmF2YUVuYWJsZWQoKSByZXR1cm5zIHRydWU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCk7Ci0g
ICAgYm9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faXNK
YXZhRW5hYmxlZEZvckxvY2FsRmlsZXM7IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SW1hZ2VzRW5hYmxlZChib29sKTsKICAgICBib29sIGFyZUltYWdlc0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2FyZUltYWdlc0VuYWJsZWQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoYm9vbCk7Ci0gICAgYm9vbCBwcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmVyTUlNRVR5cGVGb3JJbWFnZXM7IH0K
LQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCk7CiAgICAg
Ym9vbCBhcmVQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlUGx1Z2luc0VuYWJs
ZWQ7IH0KIApAQCAtMTcyLDkgKzE2Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJik7CiAgICAgY29uc3QgVVJM
JiB1c2VyU3R5bGVTaGVldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU3R5bGVTaGVl
dExvY2F0aW9uOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5lZWRzQWRvYmVGcmFt
ZVJlbG9hZGluZ1F1aXJrKGJvb2wpOwotICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRp
bmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcms7
IH0KLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bURPTVRpbWVySW50ZXJ2YWwo
U2Vjb25kcyk7IC8vIEluaXRpYWxpemVkIHRvIERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVy
dmFsKCkuCiAgICAgU2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJbnRlcnZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7IH0KIApAQCAtMTg5LDEyICsxNzYsNiBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwog
ICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VDYWNoZTsg
fQogICAgICAgICAKLSAgICB2b2lkIHNldEZvbnRSZW5kZXJpbmdNb2RlKEZvbnRSZW5kZXJpbmdN
b2RlIG1vZGUpOwotICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKCkgY29u
c3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3dUaWxlZFNjcm9sbGluZ0luZGlj
YXRvcihib29sKTsKLSAgICBib29sIHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOyB9Ci0KICNpZiBFTkFCTEUo
UkVTT1VSQ0VfVVNBR0UpCiAgICAgYm9vbCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoKSBj
b25zdCB7IHJldHVybiBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wpOwpAQCAt
MjQ4LDExICsyMjksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihib29sKTsKICAgICBzdGF0aWMgYm9vbCB1c2VzTW9j
a1Njcm9sbEFuaW1hdG9yKCk7CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQg
c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgYm9vbCBpc1RvdWNoRXZlbnRFbXVs
YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZDsgfQotI2VuZGlmCi0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBTZWN1
cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKQEAgLTI2MiwxNSAr
MjM4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKIAotICAg
IHZvaWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoU2Vj
b25kcyB0aW1lKSB7IG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJv
bHMgPSB0aW1lOyB9Ci0gICAgU2Vjb25kcyB0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVI
aWRpbmdDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50
QmVmb3JlSGlkaW5nQ29udHJvbHM7IH0KLQogICAgIGJvb2wgaGlkZGVuUGFnZUNTU0FuaW1hdGlv
blN1c3BlbnNpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oaWRkZW5QYWdlQ1NTQW5pbWF0
aW9uU3VzcGVuc2lvbkVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhpZGRl
blBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZChib29sKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKGJvb2wpOwotICAg
IGJvb2wgZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKCkgY29uc3QgeyByZXR1cm4gbV9m
b250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHM7IH0KLQogICAgIHN0YXRpYyBib29sIGxvd1Bv
d2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkgeyByZXR1cm4gZ0xvd1Bvd2VyVmlkZW9B
dWRpb0J1ZmZlclNpemVFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0TG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoYm9vbCk7CiAKQEAgLTMwNCwx
NiArMjc0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZChib29sIGVuYWJsZWQpIHsgZ0N1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCA9
IGVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBjdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KSB7IHJldHVybiBnQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgZGVmYXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOwot
Ci0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBzZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGRpcmVjdG9yeTsgfQotICAgIGNvbnN0IFN0cmluZyYgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsgfQotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2
b2lkIHNldE1lZGlhRGV2aWNlSWRlbnRpZmllclN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnkpIHsgbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5ID0g
ZGlyZWN0b3J5OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBtZWRpYURldmljZUlkZW50aWZpZXJTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9y
YWdlRGlyZWN0b3J5OyB9Ci0KICAgICBzdGF0aWMgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZChib29sKTsKIApAQCAtMzIxLDE3ICsyODMsNiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25u
ZWN0aW9uKGJvb2wpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIGJvb2wg
YXBwbGVQYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsZVBheUVuYWJsZWQ7IH0KLSAg
ICB2b2lkIHNldEFwcGxlUGF5RW5hYmxlZChib29sIGFwcGxlUGF5RW5hYmxlZCkgeyBtX2FwcGxl
UGF5RW5hYmxlZCA9IGFwcGxlUGF5RW5hYmxlZDsgfQotCi0gICAgYm9vbCBhcHBsZVBheUNhcGFi
aWxpdHlEaXNjbG9zdXJlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGVQYXlDYXBhYmls
aXR5RGlzY2xvc3VyZUFsbG93ZWQ7IH0KLSAgICB2b2lkIHNldEFwcGxlUGF5Q2FwYWJpbGl0eURp
c2Nsb3N1cmVBbGxvd2VkKGJvb2wgYXBwbGVQYXlDYXBhYmlsaXR5RGlzY2xvc3VyZUFsbG93ZWQp
IHsgbV9hcHBsZVBheUNhcGFiaWxpdHlEaXNjbG9zdXJlQWxsb3dlZCA9IGFwcGxlUGF5Q2FwYWJp
bGl0eURpc2Nsb3N1cmVBbGxvd2VkOyB9Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Rm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koYm9vbCk7Ci0gICAgYm9vbCBpc0ZvcmNlUGVu
ZGluZ1dlYkdMUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGlj
eTsgfQotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUo
KTsKIApAQCAtMzU0LDM1ICszMDUsMjEgQEAgcHJvdGVjdGVkOgogICAgIFNlY29uZHMgbV9sYXlv
dXRJbnRlcnZhbDsKICAgICBTZWNvbmRzIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7CiAKLSAg
ICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7Ci0gICAgYm9vbCBtX2lzSmF2YUVuYWJsZWRGb3JM
b2NhbEZpbGVzIDogMTsKICAgICBib29sIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5IDogMTsK
ICAgICBib29sIG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7Ci0gICAgYm9vbCBtX3ByZWZlck1JTUVU
eXBlRm9ySW1hZ2VzIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAg
IGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwotICAgIGJvb2wgbV9uZWVkc0Fkb2JlRnJhbWVS
ZWxvYWRpbmdRdWlyayA6IDE7CiAgICAgYm9vbCBtX3VzZXNQYWdlQ2FjaGUgOiAxOwotICAgIHVu
c2lnbmVkIG1fZm9udFJlbmRlcmluZ01vZGUgOiAxOwogICAgIGJvb2wgbV9zaG93VGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3IgOiAxOwogICAgIGJvb2wgbV9iYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5
b25kUGFnZSA6IDE7CiAgICAgYm9vbCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCA6IDE7Ci0KLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5h
YmxlZCA6IDE7Ci0jZW5kaWYKICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCA6IDE7CiAKLSAgICBTZWNvbmRzIG1fdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMgeyAzX3MgfTsKLQogICAgIFRpbWVyIG1fc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3NUaW1lcjsKICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCgp
OwogCiAgICAgYm9vbCBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkIDogMTsK
ICAgICBib29sIG1faGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkIDogMTsK
LSAgICBib29sIG1fZm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzIDogMTsKLQotICAgIGJv
b2wgbV9mb3JjZVBlbmRpbmdXZWJHTFBvbGljeSA6IDE7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
VVNBR0UpCiAgICAgYm9vbCBtX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSB7IGZhbHNlIH07
CkBAIC00MTgsMjIgKzM1NSwxMiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBnTWFuYWdlQXVkaW9TZXNzaW9uOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIGdDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQ7Ci0KLSNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBTdHJp
bmcgbV9tZWRpYURldmljZUlkZW50aWZpZXJTdG9yYWdlRGlyZWN0b3J5OwogICAgIHN0YXRpYyBi
b29sIGdNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdNZWRpYUNh
cHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUFBM
RV9QQVkpCi0gICAgYm9vbCBtX2FwcGxlUGF5RW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2FwcGxlUGF5Q2FwYWJpbGl0eURpc2Nsb3N1cmVBbGxvd2VkIHsgdHJ1ZSB9OwotI2VuZGlmCi0K
ICAgICBzdGF0aWMgYm9vbCBnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQ7CiAg
ICAgc3RhdGljIGJvb2wgZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkRW5hYmxlZDsKICAg
ICBzdGF0aWMgYm9vbCBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>