<?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>107073</bug_id>
          
          <creation_ts>2013-01-16 17:47:49 -0800</creation_ts>
          <short_desc>[TexMap] Remove GraphicsLayer in TextureMapperLayer.</short_desc>
          <delta_ts>2013-01-30 02:22:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105787</dependson>
    
    <dependson>107090</dependson>
    
    <dependson>107099</dependson>
    
    <dependson>107629</dependson>
          <blocked>103854</blocked>
    
    <blocked>108312</blocked>
    
    <blocked>107912</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>808899</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 17:47:49 -0800</bug_when>
    <thetext>Remove the dependency of TextureMapperLayer on GraphicsLayer. It is needed to remove GraphicsLayerTextureMapper in LayerTreeRenderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808921</commentid>
    <comment_count>1</comment_count>
      <attachid>183079</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 18:03:19 -0800</bug_when>
    <thetext>Created attachment 183079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808922</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 18:05:16 -0800</bug_when>
    <thetext>This patch depends on Bug 105787. Could you review Bug 105787 firstly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809019</commentid>
    <comment_count>3</comment_count>
      <attachid>183105</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 20:28:04 -0800</bug_when>
    <thetext>Created attachment 183105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809099</commentid>
    <comment_count>4</comment_count>
      <attachid>183125</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 22:50:40 -0800</bug_when>
    <thetext>Created attachment 183125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809101</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 22:53:17 -0800</bug_when>
    <thetext>This patch needs to land Bug 107090.
Without Bug 107090, TexMap draws with wrong anchorPoint, after this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810173</commentid>
    <comment_count>6</comment_count>
      <attachid>183359</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 20:40:20 -0800</bug_when>
    <thetext>Created attachment 183359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810258</commentid>
    <comment_count>7</comment_count>
      <attachid>183379</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 22:33:36 -0800</bug_when>
    <thetext>Created attachment 183379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810800</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-18 10:32:37 -0800</bug_when>
    <thetext>Is this up for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811233</commentid>
    <comment_count>9</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-18 18:25:44 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is this up for review?

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811273</commentid>
    <comment_count>10</comment_count>
      <attachid>183595</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-18 20:11:25 -0800</bug_when>
    <thetext>Created attachment 183595
=rebase upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812911</commentid>
    <comment_count>11</comment_count>
      <attachid>183595</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-22 04:15:18 -0800</bug_when>
    <thetext>Comment on attachment 183595
=rebase upstream

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Covered by existing variables tests.

Remove the word &quot;variables&quot;

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:102
&gt; +    notifyChange(ContentsDisplayChange);

This seems like it should be in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813643</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-22 18:14:09 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 183595 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183595&amp;action=review

Thank you for review!

&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        Covered by existing variables tests.
&gt; 
&gt; Remove the word &quot;variables&quot;

OK.

Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:102
&gt; &gt; +    notifyChange(ContentsDisplayChange);
&gt; 
&gt; This seems like it should be in a different patch.

I&apos;ll make it in a different patch.

After landing Bug 105787, I&apos;ll commit.

Could you review Bug 107099 that blocks this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816206</commentid>
    <comment_count>13</comment_count>
      <attachid>184660</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 21:56:57 -0800</bug_when>
    <thetext>Created attachment 184660
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816401</commentid>
    <comment_count>14</comment_count>
      <attachid>184706</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 02:10:59 -0800</bug_when>
    <thetext>Created attachment 184706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819859</commentid>
    <comment_count>15</comment_count>
      <attachid>185409</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 00:03:10 -0800</bug_when>
    <thetext>Created attachment 185409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819913</commentid>
    <comment_count>16</comment_count>
      <attachid>185424</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 01:04:52 -0800</bug_when>
    <thetext>Created attachment 185424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819915</commentid>
    <comment_count>17</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 01:08:46 -0800</bug_when>
    <thetext>The previous patch has lots of somethinkg like backing store because of my mistake. The backing store stub is already landed in Bug 107099.

This patch does not have backing store code, and focuses on removing GraphicsLayer in TextureMapperLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819986</commentid>
    <comment_count>18</comment_count>
      <attachid>185424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 02:22:19 -0800</bug_when>
    <thetext>Comment on attachment 185424
Patch

Clearing flags on attachment: 185424

Committed r141238: &lt;http://trac.webkit.org/changeset/141238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819987</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 02:22:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183079</attachid>
            <date>2013-01-16 18:03:19 -0800</date>
            <delta_ts>2013-01-16 19:42:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130117110016.patch</filename>
            <type>text/plain</type>
            <size>45064</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY1Yzc0ZDY5NWI0Nzhk
MzhiY2U4ZThmZmUwZmY1YTQyNGM3YjZjNy4uYWRlY2VlYjI0NmFlZmE5MmIzYmJiNDYwODI1YWI5
M2Q3ZDkyYzg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxMy0wMS0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRC
ZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVw
bGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFByZXNl
cnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6CisgICAgICAgICAgICBTZXQgQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgICAgIENyZWF0ZSBhIGJhY2tp
bmcgc3RvcmUgYW5kIHNldCBpdCB0byBUZXh0dXJlTWFwcGVyTGF5ZXIgYmVmb3JlIGNvbW1pdExh
eWVyQ2hhbmdlcygpLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXllclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAg
ICAgIEZsdXNoIHBlbmRpbmcgY2hhbmdlcyBpbnRvIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAo
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBsaWNh
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBhaW50Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisy
MDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAg
ICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDRhZGRhOGZiZjlkZjljOTBhMjFm
NzBiYjdjZjNjN2E5Y2VlZTdhNGEuLjAwZTA5NDkwYmNkMDMzM2ZjNGUxM2RkMzZjNjc5ZjA1NDhh
MTkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMy0wMS0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggdG8gdXNlIHRvVGV4dHVyZU1hcHBlckxheWVyKCkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6
CisKKzIwMTMtMDEtMTYgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CisKICAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRl
ciBhbmQgcmVwYWludCBjb3VudC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2ZkYmIzYTVmYzk4NWIz
MTEwOTUxN2ZkMGVmOTQ0YzkwYTMwMDkzYS4uZGY5MGU2MjRkYWM4ZTFiZDU3NzYwMzgyYmQ0MDEx
YWUyMGQ1NDNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wu
Y3BwOgorCisyMDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCiAgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBi
b3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBiNDM3YTlkYmY5Njg4
MTZiMmFlM2QxMTlmYzBkYjFiNjI1M2Y1ZjAxLi44OTFkNmQzMTJlMmNkOTYwMzdkNjQ2NDA4MzEw
YTkyZmM4ZTMyMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDoK
KworMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KwogICAgICAgICBbVGV4bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVy
IGFuZCByZXBhaW50IGNvdW50LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA1Nzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IDJjZGJiOGQ4ODRmOWRhNWViODkyYzA4NzYwYTc0ZDBlZWJjZDliMWQuLmRh
ZTU3NDM1ZmIzZDZiNTc1MTFhZTQ0Njk1NDQxNzAzNDhkZDQzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDogMDsKK30KKwogUGFzc093blB0cjxH
cmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAoIWZhY3Rv
cnkpCkBAIC00NSw3ICs1MCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiAgICAgOiBHcmFw
aGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbGF5ZXIoYWRvcHRQdHIobmV3IFRleHR1cmVNYXBw
ZXJMYXllcigpKSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCi0gICAgLCBt
X2NoYW5nZU1hc2soMCkKKyAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMpCiAgICAgLCBtX25l
ZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1faGFzT3duQmFja2luZ1N0b3JlKHRydWUpCiAgICAg
LCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKQEAgLTU1LDcgKzYwLDcgQEAgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWUKIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayBjaGFuZ2VNYXNrKQordm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKENoYW5nZU1hc2sgY2hh
bmdlTWFzaykKIHsKICAgICBtX2NoYW5nZU1hc2sgfD0gY2hhbmdlTWFzazsKICAgICBpZiAoIWNs
aWVudCgpKQpAQCAtODYsNyArOTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXkoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlzcGxh
eSA9IHRydWU7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFpbnRS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSkpOwogfQogCkBAIC05NCw3ICs5OSw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiAq
Lwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNOZWVkc0Rpc3Bs
YXkoKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFu
Z2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50c0Rpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJl
cGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47
CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNw
bGF5Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3LDcgKzEy
Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUlu
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikK
IHsKICAgICBpZiAoR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7Ci0gICAg
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAg
ICAgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NM
YXllcio+JiBjaGlsZAogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENo
aWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFu
Z2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAtMTM2LDE1
ICsxNDEsMTUgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRD
aGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFw
aGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwog
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xh
eWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVyOjphZGRD
aGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFu
Z2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsxNTcsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNz
TGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2li
bGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBzaWJsaW5n
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0xNjAsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkK
IGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xh
eWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYgKEdyYXBo
aWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAg
bm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUpCiAgICAg
aWYgKHZhbHVlID09IG1hc2tMYXllcigpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0TWFza0xheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpNYXNrTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5ZXJDaGFu
Z2UpOwogCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE5NCw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVy
KEdyYXBoaWNzTGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVy
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBsaWNhTGF5
ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwogfQogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiB2YWx1
ZSkKICAgICBpZiAodmFsdWUgPT0gcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpQb3NpdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBvc2l0aW9u
Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDksNyArMjE0
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9pbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2ludENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFuY2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yMjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFNpemUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAg
bWFza0xheWVyKCktPnNldFNpemUodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OlNpemVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdlKTsKIH0K
IAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6
c2V0VHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpUcmFuc2Zvcm1DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFuZ2UpOwog
fQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeAogICAgIGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5zZm9ybSgp
KQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zv
cm0odmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVu
VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFu
Z2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsyNTgsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHZh
bHVlKQogICAgIGlmICh2YWx1ZSA9PSBwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlByZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoUHJlc2VydmVzM0RDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkK
QEAgLTI2Myw3ICsyNjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrc1RvQm91bmRzKGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9Cb3VuZHMo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMo
dmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tzVG9Cb3Vu
ZHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09IGRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoRHJhd3NDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRE
cmF3c0NvbnRlbnQodmFsdWUpOwogfQogCkBAIC0yODIsNyArMjg3LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09IGNvbnRlbnRzQXJlVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudHNWaXNpYmxlQ2hhbmdl
KTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNWaXNpYmxlQ2hhbmdlKTsKICAgICBHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1Zpc2libGUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkK
ICAgICAgICAgbWFza0xheWVyKCktPnNldENvbnRlbnRzVmlzaWJsZSh2YWx1ZSk7CkBAIC0yOTQs
NyArMjk5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNP
cGFxdWUoYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gY29udGVudHNPcGFxdWUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNv
bnRlbnRzT3BhcXVlQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNPcGFxdWVDaGFu
Z2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKHZhbHVlKTsKIH0KIApA
QCAtMzA1LDcgKzMxMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eShib29sIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBiYWNrZmFjZVZp
c2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tm
YWNlVmlzaWJpbGl0eSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQmFja2ZhY2VW
aXNpYmlsaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0z
MTUsNyArMzIwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0
eShmbG9hdCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gb3BhY2l0eSgpKQogICAgICAgICByZXR1
cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6T3BhY2l0eUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KE9wYWNpdHlDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTMy
NSw3ICszMzAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1JlY3QoY29uc3QgSW50UmVjdCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IGNvbnRlbnRzUmVj
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c1Jl
Y3RDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50c1JlY3RDaGFuZ2UpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NvbGlkQ29sb3IgPSBjb2xvcjsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoQmFja2dyb3VuZENvbG9yQ2hhbmdlKTsKIH0KIAogCkBAIC0zNjMsNyArMzY4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdl
KiBpbWFnZSkKICAgICB9CiAKICAgICBzZXRDb250ZW50c1RvTWVkaWEobV9jb21wb3NpdGVkSW1h
Z2UuZ2V0KCkpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRD
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogfQogCkBAIC0zNzMsNyArMzc4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb01lZGlhKFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvTWVkaWEobWVkaWEpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkNvbnRlbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hh
bmdlKTsKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIApAQCAtMzgzLDcgKzM4OCw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dE
ZWJ1Z0JvcmRlcihzaG93KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpE
ZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2Up
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIoYm9vbCBzaG93KQpAQCAtMzkyLDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAg
KEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQwMCwxNyArNDA1LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAgIHVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7Ci0gICAgbV9sYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlzKTsKKyAgICAgICAgcHJlcGFyZUJhY2tpbmdT
dG9yZSgpOworICAgIGNvbW1pdExheWVyQ2hhbmdlcygpOworICAgIG1fbGF5ZXItPnN5bmNBbmlt
YXRpb25zKCk7CisgICAgLy8gdXBkYXRlQmFja2luZ1N0b3JlKCkgbXVzdCBiZSBwZXJmb3JtZWQg
YWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVCYWNraW5nU3RvcmUoKSBuZWVkcyB0byBnZXQgVGV4dHVy
ZU1hcHBlciBmcm9tIFRleHR1cmVNYXBwZXJMYXllci4KICAgICBpZiAobV9oYXNPd25CYWNraW5n
U3RvcmUpCiAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGRpZEZsdXNoQ29tcG9z
aXRpbmdTdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHsKICAgICBBU1NFUlQobV9oYXNPd25CYWNr
aW5nU3RvcmUpOworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQorICAgICAgICBt
X2JhY2tpbmdTdG9yZS5jbGVhcigpOworICAgIGVsc2UgeworICAgICAgICBpZiAoIW1fYmFja2lu
Z1N0b3JlKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgIH0KKyAgICBtX2xheWVyLT5zZXRCYWNraW5nU3Rv
cmUobV9iYWNraW5nU3RvcmUpOwogCisgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291
bnQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdC
b3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9y
ZSk7CiAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAg
ICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAKQEAgLTQxOCw3ICs0MzcsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3Vu
dCgpCiAgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAm
JiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOwogICAg
IGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CiAgICAg
ICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4
dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFz
ayB8PSBSZXBhaW50Q291bnRDaGFuZ2U7CiAgICAgfQogfQogCkBAIC00MjgsNyArNDQ3LDk2IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENv
bG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiAgICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0
aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KICAgICBt
X2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0
aCAqIDI7Ci0gICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1
YWxzQ2hhbmdlOworICAgIG1fY2hhbmdlTWFzayB8PSBEZWJ1Z1Zpc3VhbHNDaGFuZ2U7Cit9CisK
K3N0YXRpYyB2b2lkIHRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGxheWVycywgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+JiB0ZXhtYXBM
YXllcnMpCit7CisgICAgdGV4bWFwTGF5ZXJzLnJlc2VydmVDYXBhY2l0eShsYXllcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkKKyAgICAg
ICAgdGV4bWFwTGF5ZXJzLmFwcGVuZCh0b1RleHR1cmVNYXBwZXJMYXllcihsYXllcnNbaV0pKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2Vz
KCkKK3sKKyAgICBpZiAobV9jaGFuZ2VNYXNrID09IE5vQ2hhbmdlcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdlKSB7CisgICAgICAgIFZl
Y3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiB0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbjsKKyAg
ICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY2hpbGRyZW4oKSwgdGV4dHVyZU1hcHBl
ckxheWVyQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5zZXRDaGlsZHJlbih0ZXh0dXJlTWFw
cGVyTGF5ZXJDaGlsZHJlbik7CisgICAgfQorCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tM
YXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza0xheWVyKHRvVGV4dHVyZU1hcHBl
ckxheWVyKG1hc2tMYXllcigpKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUmVwbGljYUxh
eWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRSZXBsaWNhTGF5ZXIodG9UZXh0dXJlTWFw
cGVyTGF5ZXIocmVwbGljYUxheWVyKCkpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBQb3Np
dGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CisK
KyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5jaG9yUG9pbnRDaGFuZ2UpCisgICAgICAgIG1fbGF5
ZXItPnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIFNpemVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFNpemUoc2l6ZSgpKTsKKworICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBUcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNl
dFByZXNlcnZlczNEKHByZXNlcnZlczNEKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENo
aWxkcmVuVHJhbnNmb3JtQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRUcmFuc2Zvcm0odHJh
bnNmb3JtKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFByZXNlcnZlczNEQ2hhbmdlKQor
ICAgICAgICBtX2xheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgp
KTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1JlY3RDaGFuZ2UpCisgICAgICAg
IG1fbGF5ZXItPnNldENvbnRlbnRzUmVjdChjb250ZW50c1JlY3QoKSk7CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgTWFza3NUb0JvdW5kc0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFz
a3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERy
YXdzQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdz
Q29udGVudCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1Zpc2libGVDaGFu
Z2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShjb250ZW50c0FyZVZpc2li
bGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpCisg
ICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKGNvbnRlbnRzT3BhcXVlKCkpOworCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSkKKyAgICAgICAg
bV9sYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJhY2tmYWNlVmlzaWJpbGl0eSgpKTsKKwor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBPcGFjaXR5Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRPcGFjaXR5KG9wYWNpdHkoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRTb2xpZENvbG9yKHNvbGlkQ29sb3Io
KSk7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZp
bHRlckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworI2Vu
ZGlmCisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQorICAgICAg
ICBtX2xheWVyLT5zZXREZWJ1Z1Zpc3VhbHMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSwgZGVidWdC
b3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCksIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVy
KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAg
ICAgbV9sYXllci0+c2V0UmVwYWludENvdW50KHJlcGFpbnRDb3VudCgpKTsKKworICAgIGlmICht
X2NoYW5nZU1hc2sgJiBDb250ZW50Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50
c0xheWVyKHBsYXRmb3JtTGF5ZXIoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5pbWF0
aW9uQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRpb25zKG1fYW5pbWF0aW9ucyk7
CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRml4ZWRUb1ZpZXdwb3JDaGFuZ2UpCisgICAgICAg
IG1fbGF5ZXItPnNldEZpeGVkVG9WaWV3cG9ydChmaXhlZFRvVmlld3BvcnQoKSk7CisKKyAgICBt
X2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5o
KQpAQCAtNDQ4LDI4ICs1NTYsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgY2hp
bGRyZW4oKVtpXS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCi12b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQotewotICAg
IG1fY2hhbmdlTWFzayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3Jl
KTsKLSAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7Ci0gICAgbV9sYXllci0+c2V0QmFja2luZ1N0
b3JlKG1fYmFja2luZ1N0b3JlKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCi17CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciA9IG1fbGF5ZXItPnRleHR1cmVNYXBwZXIoKTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7
Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9iYWNr
aW5nU3RvcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdT
dG9yZSk7CiAKICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSk7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxh
eSkKQEAgLTQ3Nyw5ICs1NzUsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpw
cmVwYXJlQmFja2luZ1N0b3JlKCkKICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5n
U3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotCiAjaWYg
UExBVEZPUk0oUVQpCiAgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwogI2VuZGlmCkBAIC01MTAsNyAr
NjA1LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKICAgICAgICAgbGlzdHNNYXRjaCA9IHZh
bGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZUxpc3QsIGhhc0JpZ1JvdGF0aW9uKSA+PSAw
OwogCiAgICAgbV9hbmltYXRpb25zLmFkZChHcmFwaGljc0xheWVyQW5pbWF0aW9uKGtleWZyYW1l
c05hbWUsIHZhbHVlTGlzdCwgYm94U2l6ZSwgYW5pbSwgV1RGOjpjdXJyZW50VGltZSgpIC0gdGlt
ZU9mZnNldCwgbGlzdHNNYXRjaCkpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5
ZXI6OkFuaW1hdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFuaW1hdGlvbkNoYW5nZSk7
CiAgICAgbV9hbmltYXRpb25TdGFydGVkVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNTE4LDcgKzYxMyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0CiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBo
aWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRpb25zKQogewogICAgIG1fYW5pbWF0aW9ucyA9IGFu
aW1hdGlvbnM7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9u
Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKIH0KIAogCkBAIC01
NDAsMTUgKzYzNSwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRp
b25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFu
Z2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQog
I2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3
cG9ydChib29sIGZpeGVkKQoreworICAgIGlmIChtX2ZpeGVkVG9WaWV3cG9ydCA9PSBmaXhlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsKKyAgICBu
b3RpZnlDaGFuZ2UoRml4ZWRUb1ZpZXdwb3JDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKIHsKICAg
ICBtX3JlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBh
aW50Q291bnRDaGFuZ2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IGFmYzUxYTYyYzE1NjZmZjE0NDVlMTQ3MjUxNGFmMjZhZWQ2YmVmOGMuLjcw
ZTM3NjZmZjk5NjE3NWUzYmY3M2ZjNGFjZTJkNjE2OWU0NDZjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXll
cjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VN
YXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2NoYW5n
ZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5n
JiwgZG91YmxlKTsKQEAgLTkwLDcgKzg5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBJdCB3
aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBvZiBMYXllclRyZWVSZW5k
ZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KICAgICB2b2lkIHNldEhhc093bkJh
Y2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CiAKLSAgICB2
b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0g
Zml4ZWQ7IH0KKyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZp
eGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKICAg
ICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNv
bG9yOyB9CkBAIC0xMDAsMTMgKzk5LDU1IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0gICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGUoKTsKKworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzKCk7CisKKyAgICB2b2lkIHBy
ZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWlu
dENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICB2b2lkIHByZXBh
cmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25z
dDsKICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyPiopOwogCisgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBk
ZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KKyAgICAvLyBtb2Rp
ZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBp
biB0aGUgbmV4dCBmbHVzaC4KKyAgICBlbnVtIENoYW5nZU1hc2sgeworICAgICAgICBOb0NoYW5n
ZXMgPSAgICAgICAgICAgICAgICAgMCwKKworICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAg
ICAgICAgKDFMIDw8IDEpLAorICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFM
IDw8IDIpLAorICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDMpLAor
CisgICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNCksCisgICAgICAg
IENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgNSksCisgICAgICAgIENvbnRlbnRz
VmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgNiksCisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hh
bmdlID0gICAgICAoMUwgPDwgNyksCisKKyAgICAgICAgUG9zaXRpb25DaGFuZ2UgPSAgICAgICAg
ICAgICgxTCA8PCA4KSwKKyAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAgICAgICAgICgxTCA8
PCA5KSwKKyAgICAgICAgU2l6ZUNoYW5nZSA9ICAgICAgICAgICAgICAgICgxTCA8PCAxMCksCisg
ICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMTEpLAorICAgICAgICBD
aGlsZHJlblRyYW5zZm9ybUNoYW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAgICAgICAgUHJlc2VydmVz
M0RDaGFuZ2UgPSAgICAgICAgICgxTCA8PCAxMyksCisKKyAgICAgICAgTWFza3NUb0JvdW5kc0No
YW5nZSA9ICAgICAgICgxTCA8PCAxNCksCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAg
ICAgICAoMUwgPDwgMTUpLAorICAgICAgICBPcGFjaXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFM
IDw8IDE2KSwKKyAgICAgICAgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyks
CisKKyAgICAgICAgRGlzcGxheUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxOCksCisgICAg
ICAgIENvbnRlbnRzRGlzcGxheUNoYW5nZSA9ICAgICAoMUwgPDwgMTkpLAorICAgICAgICBCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKKworICAgICAgICBBbmltYXRpb25D
aGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIxKSwKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAg
ICAgICAgICAgICgxTCA8PCAyMiksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAg
ICAgICgxTCA8PCAyMyksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwg
PDwgMjQpLAorCisgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hhbmdlID0gICAgICAoMUwgPDwgMjUp
CisgICAgfTsKKyAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFuZ2VNYXNrKTsKKwogICAgIE93blB0
cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0aXZlSW1hZ2VQdHIg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CkBAIC0xMzIsNSArMTczLDcgQEAgaW5saW5lIHN0
YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihHcmFwaGljc0wKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIqPihsYXllcik7CiB9CiAKK1RleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFw
cGVyTGF5ZXIoR3JhcGhpY3NMYXllciopOworCiB9CiAjZW5kaWYgLy8gR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4ZTgwYjE5NDIz
NTlmYmM4Y2E2MGQ4MTNmYjk3MzE2ZjMzOTE1NjQyLi4zMDA5ZjgyYjcxODllZTRhZmI5Yjg4ODhl
ZGIyMDA0ODdkNjEyOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjIsOCAr
MjIsNiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAi
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKQEAgLTQwLDExICszOCw2IEBAIHB1Ymxp
YzoKICAgICB7IH0KIH07CiAKLVRleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFwcGVyTGF5
ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgcmV0dXJuIGxheWVyID8gdG9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkgOiAwOwotfQotCiBjb25zdCBUZXh0
dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVyKCkgY29uc3QKIHsK
ICAgICBpZiAobV9lZmZlY3RUYXJnZXQpCkBAIC0zODQsODAgKzM3NywxMSBAQCBUZXh0dXJlTWFw
cGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIoKSBjb25zdAogICAgIHJldHVy
biByb290TGF5ZXIoKS0+bV90ZXh0dXJlTWFwcGVyOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlciogZ3JhcGhpY3NMYXllcikKLXsKLSAgICBBU1NFUlQoZ3JhcGhpY3NMYXll
cik7Ci0gICAgaW50IGNoYW5nZU1hc2sgPSBncmFwaGljc0xheWVyLT5jaGFuZ2VNYXNrKCk7Ci0K
LSAgICBpZiAoY2hhbmdlTWFzayA9PSBOb0NoYW5nZXMgJiYgZ3JhcGhpY3NMYXllci0+bV9hbmlt
YXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNoYW5nZU1hc2sg
JiBDaGlsZHJlbkNoYW5nZSkKLSAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hp
bGRyZW4oKSk7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkgewotICAg
ICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIo
Z3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpKQotICAgICAgICAgICBsYXllci0+bV9lZmZlY3RU
YXJnZXQgPSB0aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwbGljYUxheWVy
Q2hhbmdlKSB7Ci0gICAgICAgaWYgKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkpCi0gICAgICAgICAg
IGxheWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZU1h
c2sgJiBBbmltYXRpb25DaGFuZ2UpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9IGdyYXBoaWNzTGF5
ZXItPm1fYW5pbWF0aW9uczsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hh
bmdlKQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFp
bnRDb3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXll
cihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIg
PSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSk7Ci0g
ICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwotICAgIG1fc3RhdGUu
YW5jaG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNob3JQb2ludCgpOwotICAgIG1fc3RhdGUu
c2l6ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IGdy
YXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUuY29udGVudHNSZWN0ID0gZ3Jh
cGhpY3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IGdy
YXBoaWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgbV9zdGF0ZS5tYXNrc1RvQm91bmRzID0g
Z3JhcGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwotICAgIG1fc3RhdGUuZHJhd3NDb250ZW50
ID0gZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7Ci0gICAgbV9zdGF0ZS5jb250ZW50c1Zp
c2libGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0FyZVZpc2libGUoKTsKLSAgICBtX3N0YXRl
LmNvbnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKTsKLSAgICBt
X3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBoaWNzTGF5ZXItPmJhY2tmYWNlVmlzaWJp
bGl0eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT5j
aGlsZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUub3BhY2l0eSA9IGdyYXBoaWNzTGF5ZXIt
Pm9wYWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBncmFwaGljc0xheWVyLT5zb2xp
ZENvbG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmIChjaGFuZ2VNYXNrICYg
RmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGljc0xheWVyLT5m
aWx0ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXIt
PmZpeGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gZ3Jh
cGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKLSAgICBtX3N0YXRlLmRlYnVnQm9y
ZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5k
ZWJ1Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gdG9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJXaWR0aCgp
OwotICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NMYXllci0+aXNTaG93
aW5nUmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNzTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlv
bihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRBbmNob3JQ
b2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0U2l6
ZShtX3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFt
X3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFu
c2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRDaGls
ZHJlblRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKLQotICAgIHN5bmNBbmlt
YXRpb25zKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25z
dCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIG5l
d0NoaWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIqIGNoaWxkID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIobmV3Q2hpbGRyZW5baV0pOwot
ICAgICAgICBBU1NFUlQoY2hpbGQpOwotICAgICAgICBhZGRDaGlsZChjaGlsZCk7Ci0gICAgfQor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAg
ICAgIGFkZENoaWxkKG5ld0NoaWxkcmVuW2ldKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OmFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciogY2hpbGRMYXllcikKQEAgLTQ5NSw2ICs0
MTksMTM1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAg
ICAgfQogfQogCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xheWVyKFRleHR1cmVN
YXBwZXJMYXllciogbWFza0xheWVyKQoreworICAgIGlmIChtYXNrTGF5ZXIpCisgICAgICAgIG1h
c2tMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOworICAgIG1fc3RhdGUubWFza0xheWVyID0g
bWFza0xheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwbGljYUxheWVy
KFRleHR1cmVNYXBwZXJMYXllciogcmVwbGljYUxheWVyKQoreworICAgIGlmIChyZXBsaWNhTGF5
ZXIpCisgICAgICAgIHJlcGxpY2FMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOworICAgIG1f
c3RhdGUucmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAg
bV9zdGF0ZS5wb3MgPSBwb3NpdGlvbjsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRp
b24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIG1fc3RhdGUuc2l6ZSA9IHNpemU7
CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFNpemUoc2l6ZSk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIGFuY2hvclBv
aW50KQoreworICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICBtX2N1
cnJlbnRUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAg
ICBtX3N0YXRlLnByZXNlcnZlczNEID0gcHJlc2VydmVzM0Q7CisgICAgbV9jdXJyZW50VHJhbnNm
b3JtLnNldEZsYXR0ZW5pbmcoIXByZXNlcnZlczNEKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KQoreworICAgIG1fc3RhdGUudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIG1fY3VycmVudFRy
YW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGNoaWxkcmVuVHJhbnNmb3JtKQoreworICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0g
PSBjaGlsZHJlblRyYW5zZm9ybTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5U
cmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRzUmVjdCkKK3sKKyAgICBt
X3N0YXRlLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVjdDsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIG1f
c3RhdGUubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9z
dGF0ZS5kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRDb250ZW50c1Zpc2libGUoYm9vbCBjb250ZW50c1Zpc2libGUpCit7CisgICAg
bV9zdGF0ZS5jb250ZW50c1Zpc2libGUgPSBjb250ZW50c1Zpc2libGU7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c09wYXF1ZShib29sIGNvbnRlbnRzT3BhcXVlKQor
eworICAgIG1fc3RhdGUuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIGJhY2tmYWNl
VmlzaWJpbGl0eSkKK3sKKyAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGJhY2tmYWNl
VmlzaWJpbGl0eTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE9wYWNpdHkoZmxv
YXQgb3BhY2l0eSkKK3sKKyAgICBtX3N0YXRlLm9wYWNpdHkgPSBvcGFjaXR5OworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7
CisgICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gY29sb3I7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fc3RhdGUuZmlsdGVycyA9IGZpbHRlcnM7Cit9
CisjZW5kaWYKKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVnVmlzdWFscyhib29s
IHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBk
ZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcikKK3sKKyAgICBtX3N0YXRl
LnNob3dEZWJ1Z0JvcmRlcnMgPSBzaG93RGVidWdCb3JkZXJzOworICAgIG1fc3RhdGUuZGVidWdC
b3JkZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldp
ZHRoID0gZGVidWdCb3JkZXJXaWR0aDsKKyAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9
IHNob3dSZXBhaW50Q291bnRlcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJl
cGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQoreworICAgIG1fc3RhdGUucmVwYWludENvdW50
ID0gcmVwYWludENvdW50OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3sKKyAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYgYW5p
bWF0aW9ucykKK3sKKyAgICBtX2FuaW1hdGlvbnMgPSBhbmltYXRpb25zOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0
KQoreworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0OworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQoreworICAgIG1fYmFja2luZ1N0b3JlID0g
YmFja2luZ1N0b3JlOworfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6ZGVzY2VuZGFudHNP
clNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oCmluZGV4IDU3NWJiMjdlYjdhODc0YzE4NGI1ODFlZDJiZDQzNWQxMDE1YTgzYjEuLmNlYTEy
ODM5ZGIyNzE3OTMwZGRjMzg3OTljZWY2MWZmZTQxZTEyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCkBAIC0zNCw0OSArMzMsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
OwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7Ci1jbGFzcyBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIEdyYXBo
aWNzTGF5ZXJBbmltYXRpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4
dHVyZU1hcHBlckxheWVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICAvLyBUaGlzIHNldCBvZiBmbGFncyBoZWxwIHVzIGRlZmVyIHdoaWNoIHByb3BlcnRpZXMg
b2YgdGhlIGxheWVyIGhhdmUgYmVlbgotICAgIC8vIG1vZGlmaWVkIGJ5IHRoZSBjb21wb3NpdG9y
LCBzbyB3ZSBjYW4ga25vdyB3aGF0IHRvIGxvb2sgZm9yIGluIHRoZSBuZXh0IGZsdXNoLgotICAg
IGVudW0gQ2hhbmdlTWFzayB7Ci0gICAgICAgIE5vQ2hhbmdlcyA9ICAgICAgICAgICAgICAgICAw
LAotCi0gICAgICAgIENoaWxkcmVuQ2hhbmdlID0gICAgICAgICAgICAoMUwgPDwgMSksCi0gICAg
ICAgIE1hc2tMYXllckNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMiksCi0gICAgICAgIFBvc2l0
aW9uQ2hhbmdlID0gICAgICAgICAgICAoMUwgPDwgMyksCi0KLSAgICAgICAgQW5jaG9yUG9pbnRD
aGFuZ2UgPSAgICAgICAgICgxTCA8PCA0KSwKLSAgICAgICAgU2l6ZUNoYW5nZSAgPSAgICAgICAg
ICAgICAgICgxTCA8PCA1KSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlID0gICAgICAgICAgICgx
TCA8PCA2KSwKLSAgICAgICAgQ29udGVudENoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCA3KSwK
LQotICAgICAgICBDb250ZW50c09yaWVudGF0aW9uQ2hhbmdlID0gKDFMIDw8IDkpLAotICAgICAg
ICBPcGFjaXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDEwKSwKLSAgICAgICAgQ29udGVu
dHNSZWN0Q2hhbmdlID0gICAgICAgICgxTCA8PCAxMSksCi0KLSAgICAgICAgUHJlc2VydmVzM0RD
aGFuZ2UgPSAgICAgICAgICgxTCA8PCAxMiksCi0gICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2Ug
PSAgICAgICAoMUwgPDwgMTMpLAotICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDE0KSwKLSAgICAgICAgQ29udGVudHNWaXNpYmxlQ2hhbmdlID0gICAgICgxTCA8PCAx
NSksCi0gICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwgMTYpLAotCi0g
ICAgICAgIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSA9ICAoMUwgPDwgMTcpLAotICAgICAgICBD
aGlsZHJlblRyYW5zZm9ybUNoYW5nZSA9ICAgKDFMIDw8IDE4KSwKLSAgICAgICAgRGlzcGxheUNo
YW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxOSksCi0gICAgICAgIEJhY2tncm91bmRDb2xvckNo
YW5nZSA9ICAgICAoMUwgPDwgMjApLAotCi0gICAgICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAg
ICAgICAoMUwgPDwgMjEpLAotICAgICAgICBBbmltYXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFM
IDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyks
Ci0KLSAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCksCi0gICAg
ICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCi0gICAgfTsKLQogICAg
IFRleHR1cmVNYXBwZXJMYXllcigpCiAgICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBt
X2VmZmVjdFRhcmdldCgwKQpAQCAtODQsMTggKzQ1LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X2N1cnJlbnRPcGFjaXR5KDEpCiAgICAgICAgICwgbV9jZW50ZXJaKDApCiAgICAgICAgICwgbV90
ZXh0dXJlTWFwcGVyKDApCisgICAgICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCiAgICAg
eyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAogICAgIFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIoKSBjb25zdDsKLSAgICB2b2lkIGZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqKTsKICAgICB2
b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4bWFwKSB7IG1fdGV4dHVyZU1h
cHBlciA9IHRleG1hcDsgfQorCisgICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4
dHVyZU1hcHBlckxheWVyKj4mKTsKKyAgICB2b2lkIHNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVy
TGF5ZXIqKTsKKyAgICB2b2lkIHNldFJlcGxpY2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsK
KyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIHNldFNp
emUoY29uc3QgRmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9h
dFBvaW50M0QmKTsKKyAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRDaGls
ZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMo
Ym9vbCk7CisgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdm9pZCBzZXRDb250
ZW50c1Zpc2libGUoYm9vbCk7CisgICAgdm9pZCBzZXRDb250ZW50c09wYXF1ZShib29sKTsKKyAg
ICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKKyAgICB2b2lkIHNldE9wYWNpdHko
ZmxvYXQpOworICAgIHZvaWQgc2V0U29saWRDb2xvcihjb25zdCBDb2xvciYpOworI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKKyAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYpOworI2VuZGlmCisgICAgdm9pZCBzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3Jk
ZXJzLCBjb25zdCBDb2xvciYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0
aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpOworICAgIHZvaWQgc2V0UmVwYWludENvdW50KGlu
dCk7CisgICAgdm9pZCBzZXRDb250ZW50c0xheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
Kik7CisgICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25z
Jik7CisgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CisKKyAgICB2
b2lkIHN5bmNBbmltYXRpb25zKCk7CiAgICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5u
aW5nQW5pbWF0aW9ucygpIGNvbnN0OwogCiAgICAgdm9pZCBwYWludCgpOwogCi0gICAgdm9pZCBz
ZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNr
aW5nU3RvcmUpIHsgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7IH0KICAgICBQYXNzUmVm
UHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSgpIHsgcmV0dXJuIG1f
YmFja2luZ1N0b3JlOyB9CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKTsK
IApAQCAtMTE2LDcgKzEwNSw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVs
dGE7IH0KICAgICBib29sIGlzQW5jZXN0b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKIAotICAg
IHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOwogICAgIHZv
aWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVyKik7CiAgICAgdm9pZCByZW1vdmVGcm9tUGFy
ZW50KCk7CiAgICAgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOwpAQCAtMTMzLDcgKzEyMSw2IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBPVkVSUklERSB7IG1fY3VycmVudEZpbHRlcnMgPSBmaWx0
ZXJzOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29sIGlz
VmlzaWJsZSgpIGNvbnN0OwogICAgIGVudW0gQ29udGVudHNMYXllckNvdW50IHsKICAgICAgICAg
Tm9MYXllcnNXaXRoQ29udGVudCwKQEAgLTIxNSw5ICsyMDIsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9maXhlZFRvVmlld3BvcnQ7CiB9OwogCi0KLVRleHR1cmVNYXBwZXJMYXllciogdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciopOwotCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwCmluZGV4IDA4ZGUzZTBkMGM3YTE3MGI4ZTM0
YzliMDk1NjFiN2EwOTVlOGQ1YzAuLjhhM2EyNDliZTIwMGJlZjM1OTJmY2E4YzRiZDAwYjQ1M2Fj
M2JkYjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKICNp
bmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEVmbC5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdM
LmNwcAppbmRleCBkMTMwYTNmYjdiM2IxODkwNmFlYTlkZjg5ODkzNGIxYTZmZmFmMDA2Li5jMjNk
ZTYyYTEwYTFjMTQxZTc0YTBkMzIyMDNlNDU5M2JkZjgyMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dEdMLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwCmluZGV4IGVlODJiOTY1
YTQ2MGM0MTFlNTFjYWQwODNkYzNiMDVjNGZiMDJjZjQuLjY2YjhkMGY5NmQ0YTcyNjZlMTZkYmRj
YWUxYTliZjU4ZjMxOTg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKICNp
bmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183105</attachid>
            <date>2013-01-16 20:28:04 -0800</date>
            <delta_ts>2013-01-16 20:34:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130117132501.patch</filename>
            <type>text/plain</type>
            <size>45323</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY1Yzc0ZDY5NWI0Nzhk
MzhiY2U4ZThmZmUwZmY1YTQyNGM3YjZjNy4uYWRlY2VlYjI0NmFlZmE5MmIzYmJiNDYwODI1YWI5
M2Q3ZDkyYzg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxMy0wMS0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRC
ZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVw
bGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFByZXNl
cnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6CisgICAgICAgICAgICBTZXQgQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgICAgIENyZWF0ZSBhIGJhY2tp
bmcgc3RvcmUgYW5kIHNldCBpdCB0byBUZXh0dXJlTWFwcGVyTGF5ZXIgYmVmb3JlIGNvbW1pdExh
eWVyQ2hhbmdlcygpLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXllclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAg
ICAgIEZsdXNoIHBlbmRpbmcgY2hhbmdlcyBpbnRvIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAo
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBsaWNh
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBhaW50Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorCisy
MDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAg
ICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDRhZGRhOGZiZjlkZjljOTBhMjFm
NzBiYjdjZjNjN2E5Y2VlZTdhNGEuLjAwZTA5NDkwYmNkMDMzM2ZjNGUxM2RkMzZjNjc5ZjA1NDhh
MTkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMy0wMS0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggdG8gdXNlIHRvVGV4dHVyZU1hcHBlckxheWVyKCkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6
CisKKzIwMTMtMDEtMTYgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CisKICAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRl
ciBhbmQgcmVwYWludCBjb3VudC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2ZkYmIzYTVmYzk4NWIz
MTEwOTUxN2ZkMGVmOTQ0YzkwYTMwMDkzYS4uZGY5MGU2MjRkYWM4ZTFiZDU3NzYwMzgyYmQ0MDEx
YWUyMGQ1NDNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wu
Y3BwOgorCisyMDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCiAgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBi
b3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBiNDM3YTlkYmY5Njg4
MTZiMmFlM2QxMTlmYzBkYjFiNjI1M2Y1ZjAxLi44OTFkNmQzMTJlMmNkOTYwMzdkNjQ2NDA4MzEw
YTkyZmM4ZTMyMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDoK
KworMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KwogICAgICAgICBbVGV4bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVy
IGFuZCByZXBhaW50IGNvdW50LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA1Nzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IDJjZGJiOGQ4ODRmOWRhNWViODkyYzA4NzYwYTc0ZDBlZWJjZDliMWQuLmYx
N2I0ZWJmNDgwMjA2MzNmNjRjYjE3YTZmYWRiM2NiM2RiNTcxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDogMDsKK30KKwogUGFzc093blB0cjxH
cmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAoIWZhY3Rv
cnkpCkBAIC00NSw3ICs1MCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiAgICAgOiBHcmFw
aGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbGF5ZXIoYWRvcHRQdHIobmV3IFRleHR1cmVNYXBw
ZXJMYXllcigpKSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCi0gICAgLCBt
X2NoYW5nZU1hc2soMCkKKyAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMpCiAgICAgLCBtX25l
ZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1faGFzT3duQmFja2luZ1N0b3JlKHRydWUpCiAgICAg
LCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKQEAgLTU1LDcgKzYwLDcgQEAgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWUKIHsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayBjaGFuZ2VNYXNrKQordm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKENoYW5nZU1hc2sgY2hh
bmdlTWFzaykKIHsKICAgICBtX2NoYW5nZU1hc2sgfD0gY2hhbmdlTWFzazsKICAgICBpZiAoIWNs
aWVudCgpKQpAQCAtODYsNyArOTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXkoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlzcGxh
eSA9IHRydWU7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFpbnRS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSkpOwogfQogCkBAIC05NCw3ICs5OSw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiAq
Lwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNOZWVkc0Rpc3Bs
YXkoKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFu
Z2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50c0Rpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJl
cGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47
CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNw
bGF5Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3LDcgKzEy
Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUlu
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikK
IHsKICAgICBpZiAoR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7Ci0gICAg
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAg
ICAgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29sIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NM
YXllcio+JiBjaGlsZAogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENo
aWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFu
Z2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAtMTM2LDE1
ICsxNDEsMTUgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRD
aGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFw
aGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwog
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xh
eWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVyOjphZGRD
aGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFu
Z2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsxNTcsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNz
TGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2li
bGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBzaWJsaW5n
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0xNjAsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkK
IGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xh
eWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYgKEdyYXBo
aWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAg
bm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUpCiAgICAg
aWYgKHZhbHVlID09IG1hc2tMYXllcigpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0TWFza0xheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpNYXNrTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5ZXJDaGFu
Z2UpOwogCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE5NCw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVy
KEdyYXBoaWNzTGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVy
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBsaWNhTGF5
ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwogfQogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiB2YWx1
ZSkKICAgICBpZiAodmFsdWUgPT0gcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpQb3NpdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBvc2l0aW9u
Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDksNyArMjE0
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9pbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2ludENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFuY2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yMjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFNpemUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAg
bWFza0xheWVyKCktPnNldFNpemUodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OlNpemVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdlKTsKIH0K
IAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6
c2V0VHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpUcmFuc2Zvcm1DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFuZ2UpOwog
fQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeAogICAgIGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5zZm9ybSgp
KQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zv
cm0odmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVu
VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFu
Z2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsyNTgsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHZh
bHVlKQogICAgIGlmICh2YWx1ZSA9PSBwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlByZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoUHJlc2VydmVzM0RDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkK
QEAgLTI2Myw3ICsyNjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrc1RvQm91bmRzKGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9Cb3VuZHMo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMo
dmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tzVG9Cb3Vu
ZHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09IGRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoRHJhd3NDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRE
cmF3c0NvbnRlbnQodmFsdWUpOwogfQogCkBAIC0yODIsNyArMjg3LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09IGNvbnRlbnRzQXJlVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudHNWaXNpYmxlQ2hhbmdl
KTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNWaXNpYmxlQ2hhbmdlKTsKICAgICBHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1Zpc2libGUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkK
ICAgICAgICAgbWFza0xheWVyKCktPnNldENvbnRlbnRzVmlzaWJsZSh2YWx1ZSk7CkBAIC0yOTQs
NyArMjk5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNP
cGFxdWUoYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gY29udGVudHNPcGFxdWUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNv
bnRlbnRzT3BhcXVlQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNPcGFxdWVDaGFu
Z2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKHZhbHVlKTsKIH0KIApA
QCAtMzA1LDcgKzMxMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eShib29sIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBiYWNrZmFjZVZp
c2liaWxpdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tm
YWNlVmlzaWJpbGl0eSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQmFja2ZhY2VW
aXNpYmlsaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0z
MTUsNyArMzIwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0
eShmbG9hdCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gb3BhY2l0eSgpKQogICAgICAgICByZXR1
cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6T3BhY2l0eUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KE9wYWNpdHlDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTMy
NSw3ICszMzAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1JlY3QoY29uc3QgSW50UmVjdCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IGNvbnRlbnRzUmVj
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c1Jl
Y3RDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50c1JlY3RDaGFuZ2UpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NvbGlkQ29sb3IgPSBjb2xvcjsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoQmFja2dyb3VuZENvbG9yQ2hhbmdlKTsKIH0KIAogCkBAIC0zNjMsNyArMzY4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdl
KiBpbWFnZSkKICAgICB9CiAKICAgICBzZXRDb250ZW50c1RvTWVkaWEobV9jb21wb3NpdGVkSW1h
Z2UuZ2V0KCkpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRD
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogfQogCkBAIC0zNzMsNyArMzc4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb01lZGlhKFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvTWVkaWEobWVkaWEpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkNvbnRlbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hh
bmdlKTsKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIApAQCAtMzgzLDcgKzM4OCw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dE
ZWJ1Z0JvcmRlcihzaG93KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpE
ZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2Up
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIoYm9vbCBzaG93KQpAQCAtMzkyLDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAg
KEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQwMCwxNyArNDA1LDMzIEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAgIHVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7Ci0gICAgbV9sYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlzKTsKKyAgICAgICAgcHJlcGFyZUJhY2tpbmdT
dG9yZSgpOworICAgIGNvbW1pdExheWVyQ2hhbmdlcygpOworICAgIG1fbGF5ZXItPnN5bmNBbmlt
YXRpb25zKCk7CisgICAgLy8gdXBkYXRlQmFja2luZ1N0b3JlKCkgbXVzdCBiZSBwZXJmb3JtZWQg
YWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVCYWNraW5nU3RvcmUoKSBuZWVkcyB0byBnZXQgVGV4dHVy
ZU1hcHBlciBmcm9tIFRleHR1cmVNYXBwZXJMYXllci4KICAgICBpZiAobV9oYXNPd25CYWNraW5n
U3RvcmUpCiAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGRpZEZsdXNoQ29tcG9z
aXRpbmdTdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHsKICAgICBBU1NFUlQobV9oYXNPd25CYWNr
aW5nU3RvcmUpOworICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAg
IG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5n
U3RvcmVDaGFuZ2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkg
eworICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IEJhY2tpbmdTdG9y
ZUNoYW5nZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVw
YWludENvdW50KCk7Cit9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sKKyAgICBBU1NFUlQobV9oYXNPd25CYWNr
aW5nU3RvcmUpOwogICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9y
ZSgpOwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogCkBAIC00MTgsNyArNDM5LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBh
aW50Q291bnQoKQogICAgIGJvb2wgbmVlZHNUb1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0
b3JlKCkgJiYgKG1fbmVlZHNEaXNwbGF5IHx8ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgp
KTsKICAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkg
ewogICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKLSAgICAgICAgbV9jaGFuZ2VNYXNr
IHw9IFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgICAgICBtX2No
YW5nZU1hc2sgfD0gUmVwYWludENvdW50Q2hhbmdlOwogICAgIH0KIH0KIApAQCAtNDI4LDcgKzQ0
OSwxMDEgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIo
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKICAgICAvLyBoYXJkIHRvIHNlZSAoc29t
ZSBsZXNzIHRoYW4gb25lIHBpeGVsIHdpZGUpLCBzbyB3ZSBkb3VibGUgdGhlaXIgc2l6ZSBoZXJl
LgogICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwogICAgIG1fZGVidWdCb3JkZXJXaWR0
aCA9IHdpZHRoICogMjsKLSAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpE
ZWJ1Z1Zpc3VhbHNDaGFuZ2U7CisgICAgbV9jaGFuZ2VNYXNrIHw9IERlYnVnVmlzdWFsc0NoYW5n
ZTsKK30KKworc3RhdGljIHZvaWQgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY29uc3QgVmVj
dG9yPEdyYXBoaWNzTGF5ZXIqPiYgbGF5ZXJzLCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4m
IHRleG1hcExheWVycykKK3sKKyAgICB0ZXhtYXBMYXllcnMucmVzZXJ2ZUNhcGFjaXR5KGxheWVy
cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICB0ZXhtYXBMYXllcnMuYXBwZW5kKHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVy
c1tpXSkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXll
ckNoYW5nZXMoKQoreworICAgIGlmIChtX2NoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpIHsKKyAg
ICAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IHRleHR1cmVNYXBwZXJMYXllckNoaWxk
cmVuOworICAgICAgICB0b1RleHR1cmVNYXBwZXJMYXllclZlY3RvcihjaGlsZHJlbigpLCB0ZXh0
dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7CisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKHRl
eHR1cmVNYXBwZXJMYXllckNoaWxkcmVuKTsKKyAgICB9CisKKyAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgTWFza0xheWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIodG9UZXh0
dXJlTWFwcGVyTGF5ZXIobWFza0xheWVyKCkpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBS
ZXBsaWNhTGF5ZXJDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFJlcGxpY2FMYXllcih0b1Rl
eHR1cmVNYXBwZXJMYXllcihyZXBsaWNhTGF5ZXIoKSkpOworCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIFBvc2l0aW9uQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlv
bigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmNob3JQb2ludENoYW5nZSkKKyAgICAg
ICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQoKSk7CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgU2l6ZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0U2l6ZShzaXplKCkp
OworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFRyYW5zZm9ybUNoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sg
JiBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q2hpbGRyZW5U
cmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
UHJlc2VydmVzM0RDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFByZXNlcnZlczNEKHByZXNl
cnZlczNEKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENvbnRlbnRzUmVjdENoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKworICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBNYXNrc1RvQm91bmRzQ2hhbmdlKQorICAgICAgICBtX2xheWVy
LT5zZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgRHJhd3NDb250ZW50Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXREcmF3c0NvbnRl
bnQoZHJhd3NDb250ZW50KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENvbnRlbnRzVmlz
aWJsZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNWaXNpYmxlKGNvbnRlbnRz
QXJlVmlzaWJsZSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c09wYXF1ZUNo
YW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNPcGFxdWUoY29udGVudHNPcGFxdWUo
KSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKQor
ICAgICAgICBtX2xheWVyLT5zZXRCYWNrZmFjZVZpc2liaWxpdHkoYmFja2ZhY2VWaXNpYmlsaXR5
KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIE9wYWNpdHlDaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldE9wYWNpdHkob3BhY2l0eSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBC
YWNrZ3JvdW5kQ29sb3JDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFNvbGlkQ29sb3Ioc29s
aWRDb2xvcigpKTsKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgRmlsdGVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMo
KSk7CisjZW5kaWYKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2Up
IHsKKyAgICAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKKyAgICAgICAgbV9sYXll
ci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKKyAgICB9CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgRGVidWdWaXN1YWxzQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXREZWJ1
Z1Zpc3VhbHMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1
Z0JvcmRlcldpZHRoKCksIGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpOworCisgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UmVw
YWludENvdW50KHJlcGFpbnRDb3VudCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250
ZW50Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5
ZXIoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQorICAgICAg
ICBtX2xheWVyLT5zZXRBbmltYXRpb25zKG1fYW5pbWF0aW9ucyk7CisKKyAgICBpZiAobV9jaGFu
Z2VNYXNrICYgRml4ZWRUb1ZpZXdwb3JDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEZpeGVk
VG9WaWV3cG9ydChmaXhlZFRvVmlld3BvcnQoKSk7CisKKyAgICBtX2NoYW5nZU1hc2sgPSBOb0No
YW5nZXM7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtNDQ4LDI4ICs1NjMs
MTggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0
YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgY2hpbGRyZW4oKVtpXS0+Zmx1c2hD
b21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQotewotICAgIG1fY2hhbmdlTWFzayA9IDA7
Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKLSAgICBwcmVwYXJlQmFj
a2luZ1N0b3JlKCk7Ci0gICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3Jl
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdT
dG9yZSgpCi17CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRl
eHR1cmVNYXBwZXIoKTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7Ci0gICAgICAgIG1fYmFja2lu
Z1N0b3JlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKICAgICBJbnRS
ZWN0IGRpcnR5UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgbV9zaXplKSk7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKQEAgLTQ3Nyw5ICs1ODIs
NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3Jl
KCkKICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
QVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2Jh
Y2tpbmdTdG9yZS5nZXQoKSkpOwogI2VuZGlmCkBAIC01MTAsNyArNjEyLDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QKICAgICAgICAgbGlzdHNNYXRjaCA9IHZhbGlkYXRlVHJhbnNmb3JtT3Bl
cmF0aW9ucyh2YWx1ZUxpc3QsIGhhc0JpZ1JvdGF0aW9uKSA+PSAwOwogCiAgICAgbV9hbmltYXRp
b25zLmFkZChHcmFwaGljc0xheWVyQW5pbWF0aW9uKGtleWZyYW1lc05hbWUsIHZhbHVlTGlzdCwg
Ym94U2l6ZSwgYW5pbSwgV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZU9mZnNldCwgbGlzdHNNYXRj
aCkpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkFuaW1hdGlvbkNoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFuaW1hdGlvbkNoYW5nZSk7CiAgICAgbV9hbmltYXRpb25T
dGFydGVkVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTE4
LDcgKzYyMCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFuaW1hdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25z
JiBhbmltYXRpb25zKQogewogICAgIG1fYW5pbWF0aW9ucyA9IGFuaW1hdGlvbnM7Ci0gICAgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKIH0KIAogCkBAIC01NDAsMTUgKzY0MiwyNCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJl
ZChUaW1lcjxHcmFwaGljc0xheWVyVAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0
ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBH
cmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCiAKK3ZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKQor
eworICAgIGlmIChtX2ZpeGVkVG9WaWV3cG9ydCA9PSBmaXhlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsKKyAgICBub3RpZnlDaGFuZ2UoRml4ZWRU
b1ZpZXdwb3JDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKIHsKICAgICBtX3JlcGFpbnRDb3VudCA9
IHJlcGFpbnRDb3VudDsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBh
aW50Q291bnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBhaW50Q291bnRDaGFuZ2UpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGFmYzUx
YTYyYzE1NjZmZjE0NDVlMTQ3MjUxNGFmMjZhZWQ2YmVmOGMuLmZmYzEzZmU3YzRmZDRiZmFkMzc5
NzdmM2RiZWY1YTRmNDNhMjk4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUg
aW50IGNoYW5nZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTkw
LDcgKzg5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0
ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBvZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci4KICAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIp
IHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CiAKLSAgICB2b2lkIHNldEZpeGVkVG9WaWV3
cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KKyAgICB2b2lk
IHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNv
bnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKICAgICBDb2xvciBkZWJ1Z0JvcmRl
ckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CkBAIC0xMDAsMTMg
Kzk5LDU2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7Ci0gICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKworICAgIHZv
aWQgY29tbWl0TGF5ZXJDaGFuZ2VzKCk7CisKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUo
KTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9p
ZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsK
ICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiop
OwogCisgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0
aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KKyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9z
aXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4K
KyAgICBlbnVtIENoYW5nZU1hc2sgeworICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAg
ICAgMCwKKworICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAor
ICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBS
ZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRD
aGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5n
ZSA9ICAgICAgICAoMUwgPDwgNSksCisgICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAg
ICAoMUwgPDwgNiksCisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwg
NyksCisKKyAgICAgICAgUG9zaXRpb25DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAg
ICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAgICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6
ZUNoYW5nZSA9ICAgICAgICAgICAgICAgICgxTCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNo
YW5nZSA9ICAgICAgICAgICAoMUwgPDwgMTEpLAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNo
YW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAg
ICgxTCA8PCAxMyksCisKKyAgICAgICAgTWFza3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8
PCAxNCksCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAor
ICAgICAgICBPcGFjaXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAg
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2lu
Z1N0b3JlQ2hhbmdlID0gICAgICAgICgxTCA8PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2Ug
PSAgICAgICAgICAgICAoMUwgPDwgMTkpLAorICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2Ug
PSAgICAgKDFMIDw8IDIwKSwKKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgx
TCA8PCAyMSksCisKKyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAy
MiksCisgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisg
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRv
Vmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlD
aGFuZ2UoQ2hhbmdlTWFzayk7CisKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xh
eWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9z
aXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
OwpAQCAtMTMyLDUgKzE3NCw3IEBAIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitU
ZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsK
KwogfQogI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggOGU4MGIxOTQyMzU5ZmJjOGNhNjBkODEzZmI5NzMxNmYzMzkx
NTY0Mi4uMzAwOWY4MmI3MTg5ZWU0YWZiOWI4ODg4ZWRiMjAwNDg3ZDYxMjlmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIyLDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyB7CkBAIC00MCwxMSArMzgsNiBAQCBwdWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJl
TWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQot
ewotICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIp
LT5sYXllcigpIDogMDsKLX0KLQogY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpA
QCAtMzg0LDgwICszNzcsMTEgQEAgVGV4dHVyZU1hcHBlciogVGV4dHVyZU1hcHBlckxheWVyOjp0
ZXh0dXJlTWFwcGVyKCkgY29uc3QKICAgICByZXR1cm4gcm9vdExheWVyKCktPm1fdGV4dHVyZU1h
cHBlcjsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5
ZXIpCi17Ci0gICAgQVNTRVJUKGdyYXBoaWNzTGF5ZXIpOwotICAgIGludCBjaGFuZ2VNYXNrID0g
Z3JhcGhpY3NMYXllci0+Y2hhbmdlTWFzaygpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9D
aGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpCi0gICAgICAg
IHNldENoaWxkcmVuKGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKCkpOwotCi0gICAgaWYgKGNoYW5n
ZU1hc2sgJiBNYXNrTGF5ZXJDaGFuZ2UpIHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVy
KiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigp
KSkKLSAgICAgICAgICAgbGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAg
ICBpZiAoY2hhbmdlTWFzayAmIFJlcGxpY2FMYXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
ci0+cmVwbGljYUxheWVyKCkpKQotICAgICAgICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0
aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAg
ICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7Ci0KLSAgICBp
ZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKLSAgICAgICAgbV9zdGF0ZS5yZXBh
aW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKLQotICAgIG1fc3RhdGUu
bWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVy
KCkpOwotICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3Jh
cGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpOwotICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NM
YXllci0+cG9zaXRpb24oKTsKLSAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gZ3JhcGhpY3NMYXll
ci0+YW5jaG9yUG9pbnQoKTsKLSAgICBtX3N0YXRlLnNpemUgPSBncmFwaGljc0xheWVyLT5zaXpl
KCk7Ci0gICAgbV9zdGF0ZS50cmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT50cmFuc2Zvcm0oKTsK
LSAgICBtX3N0YXRlLmNvbnRlbnRzUmVjdCA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzUmVjdCgp
OwotICAgIG1fc3RhdGUucHJlc2VydmVzM0QgPSBncmFwaGljc0xheWVyLT5wcmVzZXJ2ZXMzRCgp
OwotICAgIG1fc3RhdGUubWFza3NUb0JvdW5kcyA9IGdyYXBoaWNzTGF5ZXItPm1hc2tzVG9Cb3Vu
ZHMoKTsKLSAgICBtX3N0YXRlLmRyYXdzQ29udGVudCA9IGdyYXBoaWNzTGF5ZXItPmRyYXdzQ29u
dGVudCgpOwotICAgIG1fc3RhdGUuY29udGVudHNWaXNpYmxlID0gZ3JhcGhpY3NMYXllci0+Y29u
dGVudHNBcmVWaXNpYmxlKCk7Ci0gICAgbV9zdGF0ZS5jb250ZW50c09wYXF1ZSA9IGdyYXBoaWNz
TGF5ZXItPmNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkg
PSBncmFwaGljc0xheWVyLT5iYWNrZmFjZVZpc2liaWxpdHkoKTsKLSAgICBtX3N0YXRlLmNoaWxk
cmVuVHJhbnNmb3JtID0gZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICBt
X3N0YXRlLm9wYWNpdHkgPSBncmFwaGljc0xheWVyLT5vcGFjaXR5KCk7Ci0gICAgbV9zdGF0ZS5z
b2xpZENvbG9yID0gZ3JhcGhpY3NMYXllci0+c29saWRDb2xvcigpOwotI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKLSAgICBpZiAoY2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKLSAgICAgICAgbV9z
dGF0ZS5maWx0ZXJzID0gZ3JhcGhpY3NMYXllci0+ZmlsdGVycygpOwotI2VuZGlmCi0gICAgbV9m
aXhlZFRvVmlld3BvcnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKLQotICAg
IG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOwotICAgIG1f
c3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3Jh
cGhpY3NMYXllciktPmRlYnVnQm9yZGVyV2lkdGgoKTsKLSAgICBtX3N0YXRlLnNob3dSZXBhaW50
Q291bnRlciA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7Ci0KLSAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0KLSAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKLSAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQobV9zdGF0ZS5hbmNob3JQb2ludCk7
Ci0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFNpemUobV9zdGF0ZS5zaXplKTsKLSAgICBtX2N1
cnJlbnRUcmFuc2Zvcm0uc2V0RmxhdHRlbmluZyghbV9zdGF0ZS5wcmVzZXJ2ZXMzRCk7Ci0gICAg
bV9jdXJyZW50VHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsK
LSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGls
ZHJlblRyYW5zZm9ybSk7Ci0KLSAgICBzeW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYg
bmV3Q2hpbGRyZW4pCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3Qg
VmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVB
bGxDaGlsZHJlbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBjaGlsZCA9IHRvVGV4dHVy
ZU1hcHBlckxheWVyKG5ld0NoaWxkcmVuW2ldKTsKLSAgICAgICAgQVNTRVJUKGNoaWxkKTsKLSAg
ICAgICAgYWRkQ2hpbGQoY2hpbGQpOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0NoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBhZGRDaGlsZChuZXdDaGlsZHJlbltp
XSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphZGRDaGlsZChUZXh0dXJlTWFwcGVy
TGF5ZXIqIGNoaWxkTGF5ZXIpCkBAIC00OTUsNiArNDE5LDEzNSBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQogICAgIH0KIH0KIAordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcikKK3sK
KyAgICBpZiAobWFza0xheWVyKQorICAgICAgICBtYXNrTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0g
dGhpczsKKyAgICBtX3N0YXRlLm1hc2tMYXllciA9IG1hc2tMYXllcjsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGxpY2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlcGxp
Y2FMYXllcikKK3sKKyAgICBpZiAocmVwbGljYUxheWVyKQorICAgICAgICByZXBsaWNhTGF5ZXIt
Pm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHJlcGxp
Y2FMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fc3RhdGUucG9zID0gcG9zaXRpb247Cisg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSkKK3sKKyAgICBtX3N0YXRlLnNpemUgPSBzaXplOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5z
ZXRTaXplKHNpemUpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9p
bnQoY29uc3QgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCkKK3sKKyAgICBtX3N0YXRlLmFuY2hv
clBvaW50ID0gYW5jaG9yUG9pbnQ7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBv
aW50KGFuY2hvclBvaW50KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNl
cnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit7CisgICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IHBy
ZXNlcnZlczNEOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2
ZXMzRCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLnRyYW5zZm9y
bSA9IHRyYW5zZm9ybTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjaGlsZHJlblRyYW5zZm9ybSkKK3sK
KyAgICBtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm07CisgICAg
bV9jdXJyZW50VHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3Jt
KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiBjb250ZW50c1JlY3QpCit7CisgICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSBjb250
ZW50c1JlY3Q7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRz
KGJvb2wgbWFza3NUb0JvdW5kcykKK3sKKyAgICBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgPSBtYXNr
c1RvQm91bmRzOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50
KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0gZHJhd3ND
b250ZW50OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxl
KGJvb2wgY29udGVudHNWaXNpYmxlKQoreworICAgIG1fc3RhdGUuY29udGVudHNWaXNpYmxlID0g
Y29udGVudHNWaXNpYmxlOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNPcGFxdWUoYm9vbCBjb250ZW50c09wYXF1ZSkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzT3Bh
cXVlID0gY29udGVudHNPcGFxdWU7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRC
YWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9zdGF0
ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBiYWNrZmFjZVZpc2liaWxpdHk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgbV9zdGF0
ZS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNv
bGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fc3RhdGUuc29saWRDb2xvciA9
IGNvbG9yOworfQorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAg
ICBtX3N0YXRlLmZpbHRlcnMgPSBmaWx0ZXJzOworfQorI2VuZGlmCisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBD
b2xvciYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93
UmVwYWludENvdW50ZXIpCit7CisgICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gc2hvd0Rl
YnVnQm9yZGVyczsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSBkZWJ1Z0JvcmRlckNv
bG9yOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9IGRlYnVnQm9yZGVyV2lkdGg7Cisg
ICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBzaG93UmVwYWludENvdW50ZXI7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3Vu
dCkKK3sKKyAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCit7CisgICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZv
cm1MYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMoY29u
c3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCit7CisgICAgbV9hbmltYXRp
b25zID0gYW5pbWF0aW9uczsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVk
VG9WaWV3cG9ydChib29sIGZpeGVkVG9WaWV3cG9ydCkKK3sKKyAgICBtX2ZpeGVkVG9WaWV3cG9y
dCA9IGZpeGVkVG9WaWV3cG9ydDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZSkKK3sKKyAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKK30KIAogYm9vbCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25z
KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA1NzViYjI3ZWI3YTg3NGMx
ODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2IxLi5jZWExMjgzOWRiMjcxNzkzMGRkYzM4Nzk5Y2VmNjFm
ZmU0MWUxMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0yNCw3ICsyNCw2IEBACiAK
ICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRp
b24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgpAQCAtMzQsNDkgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRl
eHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3Mg
aGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KLSAg
ICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBs
b29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KLSAgICBlbnVtIENoYW5nZU1hc2sgewotICAgICAg
ICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKLQotICAgICAgICBDaGlsZHJlbkNoYW5n
ZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAg
ICAgICAgKDFMIDw8IDIpLAotICAgICAgICBQb3NpdGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFM
IDw8IDMpLAotCi0gICAgICAgIEFuY2hvclBvaW50Q2hhbmdlID0gICAgICAgICAoMUwgPDwgNCks
Ci0gICAgICAgIFNpemVDaGFuZ2UgID0gICAgICAgICAgICAgICAoMUwgPDwgNSksCi0gICAgICAg
IFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgNiksCi0gICAgICAgIENvbnRlbnRD
aGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNyksCi0KLSAgICAgICAgQ29udGVudHNPcmllbnRh
dGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwKLSAgICAgICAgT3BhY2l0eUNoYW5nZSA9ICAgICAgICAg
ICAgICgxTCA8PCAxMCksCi0gICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwg
PDwgMTEpLAotCi0gICAgICAgIFByZXNlcnZlczNEQ2hhbmdlID0gICAgICAgICAoMUwgPDwgMTIp
LAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlID0gICAgICAgKDFMIDw8IDEzKSwKLSAgICAg
ICAgRHJhd3NDb250ZW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAxNCksCi0gICAgICAgIENvbnRl
bnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgMTUpLAotICAgICAgICBDb250ZW50c09wYXF1
ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2KSwKLQotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlD
aGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAgICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAg
ICgxTCA8PCAxOCksCi0gICAgICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwg
MTkpLAotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKLQot
ICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDIxKSwKLSAgICAgICAg
QW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNo
YW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAotCi0gICAgICAgIERlYnVnVmlzdWFsc0No
YW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAg
ICAgICAgKDFMIDw8IDI1KQotICAgIH07Ci0KICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAg
ICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKQEAgLTg0LDE4
ICs0NSw0NiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQogICAgICAg
ICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQorICAgICAgICAs
IG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlckxheWVyKCk7CiAKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29u
c3Q7Ci0gICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KKworICAgIHZv
aWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+Jik7CisgICAg
dm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBzZXRSZXBs
aWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAg
IHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRQ
cmVzZXJ2ZXMzRChib29sKTsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0
Jik7CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworICAgIHZvaWQgc2V0RHJhd3ND
b250ZW50KGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNWaXNpYmxlKGJvb2wpOworICAgIHZv
aWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxp
dHkoYm9vbCk7CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldFNvbGlk
Q29sb3IoY29uc3QgQ29sb3ImKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRpZgorICAgIHZvaWQgc2V0
RGVidWdWaXN1YWxzKGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9y
ZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVy
KTsKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOworICAgIHZvaWQgc2V0Q29udGVudHNM
YXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0QW5pbWF0aW9u
cyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOworICAgIHZvaWQgc2V0Rml4ZWRUb1Zp
ZXdwb3J0KGJvb2wpOworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZT4pOworCisgICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAg
IGJvb2wgZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKIAog
ICAgIHZvaWQgcGFpbnQoKTsKIAotICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKSB7IG1fYmFja2luZ1N0b3Jl
ID0gYmFja2luZ1N0b3JlOyB9CiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZTsgfQogICAgIHZvaWQg
Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCk7CiAKQEAgLTExNiw3ICsxMDUsNiBAQCBwcml2
YXRlOgogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9y
Rml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZl
Y3RvcjxHcmFwaGljc0xheWVyKj4mKTsKICAgICB2b2lkIGFkZENoaWxkKFRleHR1cmVNYXBwZXJM
YXllciopOwogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxs
Q2hpbGRyZW4oKTsKQEAgLTEzMyw3ICsxMjEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgT1ZF
UlJJREUgeyBtX2N1cnJlbnRGaWx0ZXJzID0gZmlsdGVyczsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHN5bmNBbmltYXRpb25zKCk7CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKICAgICBlbnVt
IENvbnRlbnRzTGF5ZXJDb3VudCB7CiAgICAgICAgIE5vTGF5ZXJzV2l0aENvbnRlbnQsCkBAIC0y
MTUsOSArMjAyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OwogfTsK
IAotCi1UZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5
ZXIqKTsKLQogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZs
LmNwcAppbmRleCAwOGRlM2UwZDBjN2ExNzBiOGUzNGM5YjA5NTYxYjdhMDk1ZThkNWMwLi44YTNh
MjQ5YmUyMDBiZWYzNTkyZmNhOGM0YmQwMGI0NTNhYzNiZGIzIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRFZmwuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKaW5kZXggZDEzMGEzZmI3YjNiMTg5
MDZhZWE5ZGY4OTg5MzRiMWE2ZmZhZjAwNi4uYzIzZGU2MmExMGExYzE0MWU3NGEwZDMyMjAzZTQ1
OTNiZGY4MjA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJM
YXllckNsaWVudFF0LmNwcAppbmRleCBlZTgyYjk2NWE0NjBjNDExZTUxY2FkMDgzZGMzYjA1YzRm
YjAyY2Y0Li42NmI4ZDBmOTZkNGE3MjY2ZTE2ZGJkY2FlMWE5YmY1OGYzMTk4NzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNs
aWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVN
YXBwZXJMYXllckNsaWVudFF0LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiUVdlYkZyYW1lQWRhcHRlci5o
IgogI2luY2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJM
YXllci5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183125</attachid>
            <date>2013-01-16 22:50:40 -0800</date>
            <delta_ts>2013-01-17 20:40:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130117154736.patch</filename>
            <type>text/plain</type>
            <size>45356</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlODRjYjIxMDdmYWI3
NzZmNzllNzA3NjkyZDI2NGNmZThlMjQwZi4uMzIzNjEzZWI5YTQ1Njg3NzJjZDUyMTUyNTQ4NDQw
NjczNGY3YjA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxMy0wMS0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRC
ZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVw
bGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFByZXNl
cnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6CisgICAgICAgICAgICBTZXQgQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgICAgIENyZWF0ZSBhIGJhY2tp
bmcgc3RvcmUgdG8gc2V0IGl0IHRvIFRleHR1cmVNYXBwZXJMYXllciBpbiBjb21taXRMYXllckNo
YW5nZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1
cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICAgICBG
bHVzaCBwZW5kaW5nIGNoYW5nZXMgaW50byBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwbGljYUxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2ZXMzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERyYXdzQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdWaXN1YWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRvVmlld3BvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBlckxheWVyKToKKworMjAxMy0w
MS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAg
ICBbVGV4TWFwXSBNYXRjaCBpbml0aWFsaXppbmcgbWVtYmVycyBpbiBHcmFwaGljc0xheWVyVHJh
bnNmb3JtIHRvIGluaXRpYWxpemluZyBtZW1iZXJzIGluIEdyYXBoaWNzTGF5ZXIuCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwOTAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDRhZGRhOGZiZjlkZjljOTBhMjFmNzBiYjdjZjNjN2E5Y2VlZTdhNGEuLjAw
ZTA5NDkwYmNkMDMzM2ZjNGUxM2RkMzZjNjc5ZjA1NDhhMTkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNiBAQAogMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBj
b21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFwXSBSZW1vdmUgR3JhcGhpY3NMYXllciBp
biBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbmNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggdG8gdXNl
IHRvVGV4dHVyZU1hcHBlckxheWVyKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6CisKKzIwMTMtMDEtMTYgIEh1YW5nIERv
bmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1RleG1hcF0gUmVm
YWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggM2ZkYmIzYTVmYzk4NWIzMTEwOTUxN2ZkMGVmOTQ0YzkwYTMwMDkz
YS4uZGY5MGU2MjRkYWM4ZTFiZDU3NzYwMzgyYmQ0MDExYWUyMGQ1NDNiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xh
eWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0
byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwOgorCisyMDEzLTAxLTE2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCBiNDM3YTlkYmY5Njg4MTZiMmFlM2QxMTlmYzBkYjFiNjI1M2Y1
ZjAxLi44OTFkNmQzMTJlMmNkOTYwMzdkNjQ2NDA4MzEwYTkyZmM4ZTMyMjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xh
eWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0
byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDoKKworMjAxMy0wMS0xNiAgSHVhbmcgRG9u
Z3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4bWFwXSBSZWZh
Y3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDJjZGJiOGQ4ODRm
OWRhNWViODkyYzA4NzYwYTc0ZDBlZWJjZDliMWQuLmYxN2I0ZWJmNDgwMjA2MzNmNjRjYjE3YTZm
YWRiM2NiM2RiNTcxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitUZXh0dXJl
TWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQor
eworICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIp
LT5sYXllcigpIDogMDsKK30KKwogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAoIWZhY3RvcnkpCkBAIC00NSw3ICs1MCw3IEBAIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFw
aGljc0xheWVyQ2xpZW50KiBjbGllCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKICAgICAs
IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJMYXllcigpKSkKICAgICAsIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCi0gICAgLCBtX2NoYW5nZU1hc2soMCkKKyAgICAsIG1f
Y2hhbmdlTWFzayhOb0NoYW5nZXMpCiAgICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAs
IG1faGFzT3duQmFja2luZ1N0b3JlKHRydWUpCiAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxz
ZSkKQEAgLTU1LDcgKzYwLDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKIHsKIH0KIAotdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6Q2hhbmdlTWFzayBjaGFuZ2VNYXNrKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6bm90aWZ5Q2hhbmdlKENoYW5nZU1hc2sgY2hhbmdlTWFzaykKIHsKICAgICBtX2NoYW5n
ZU1hc2sgfD0gY2hhbmdlTWFzazsKICAgICBpZiAoIWNsaWVudCgpKQpAQCAtODYsNyArOTEsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlzcGxheSA9IHRydWU7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KERpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIG1fc2l6ZSkpOwogfQogCkBAIC05NCw3ICs5OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShD
b250ZW50c0Rpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgp
KTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYg
KG1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0
LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3Bs
YXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdlKTsKICAgICBhZGRSZXBh
aW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3LDcgKzEyMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHsKICAgICBpZiAoR3JhcGhpY3NMYXll
cjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7Ci0gICAgICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAgbm90aWZ5Q2hhbmdlKENoaWxk
cmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZAogKi8KIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdl
KTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6
OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAtMTM2LDE1ICsxNDEsMTUgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXll
ciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5k
ZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpD
aGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwg
c2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVu
Q2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5n
KTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdy
YXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsxNTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xh
eQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGlj
c0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBzaWJsaW5nKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENoaWxk
cmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xNjAsNyAr
MTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhH
cmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NM
YXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChv
bGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hh
bmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNr
TGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tMYXllcigp
KQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpNYXNrTGF5ZXJDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5ZXJDaGFuZ2UpOwogCiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE5NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIHZhbHVlKQog
ICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBsaWNhTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIu
aCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcG9z
aXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9u
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpQb3NpdGlvbkNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBvc2l0aW9uQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDksNyArMjE0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkK
ICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9pbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2ludENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFu
Y2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0y
MjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShj
b25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNpemUodmFsdWUp
OwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnNldFNpemUodmFs
dWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlNpemVDaGFuZ2UpOwor
ICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xh
eWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHZhbHVlKTsKLSAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpUcmFuc2Zvcm1DaGFuZ2UpOworICAg
IG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNz
TGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeAogICAg
IGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5zZm9ybSgpKQogICAgICAgICByZXR1cm47CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odmFsdWUpOwotICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdy
YXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsyNTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBw
cmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0UHJl
c2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlBy
ZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUHJlc2VydmVzM0RDaGFuZ2UpOwog
fQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI2Myw3ICsyNjgsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgdmFsdWUp
CiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9Cb3VuZHMoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHModmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tzVG9Cb3VuZHNDaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVy
LmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IGRyYXdzQ29u
dGVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRHJhd3NDb250ZW50
Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQodmFsdWUpOwogfQog
CkBAIC0yODIsNyArMjg3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNWaXNpYmxlKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IGNvbnRlbnRz
QXJlVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVN
YXBwZXJMYXllcjo6Q29udGVudHNWaXNpYmxlQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29u
dGVudHNWaXNpYmxlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1Zpc2li
bGUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnNl
dENvbnRlbnRzVmlzaWJsZSh2YWx1ZSk7CkBAIC0yOTQsNyArMjk5LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUgPT0gY29udGVudHNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoQ29udGVudHNPcGFxdWVDaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzT3BhcXVlKHZhbHVlKTsKIH0KIApAQCAtMzA1LDcgKzMxMCw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZh
bHVlKQogICAgIGlmICh2YWx1ZSA9PSBiYWNrZmFjZVZpc2liaWxpdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2YWx1ZSk7Ci0g
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2ZhY2VWaXNpYmlsaXR5Q2hh
bmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0zMTUsNyArMzIwLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0eShmbG9hdCB2YWx1ZSkKICAgICBpZiAo
dmFsdWUgPT0gb3BhY2l0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6
c2V0T3BhY2l0eSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
T3BhY2l0eUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKE9wYWNpdHlDaGFuZ2UpOwogfQogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTMyNSw3ICszMzAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgdmFs
dWUpCiAgICAgaWYgKHZhbHVlID09IGNvbnRlbnRzUmVjdCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KHZhbHVlKTsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c1JlY3RDaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShDb250ZW50c1JlY3RDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC0z
MzQsNyArMzM5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3NvbGlkQ29sb3IgPSBjb2xvcjsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxh
eWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQmFja2dyb3VuZENvbG9yQ2hh
bmdlKTsKIH0KIAogCkBAIC0zNjMsNyArMzY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICB9CiAKICAgICBz
ZXRDb250ZW50c1RvTWVkaWEobV9jb21wb3NpdGVkSW1hZ2UuZ2V0KCkpOwotICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5n
ZShDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2Uo
aW1hZ2UpOwogfQogCkBAIC0zNzMsNyArMzc4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNUb01lZGlhKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgog
ICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvTWVkaWEo
bWVkaWEpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRDaGFu
Z2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hhbmdlKTsKICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSBtZWRpYTsKIH0KIApAQCAtMzgzLDcgKzM4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihzaG93KTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworICAg
IG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQpAQCAtMzky
LDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBh
aW50Q291bnRlcihib29sIHNob3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEZWJ1
Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQw
MCwxNyArNDA1LDMzIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dS
ZXBhaW50Q291bnRlcihib29sIHNob3cpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9o
YXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KCk7Ci0gICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSh0aGlzKTsKKyAgICAgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOworICAgIGNvbW1pdExheWVy
Q2hhbmdlcygpOworICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CisgICAgLy8gdXBkYXRl
QmFja2luZ1N0b3JlKCkgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVC
YWNraW5nU3RvcmUoKSBuZWVkcyB0byBnZXQgVGV4dHVyZU1hcHBlciBmcm9tIFRleHR1cmVNYXBw
ZXJMYXllci4KICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHVwZGF0ZUJh
Y2tpbmdTdG9yZSgpOwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCi12b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRD
b3VudCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0
b3JlKCkKIHsKICAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworICAgIGlmICghc2hv
dWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7
CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5nU3RvcmVDaGFuZ2U7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgeworICAgICAgICAgICAgbV9iYWNraW5n
U3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgbV9jaGFuZ2VNYXNrIHw9IEJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7Cit9CiAKK3ZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KCkKK3sKKyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwogICAgIG1fdXNpbmdU
aWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOwogICAgIHVwZGF0ZURlYnVnSW5k
aWNhdG9ycygpOwogCkBAIC00MTgsNyArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQogICAgIGJvb2wgbmVl
ZHNUb1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgJiYgKG1fbmVlZHNEaXNwbGF5
IHx8ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsKICAgICBpZiAoaXNTaG93aW5nUmVw
YWludENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkgewogICAgICAgICBpbmNyZW1lbnRSZXBh
aW50Q291bnQoKTsKLSAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6
UmVwYWludENvdW50Q2hhbmdlOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gUmVwYWludENvdW50
Q2hhbmdlOwogICAgIH0KIH0KIApAQCAtNDI4LDcgKzQ0OSwxMDEgQEAgdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9h
dCB3aWR0aCkKICAgICAvLyBoYXJkIHRvIHNlZSAoc29tZSBsZXNzIHRoYW4gb25lIHBpeGVsIHdp
ZGUpLCBzbyB3ZSBkb3VibGUgdGhlaXIgc2l6ZSBoZXJlLgogICAgIG1fZGVidWdCb3JkZXJDb2xv
ciA9IGNvbG9yOwogICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoICogMjsKLSAgICBtX2No
YW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2U7CisgICAg
bV9jaGFuZ2VNYXNrIHw9IERlYnVnVmlzdWFsc0NoYW5nZTsKK30KKworc3RhdGljIHZvaWQgdG9U
ZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbGF5
ZXJzLCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIHRleG1hcExheWVycykKK3sKKyAgICB0
ZXhtYXBMYXllcnMucmVzZXJ2ZUNhcGFjaXR5KGxheWVycy5zaXplKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICB0ZXhtYXBMYXllcnMu
YXBwZW5kKHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyc1tpXSkpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQoreworICAgIGlmICht
X2NoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpIHsKKyAgICAgICAgVmVjdG9yPFRleHR1cmVNYXBw
ZXJMYXllcio+IHRleHR1cmVNYXBwZXJMYXllckNoaWxkcmVuOworICAgICAgICB0b1RleHR1cmVN
YXBwZXJMYXllclZlY3RvcihjaGlsZHJlbigpLCB0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7
CisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKHRleHR1cmVNYXBwZXJMYXllckNoaWxkcmVu
KTsKKyAgICB9CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgTWFza0xheWVyQ2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIobWFza0xheWVy
KCkpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBSZXBsaWNhTGF5ZXJDaGFuZ2UpCisgICAg
ICAgIG1fbGF5ZXItPnNldFJlcGxpY2FMYXllcih0b1RleHR1cmVNYXBwZXJMYXllcihyZXBsaWNh
TGF5ZXIoKSkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFBvc2l0aW9uQ2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbigpKTsKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBBbmNob3JQb2ludENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QW5jaG9yUG9p
bnQoYW5jaG9yUG9pbnQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgU2l6ZUNoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0U2l6ZShzaXplKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIFRyYW5zZm9ybUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKHRyYW5z
Zm9ybSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDaGlsZHJlblRyYW5zZm9ybUNoYW5n
ZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zv
cm0oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUHJlc2VydmVzM0RDaGFuZ2UpCisgICAg
ICAgIG1fbGF5ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKCkpOworCisgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIENvbnRlbnRzUmVjdENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29u
dGVudHNSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBNYXNr
c1RvQm91bmRzQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1hc2tz
VG9Cb3VuZHMoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRHJhd3NDb250ZW50Q2hhbmdl
KQorICAgICAgICBtX2xheWVyLT5zZXREcmF3c0NvbnRlbnQoZHJhd3NDb250ZW50KCkpOworCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIENvbnRlbnRzVmlzaWJsZUNoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0Q29udGVudHNWaXNpYmxlKGNvbnRlbnRzQXJlVmlzaWJsZSgpKTsKKworICAgIGlm
IChtX2NoYW5nZU1hc2sgJiBDb250ZW50c09wYXF1ZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0Q29udGVudHNPcGFxdWUoY29udGVudHNPcGFxdWUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNr
ZmFjZVZpc2liaWxpdHkoYmFja2ZhY2VWaXNpYmlsaXR5KCkpOworCisgICAgaWYgKG1fY2hhbmdl
TWFzayAmIE9wYWNpdHlDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldE9wYWNpdHkob3BhY2l0
eSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UpCisg
ICAgICAgIG1fbGF5ZXItPnNldFNvbGlkQ29sb3Ioc29saWRDb2xvcigpKTsKKworI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CisjZW5kaWYKKworICAgIGlmICht
X2NoYW5nZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpIHsKKyAgICAgICAgQVNTRVJUKG1faGFz
T3duQmFja2luZ1N0b3JlKTsKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFj
a2luZ1N0b3JlKTsKKyAgICB9CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1YWxz
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXREZWJ1Z1Zpc3VhbHMoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCksIGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFJlcGFpbnRDb3Vu
dENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UmVwYWludENvdW50KHJlcGFpbnRDb3VudCgp
KTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50Q2hhbmdlKQorICAgICAgICBtX2xh
eWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXIoKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRpb25z
KG1fYW5pbWF0aW9ucyk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRml4ZWRUb1ZpZXdwb3JD
aGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEZpeGVkVG9WaWV3cG9ydChmaXhlZFRvVmlld3Bv
cnQoKSk7CisKKyAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAKIC8qIFxyZWltcCAo
R3JhcGhpY3NMYXllci5oKQpAQCAtNDQ4LDI4ICs1NjMsMTggQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgY2hpbGRyZW4oKVtpXS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGUoKQotewotICAgIG1fY2hhbmdlTWFzayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFz
T3duQmFja2luZ1N0b3JlKTsKLSAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7Ci0gICAgbV9sYXll
ci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCi17CiAgICAgVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRleHR1cmVNYXBwZXIoKTsKICAgICBpZiAo
IXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghc2hvdWxkSGF2ZUJh
Y2tpbmdTdG9yZSgpKSB7Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAg
IEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IGVuY2xvc2lu
Z0ludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKSk7CiAgICAgaWYg
KCFtX25lZWRzRGlzcGxheSkKQEAgLTQ3Nyw5ICs1ODIsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICAgICBpZiAoZGlydHlSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAg
ICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZSgpOwotCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwogI2Vu
ZGlmCkBAIC01MTAsNyArNjEyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKICAgICAgICAg
bGlzdHNNYXRjaCA9IHZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZUxpc3QsIGhhc0Jp
Z1JvdGF0aW9uKSA+PSAwOwogCiAgICAgbV9hbmltYXRpb25zLmFkZChHcmFwaGljc0xheWVyQW5p
bWF0aW9uKGtleWZyYW1lc05hbWUsIHZhbHVlTGlzdCwgYm94U2l6ZSwgYW5pbSwgV1RGOjpjdXJy
ZW50VGltZSgpIC0gdGltZU9mZnNldCwgbGlzdHNNYXRjaCkpOwotICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkFuaW1hdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFu
aW1hdGlvbkNoYW5nZSk7CiAgICAgbV9hbmltYXRpb25TdGFydGVkVGltZXIuc3RhcnRPbmVTaG90
KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTE4LDcgKzYyMCw3IEBAIGJvb2wgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmltYXRp
b25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRpb25zKQogewogICAgIG1f
YW5pbWF0aW9ucyA9IGFuaW1hdGlvbnM7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdl
KTsKIH0KIAogCkBAIC01NDAsMTUgKzY0MiwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJz
KGZpbHRlcnMpOwogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKQoreworICAgIGlmIChtX2ZpeGVkVG9WaWV3
cG9ydCA9PSBmaXhlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9maXhlZFRvVmlld3BvcnQg
PSBmaXhlZDsKKyAgICBub3RpZnlDaGFuZ2UoRml4ZWRUb1ZpZXdwb3JDaGFuZ2UpOworfQorCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFp
bnRDb3VudCkKIHsKICAgICBtX3JlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2UpOworICAgIG5v
dGlmeUNoYW5nZShSZXBhaW50Q291bnRDaGFuZ2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGFmYzUxYTYyYzE1NjZmZjE0NDVlMTQ3MjUxNGFm
MjZhZWQ2YmVmOGMuLmZmYzEzZmU3YzRmZDRiZmFkMzc5NzdmM2RiZWY1YTRmNDNhMjk4YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC03Myw3ICs3Myw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25zdCB7
IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9u
KiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTkwLDcgKzg5LDcgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBJdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVtb3ZpbmcgZGVwZW5kZW5jeSBv
ZiBMYXllclRyZWVSZW5kZXJlciBvbiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KICAgICB2
b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUg
PSBiOyB9CiAKLSAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4
ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KKyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29s
KTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1Zp
ZXdwb3J0OyB9CiAKICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9kZWJ1Z0JvcmRlckNvbG9yOyB9CkBAIC0xMDAsMTMgKzk5LDU2IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0gICAgdm9pZCBkaWRG
bHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzKCk7
CisKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHVwZGF0ZURlYnVn
Qm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsK
LSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNr
aW5nU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRp
bWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwogCisgICAgLy8gVGhpcyBzZXQgb2Yg
ZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJl
ZW4KKyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hh
dCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KKyAgICBlbnVtIENoYW5nZU1hc2sgewor
ICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKKworICAgICAgICBDaGlsZHJl
bkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAorICAgICAgICBNYXNrTGF5ZXJDaGFuZ2Ug
PSAgICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAg
ICAgKDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwg
PDwgNCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgNSksCisg
ICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgNiksCisgICAgICAgIENv
bnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwgNyksCisKKyAgICAgICAgUG9zaXRpb25D
aGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2Ug
PSAgICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6ZUNoYW5nZSA9ICAgICAgICAgICAgICAg
ICgxTCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwg
MTEpLAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAg
ICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAgICgxTCA8PCAxMyksCisKKyAgICAgICAg
TWFza3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8PCAxNCksCisgICAgICAgIERyYXdzQ29u
dGVudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAorICAgICAgICBPcGFjaXR5Q2hhbmdlID0g
ICAgICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdl
ID0gICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2luZ1N0b3JlQ2hhbmdlID0gICAgICAgICgx
TCA8PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkp
LAorICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKKyAgICAg
ICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgxTCA8PCAyMSksCisKKyAgICAgICAgQW5p
bWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCisgICAgICAgIEZpbHRlckNoYW5n
ZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisgICAgICAgIERlYnVnVmlzdWFsc0NoYW5n
ZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAg
ICAgKDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5nZSA9ICAgICAgKDFM
IDw8IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlDaGFuZ2UoQ2hhbmdlTWFzayk7CisKICAg
ICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVyOwogICAgIFJlZlB0cjxUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwogICAgIE5hdGl2ZUlt
YWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwpAQCAtMTMyLDUgKzE3NCw3IEBAIGlu
bGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4
dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKwogfQogI2VuZGlmIC8vIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggOGU4
MGIxOTQyMzU5ZmJjOGNhNjBkODEzZmI5NzMxNmYzMzkxNTY0Mi4uMzAwOWY4MmI3MTg5ZWU0YWZi
OWI4ODg4ZWRiMjAwNDg3ZDYxMjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAg
LTIyLDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CkBAIC00MCwxMSArMzgsNiBA
QCBwdWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1h
cHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIHJldHVybiBsYXllciA/IHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDogMDsKLX0KLQogY29u
c3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcigpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpAQCAtMzg0LDgwICszNzcsMTEgQEAgVGV4
dHVyZU1hcHBlciogVGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlTWFwcGVyKCkgY29uc3QKICAg
ICByZXR1cm4gcm9vdExheWVyKCktPm1fdGV4dHVyZU1hcHBlcjsKIH0KIAotdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgQVNTRVJUKGdyYXBo
aWNzTGF5ZXIpOwotICAgIGludCBjaGFuZ2VNYXNrID0gZ3JhcGhpY3NMYXllci0+Y2hhbmdlTWFz
aygpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXIt
Pm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjaGFu
Z2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpCi0gICAgICAgIHNldENoaWxkcmVuKGdyYXBoaWNzTGF5
ZXItPmNoaWxkcmVuKCkpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBNYXNrTGF5ZXJDaGFuZ2Up
IHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBl
ckxheWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKSkKLSAgICAgICAgICAgbGF5ZXItPm1f
ZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGxp
Y2FMYXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpKQotICAg
ICAgICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwotICAgIH0KLQotICAgIGlmIChj
aGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFw
aGljc0xheWVyLT5tX2FuaW1hdGlvbnM7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRD
b3VudENoYW5nZSkKLSAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVy
LT5yZXBhaW50Q291bnQoKTsKLQotICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFw
cGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwotICAgIG1fc3RhdGUucmVwbGlj
YUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVy
KCkpOwotICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKLSAgICBt
X3N0YXRlLmFuY2hvclBvaW50ID0gZ3JhcGhpY3NMYXllci0+YW5jaG9yUG9pbnQoKTsKLSAgICBt
X3N0YXRlLnNpemUgPSBncmFwaGljc0xheWVyLT5zaXplKCk7Ci0gICAgbV9zdGF0ZS50cmFuc2Zv
cm0gPSBncmFwaGljc0xheWVyLT50cmFuc2Zvcm0oKTsKLSAgICBtX3N0YXRlLmNvbnRlbnRzUmVj
dCA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzUmVjdCgpOwotICAgIG1fc3RhdGUucHJlc2VydmVz
M0QgPSBncmFwaGljc0xheWVyLT5wcmVzZXJ2ZXMzRCgpOwotICAgIG1fc3RhdGUubWFza3NUb0Jv
dW5kcyA9IGdyYXBoaWNzTGF5ZXItPm1hc2tzVG9Cb3VuZHMoKTsKLSAgICBtX3N0YXRlLmRyYXdz
Q29udGVudCA9IGdyYXBoaWNzTGF5ZXItPmRyYXdzQ29udGVudCgpOwotICAgIG1fc3RhdGUuY29u
dGVudHNWaXNpYmxlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNBcmVWaXNpYmxlKCk7Ci0gICAg
bV9zdGF0ZS5jb250ZW50c09wYXF1ZSA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzT3BhcXVlKCk7
Ci0gICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBncmFwaGljc0xheWVyLT5iYWNrZmFj
ZVZpc2liaWxpdHkoKTsKLSAgICBtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtID0gZ3JhcGhpY3NM
YXllci0+Y2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICBtX3N0YXRlLm9wYWNpdHkgPSBncmFwaGlj
c0xheWVyLT5vcGFjaXR5KCk7Ci0gICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gZ3JhcGhpY3NMYXll
ci0+c29saWRDb2xvcigpOwotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAoY2hhbmdl
TWFzayAmIEZpbHRlckNoYW5nZSkKLSAgICAgICAgbV9zdGF0ZS5maWx0ZXJzID0gZ3JhcGhpY3NM
YXllci0+ZmlsdGVycygpOwotI2VuZGlmCi0gICAgbV9maXhlZFRvVmlld3BvcnQgPSBncmFwaGlj
c0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKLQotICAgIG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVy
cyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7Ci0gICAgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xh
eWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOwotICAgIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVy
V2lkdGgoKTsKLSAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9IGdyYXBoaWNzTGF5ZXIt
PmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7Ci0KLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0KLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0
UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0
QW5jaG9yUG9pbnQobV9zdGF0ZS5hbmNob3JQb2ludCk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3Jt
LnNldFNpemUobV9zdGF0ZS5zaXplKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0RmxhdHRl
bmluZyghbV9zdGF0ZS5wcmVzZXJ2ZXMzRCk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldExv
Y2FsVHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0u
c2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7Ci0KLSAgICBz
eW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRy
ZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRyZW4pCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXll
cio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4
dHVyZU1hcHBlckxheWVyKiBjaGlsZCA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5ld0NoaWxkcmVu
W2ldKTsKLSAgICAgICAgQVNTRVJUKGNoaWxkKTsKLSAgICAgICAgYWRkQ2hpbGQoY2hpbGQpOwot
ICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytp
KQorICAgICAgICBhZGRDaGlsZChuZXdDaGlsZHJlbltpXSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjphZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkTGF5ZXIpCkBAIC00
OTUsNiArNDE5LDEzNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRy
ZW4oKQogICAgIH0KIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcihU
ZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBpZiAobWFza0xheWVyKQorICAg
ICAgICBtYXNrTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRlLm1hc2tM
YXllciA9IG1hc2tMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGxp
Y2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlcGxpY2FMYXllcikKK3sKKyAgICBpZiAocmVw
bGljYUxheWVyKQorICAgICAgICByZXBsaWNhTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsK
KyAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQor
eworICAgIG1fc3RhdGUucG9zID0gcG9zaXRpb247CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNl
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3N0YXRlLnNpemUg
PSBzaXplOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKHNpemUpOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBh
bmNob3JQb2ludCkKK3sKKyAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7Cisg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0Qp
Cit7CisgICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOworICAgIG1fY3VycmVu
dFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBtX2N1
cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0odHJhbnNmb3JtKTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBjaGlsZHJlblRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLmNoaWxkcmVuVHJh
bnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm07CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldENo
aWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QpCit7
CisgICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKK3sK
KyAgICBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQorewor
ICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgY29udGVudHNWaXNpYmxlKQor
eworICAgIG1fc3RhdGUuY29udGVudHNWaXNpYmxlID0gY29udGVudHNWaXNpYmxlOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBjb250ZW50c09w
YXF1ZSkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBi
YWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBi
YWNrZmFjZVZpc2liaWxpdHk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgbV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0eTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIG1fc3RhdGUuc29saWRDb2xvciA9IGNvbG9yOworfQorCisjaWYgRU5BQkxF
KENTU19GSUxURVJTKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3N0YXRlLmZpbHRlcnMgPSBmaWx0
ZXJzOworfQorI2VuZGlmCisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3Vh
bHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgZGVidWdCb3JkZXJDb2xvciwg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpCit7CisgICAg
bV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gc2hvd0RlYnVnQm9yZGVyczsKKyAgICBtX3N0YXRl
LmRlYnVnQm9yZGVyQ29sb3IgPSBkZWJ1Z0JvcmRlckNvbG9yOworICAgIG1fc3RhdGUuZGVidWdC
b3JkZXJXaWR0aCA9IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENv
dW50ZXIgPSBzaG93UmVwYWludENvdW50ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBtX3N0YXRlLnJlcGFp
bnRDb3VudCA9IHJlcGFpbnRDb3VudDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
Cit7CisgICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1MYXllcjsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlv
bnMmIGFuaW1hdGlvbnMpCit7CisgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9W
aWV3cG9ydCkKK3sKKyAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2JhY2tpbmdT
dG9yZSA9IGJhY2tpbmdTdG9yZTsKK30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2Nl
bmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAppbmRleCA1NzViYjI3ZWI3YTg3NGMxODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2Ix
Li5jZWExMjgzOWRiMjcxNzkzMGRkYzM4Nzk5Y2VmNjFmZmU0MWUxMmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtMzQsNDkg
KzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9w
ZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0aGUgY29t
cG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVz
aC4KLSAgICBlbnVtIENoYW5nZU1hc2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAg
ICAgICAgMCwKLQotICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEp
LAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAotICAgICAg
ICBQb3NpdGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAgIEFuY2hv
clBvaW50Q2hhbmdlID0gICAgICAgICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFuZ2UgID0g
ICAgICAgICAgICAgICAoMUwgPDwgNSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAg
ICAgICAoMUwgPDwgNiksCi0gICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwg
PDwgNyksCi0KLSAgICAgICAgQ29udGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwK
LSAgICAgICAgT3BhY2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0gICAgICAg
IENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAgIFByZXNl
cnZlczNEQ2hhbmdlID0gICAgICAgICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1RvQm91bmRz
Q2hhbmdlID0gICAgICAgKDFMIDw8IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0g
ICAgICAgICgxTCA8PCAxNCksCi0gICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAo
MUwgPDwgMTUpLAotICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2
KSwKLQotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAg
ICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAgICAgIERp
c3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNrZ3JvdW5k
Q29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5ZXJDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDIxKSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAg
ICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwg
PDwgMjMpLAotCi0gICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQp
LAotICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQotICAgIH07
Ci0KICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAg
ICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKQEAgLTg0LDE4ICs0NSw0NiBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAg
ICAsIG1fdGV4dHVyZU1hcHBlcigwKQorICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNl
KQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKICAgICBU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7Ci0gICAgdm9pZCBmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7
CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3Rl
eHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KKworICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPFRleHR1cmVNYXBwZXJMYXllcio+Jik7CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVy
ZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxh
eWVyKik7CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKyAgICB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQg
c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2
b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRNYXNrc1Rv
Qm91bmRzKGJvb2wpOworICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOworICAgIHZvaWQg
c2V0Q29udGVudHNWaXNpYmxlKGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9v
bCk7CisgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7CisgICAgdm9pZCBzZXRP
cGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKTsKKyNlbmRpZgorICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0Rl
YnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9y
ZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICB2b2lkIHNldFJlcGFpbnRD
b3VudChpbnQpOworICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciopOworICAgIHZvaWQgc2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyYpOworICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOworICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4pOwor
CisgICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgZGVzY2VuZGFudHNPclNlbGZI
YXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKIAogICAgIHZvaWQgcGFpbnQoKTsKIAotICAg
IHZvaWQgc2V0QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlKSB7IG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOyB9CiAgICAg
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSB7IHJl
dHVybiBtX2JhY2tpbmdTdG9yZTsgfQogICAgIHZvaWQgY2xlYXJCYWNraW5nU3RvcmVzUmVjdXJz
aXZlKCk7CiAKQEAgLTExNiw3ICsxMDUsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3Np
dGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsK
ICAgICB2b2lkIGFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciopOwogICAgIHZvaWQgcmVtb3Zl
RnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKQEAgLTEzMyw3ICsx
MjEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgT1ZFUlJJREUgeyBtX2N1cnJlbnRGaWx0ZXJz
ID0gZmlsdGVyczsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHN5bmNBbmltYXRpb25zKCk7CiAgICAg
Ym9vbCBpc1Zpc2libGUoKSBjb25zdDsKICAgICBlbnVtIENvbnRlbnRzTGF5ZXJDb3VudCB7CiAg
ICAgICAgIE5vTGF5ZXJzV2l0aENvbnRlbnQsCkBAIC0yMTUsOSArMjAyLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OwogfTsKIAotCi1UZXh0dXJlTWFwcGVyTGF5ZXIq
IHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKLQogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcAppbmRleCAwOGRlM2UwZDBjN2Ex
NzBiOGUzNGM5YjA5NTYxYjdhMDk1ZThkNWMwLi44YTNhMjQ5YmUyMDBiZWYzNTkyZmNhOGM0YmQw
MGI0NTNhYzNiZGIzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRFZmwuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRHTC5jcHAKaW5kZXggZDEzMGEzZmI3YjNiMTg5MDZhZWE5ZGY4OTg5MzRiMWE2ZmZhZjAw
Ni4uYzIzZGU2MmExMGExYzE0MWU3NGEwZDMyMjAzZTQ1OTNiZGY4MjA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcAppbmRleCBl
ZTgyYjk2NWE0NjBjNDExZTUxY2FkMDgzZGMzYjA1YzRmYjAyY2Y0Li42NmI4ZDBmOTZkNGE3MjY2
ZTE2ZGJkY2FlMWE5YmY1OGYzMTk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcApA
QCAtMjUsNiArMjUsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgiCiAjaW5jbHVkZSAiUVdlYkZyYW1lQWRhcHRlci5oIgogI2luY2x1ZGUgIlFXZWJQYWdlQWRh
cHRlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183359</attachid>
            <date>2013-01-17 20:40:20 -0800</date>
            <delta_ts>2013-01-17 22:33:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130118133713.patch</filename>
            <type>text/plain</type>
            <size>44504</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxYjQ2ZWRjMjM5ZDk4
NDlkZTQ3MmE0Y2JiY2ZjOTJhODY1NDljYi4uNzQ4MjgwNGZiMGZhNGNmNTZiOTk4YjdlZGEyZjEz
NjlhYTQwYjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxMy0wMS0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgICAgICBTZXQgQmFja2dyb3VuZENvbG9y
Q2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CisgICAgICAgICAgICBGbHVzaCBwZW5kaW5nIGNoYW5nZXMgaW50byBUZXh0dXJlTWFw
cGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza3NU
b0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERyYXdz
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRl
bnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENv
bnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdW
aXN1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWlu
dENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRv
Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBl
ckxheWVyKToKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKwogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA4ODFmNTc3N2U5ZmI3MmNiNjhhMDFmZDNjMTBjOWRkNzA1NDAzYjU0Li44NmU3Mjg0NDRl
YTBmODc5NzQ5OGRkNjZlNDAyZjE5Nzg2MzcyZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1
cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgorCisyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1
ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTk4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCA0ZjEyODRmZTdjNmRiNmVjZWJlYTY4MTIwOWM1MWU2YmFlYmNmZjM1Li43NGM5YWY0
ZmM1MDA2Mjg4ZWY0MmNkMGVjZGQwN2E0ODk3NmRiOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4
dHVyZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1Rl
eHR1cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHA6CisKKzIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRl
YnVnIGJvcmRlcnMgYW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGluZ3MuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxOTgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZwppbmRleCAwNTQyYzVmNzVkMjY0MmJkNWZiYmYyYzQzY2MwOWRiODJmMDNhMDFlLi5kNmY0MTBl
MGU0YjlkNDZkYmRhMjYwNGQ5NDVjNGRlZGZhZDYyNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE2IEBACiAyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1
cmVNYXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBw
ZXJMYXllckNsaWVudFF0LmNwcDoKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBFbmFibGUgZGVidWcgYm9y
ZGVycyBhbmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0aW5ncy4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzE5OAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3ZDM5NWMyNGE0OTc1MWEzMThhN2I4ZjQy
MDYwMWVhMjViMTBiODU3Li5jNDI4ZGRmNjlmMWZiMjMxN2I3Y2UxMjUyYTgyOGFkZTg3YjYzYjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI4LDYg
KzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVGV4dHVyZU1hcHBlckxheWVyKiB0
b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICByZXR1cm4g
bGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6IDA7
Cit9CisKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgaWYgKCFmYWN0b3J5KQpAQCAtNDUsNyArNTAsNyBAQCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCiAgICAgLCBtX2xheWVyKGFkb3B0
UHRyKG5ldyBUZXh0dXJlTWFwcGVyTGF5ZXIoKSkpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQotICAgICwgbV9jaGFuZ2VNYXNrKDApCisgICAgLCBtX2NoYW5nZU1hc2soTm9D
aGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2hhc093bkJhY2tp
bmdTdG9yZSh0cnVlKQogICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCkBAIC01NSw3ICs2
MCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoYW5nZU1h
c2sgY2hhbmdlTWFzaykKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNo
YW5nZShDaGFuZ2VNYXNrIGNoYW5nZU1hc2spCiB7CiAgICAgbV9jaGFuZ2VNYXNrIHw9IGNoYW5n
ZU1hc2s7CiAgICAgaWYgKCFjbGllbnQoKSkKQEAgLTg2LDcgKzkxLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdl
KTsKICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsK
IH0KIApAQCAtOTQsNyArOTksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXROZWVkc0Rpc3BsYXkoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNEaXNwbGF5
Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKQEAgLTEw
OCw3ICsxMTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChtX25lZWRzRGlzcGxh
eSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7
CiB9CiAKQEAgLTExNyw3ICsxMjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYgY2hpbGRyZW4pCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVu
KGNoaWxkcmVuKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpD
aGlsZHJlbkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjcsNyAr
MTMyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29u
c3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGQKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXll
cik7CiB9CiAKQEAgLTEzNiwxNSArMTQxLDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQg
aW5kZXgpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRl
eCk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hpbGRyZW5DaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENo
aWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7
Ci0gICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcpOwotICAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAg
R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0xNTIsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRk
Q2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRC
ZWxvdyhsYXllciwgc2libGluZyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6Q2hpbGRyZW5DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9
CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMTYwLDcgKzE2NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciog
bGF5ZXIsIEdyYXBoaWNzTGF5CiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpyZXBs
YWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxk
KQogewogICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0No
aWxkKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJl
bkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzMsNyArMTc4LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TWFza0xheWVyKEdyYXBoaWNz
TGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBtYXNrTGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6TWFza0xheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoTWFza0xheWVyQ2hhbmdlKTsKIAogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE4OSw3ICsxOTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiB2YWx1ZSkKICAgICBpZiAodmFsdWUg
PT0gcmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6UmVwbGljYUxheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwbGljYUxh
eWVyQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xOTksNyAr
MjA0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IHBvc2l0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbih2YWx1ZSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UG9zaXRpb25DaGFuZ2UpOworICAgIG5v
dGlmeUNoYW5nZShQb3NpdGlvbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXll
ci5oKQpAQCAtMjA5LDcgKzIxNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgaWYgKHZhbHVl
ID09IGFuY2hvclBvaW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRBbmNob3JQb2ludCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6QW5jaG9yUG9pbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmNob3JQb2ludENoYW5n
ZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjIyLDcgKzIyNyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXpl
JiB2YWx1ZSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHZhbHVlKTsKICAgICBpZiAobWFz
a0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRTaXplKHZhbHVlKTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpTaXplQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoU2l6ZUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjMz
LDcgKzIzOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
VHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0y
NDMsNyArMjQ4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgKICAgICBpZiAodmFsdWUgPT0g
Y2hpbGRyZW5UcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuVHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENo
aWxkcmVuVHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0yNTMsNyArMjU4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
UHJlc2VydmVzM0QoYm9vbCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcHJlc2VydmVzM0QoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpQcmVzZXJ2ZXMzRENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKFByZXNlcnZlczNEQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yNjMsNyArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogICAgIGlmICh2YWx1
ZSA9PSBtYXNrc1RvQm91bmRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVy
OjpzZXRNYXNrc1RvQm91bmRzKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpNYXNrc1RvQm91bmRzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoTWFza3NUb0Jv
dW5kc0NoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjcyLDcg
KzI3Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVu
dChib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBkcmF3c0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRyYXdzQ29u
dGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERyYXdzQ29udGVudENoYW5nZSk7CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KHZhbHVlKTsKIH0KIApAQCAtMjgyLDcgKzI4
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c0FyZVZpc2libGUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNv
bnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzVmlzaWJsZUNo
YW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKHZhbHVlKTsKICAg
ICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRDb250ZW50c1Zpc2li
bGUodmFsdWUpOwpAQCAtMjk0LDcgKzI5OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09
IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09w
YXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwNSw3ICszMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2YWx1ZSkKICAgICBpZiAo
dmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFw
aGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CisgICAgbm90
aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQpAQCAtMzE1LDcgKzMyMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG9wYWNp
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkodmFs
dWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok9wYWNpdHlDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0zMjUsNyArMzMwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogICAgIGlmICh2
YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNS
ZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzM0LDcgKzMzOSw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zb2xpZENvbG9y
ID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudENo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91bmRDb2xvckNoYW5nZSk7CiB9CiAKIApA
QCAtMzYzLDcgKzM2OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgfQogCiAgICAgc2V0Q29udGVudHNUb01l
ZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5n
ZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKIH0KIApA
QCAtMzczLDcgKzM3OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICAgICAgcmV0dXJu
OwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9
CiAKQEAgLTM4Myw3ICszODgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFw
aGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
RGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKQEAgLTM5Miw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdl
KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC00MDEsMTEgKzQwNiwxMSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAg
ICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOworICAgIGNvbW1pdExheWVyQ2hhbmdlcygpOwor
ICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CiAgICAgLy8gdXBkYXRlQmFja2luZ1N0b3Jl
KCkgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVCYWNraW5nU3RvcmUo
KSBuZWVkcyB0byBnZXQgVGV4dHVyZU1hcHBlciBmcm9tIFRleHR1cmVNYXBwZXJMYXllci4KICAg
ICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKQEAgLTQxMywxMSArNDE4LDEx
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUo
KQogICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFzaG91bGRIYXZl
QmFja2luZ1N0b3JlKCkpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKLSAgICAg
ICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdl
OworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gQmFja2luZ1N0b3JlQ2hhbmdlOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNo
YW5nZTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5nU3RvcmVDaGFuZ2U7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTQyNyw3ICs0MzIsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKIHsKICAgICBB
U1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwotCiAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAK
QEAgLTQzNSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCiAgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNE
aXNwbGF5UmVjdC5pc0VtcHR5KCkpOwogICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
ICYmIG5lZWRzVG9SZXBhaW50KSB7CiAgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwot
ICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRD
aGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBSZXBhaW50Q291bnRDaGFuZ2U7CiAgICAg
fQogfQogCkBAIC00NDUsNyArNDQ5LDk5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiAgICAg
Ly8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91
YmxlIHRoZWlyIHNpemUgaGVyZS4KICAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAg
ICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7Ci0gICAgbV9jaGFuZ2VNYXNrIHw9IFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOworICAgIG1fY2hhbmdlTWFzayB8
PSBEZWJ1Z1Zpc3VhbHNDaGFuZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHRvVGV4dHVyZU1hcHBlckxh
eWVyVmVjdG9yKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGxheWVycywgVmVjdG9yPFRl
eHR1cmVNYXBwZXJMYXllcio+JiB0ZXhtYXBMYXllcnMpCit7CisgICAgdGV4bWFwTGF5ZXJzLnJl
c2VydmVDYXBhY2l0eShsYXllcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4bWFwTGF5ZXJzLmFwcGVuZCh0b1RleHR1
cmVNYXBwZXJMYXllcihsYXllcnNbaV0pKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBpZiAobV9jaGFuZ2VNYXNrID09
IE5vQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENo
aWxkcmVuQ2hhbmdlKSB7CisgICAgICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiB0ZXh0
dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbjsKKyAgICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0
b3IoY2hpbGRyZW4oKSwgdGV4dHVyZU1hcHBlckxheWVyQ2hpbGRyZW4pOworICAgICAgICBtX2xh
eWVyLT5zZXRDaGlsZHJlbih0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7CisgICAgfQorCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0TWFza0xheWVyKHRvVGV4dHVyZU1hcHBlckxheWVyKG1hc2tMYXllcigpKSk7CisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgUmVwbGljYUxheWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRSZXBsaWNhTGF5ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIocmVwbGljYUxheWVyKCkpKTsKKwor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBQb3NpdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5jaG9y
UG9pbnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50
KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFNpemVDaGFuZ2UpCisgICAgICAgIG1fbGF5
ZXItPnNldFNpemUoc2l6ZSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBUcmFuc2Zvcm1D
aGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0oKSk7CisKKyAg
ICBpZiAobV9jaGFuZ2VNYXNrICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIFByZXNlcnZlczNEQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBD
b250ZW50c1JlY3RDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzUmVjdChjb250
ZW50c1JlY3QoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgTWFza3NUb0JvdW5kc0NoYW5n
ZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKCkpOwor
CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERyYXdzQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBDb250ZW50c1Zpc2libGVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRl
bnRzVmlzaWJsZShjb250ZW50c0FyZVZpc2libGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzT3Bh
cXVlKGNvbnRlbnRzT3BhcXVlKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tmYWNl
VmlzaWJpbGl0eUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5
KGJhY2tmYWNlVmlzaWJpbGl0eSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBPcGFjaXR5
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkoKSk7CisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVy
LT5zZXRTb2xpZENvbG9yKHNvbGlkQ29sb3IoKSk7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworI2VuZGlmCisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
QmFja2luZ1N0b3JlQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9i
YWNraW5nU3RvcmUuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERlYnVnVmlzdWFs
c0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCksIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dp
bmdSZXBhaW50Q291bnRlcigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBSZXBhaW50Q291
bnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRDb3VudChyZXBhaW50Q291bnQo
KSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyKCkpOworCisgICAgaWYgKG1fY2hh
bmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QW5pbWF0aW9u
cyhtX2FuaW1hdGlvbnMpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9y
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdw
b3J0KCkpOworCisgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCiAvKiBccmVpbXAg
KEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQ2NSwxMSArNTYxLDYgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgY2hpbGRyZW4oKVtpXS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGUoKQotewotICAgIG1fY2hhbmdlTWFzayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFz
T3duQmFja2luZ1N0b3JlKTsKQEAgLTUxOSw3ICs2MTAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdAogICAgICAgICBsaXN0c01hdGNoID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pID49IDA7CiAKICAgICBtX2FuaW1hdGlvbnMuYWRkKEdy
YXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJhbWVzTmFtZSwgdmFsdWVMaXN0LCBib3hTaXplLCBh
bmltLCBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1l
ci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjcsNyArNjE4LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlv
bnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKLSAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlckxheWVyOjpBbmltYXRpb25DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShB
bmltYXRpb25DaGFuZ2UpOwogfQogCiAKQEAgLTU0OSw3ICs2NDAsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFw
aGljc0xheWVyVAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOwor
ICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVy
OjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCkBAIC01NjEsMTMgKzY1MiwyMiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxUZXh0dXJlTWFwcGVyQmFja2luZwogICAgICAgICByZXR1cm47CiAKICAgICBtX2JhY2tpbmdT
dG9yZSA9IGJhY2tpbmdTdG9yZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpCYWNraW5nU3RvcmVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShCYWNraW5nU3RvcmVDaGFu
Z2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmll
d3BvcnQoYm9vbCBmaXhlZCkKK3sKKyAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gZml4ZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7CisgICAg
bm90aWZ5Q2hhbmdlKEZpeGVkVG9WaWV3cG9yQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAg
ICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVw
YWludENvdW50Q2hhbmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAppbmRleCA1ZTA4MTZlNWQ2MzIxY2NhNzljMmIyNDc4ZTk3NzdlZjkxYTRmY2FjLi5k
NTFlYTBiZTlkNDg5ZGQ3ODUxYWVkMGNlMzc2MjU2ZDJhZDQyZmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtNzMsNyArNzMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5
ZXI7IH0KIAotICAgIHZvaWQgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdl
TWFzayk7CiAgICAgaW5saW5lIGludCBjaGFuZ2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9jaGFu
Z2VNYXNrOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSk7CkBAIC05MSw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc093
bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CiAgICAg
dm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Pik7CiAKLSAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRU
b1ZpZXdwb3J0ID0gZml4ZWQ7IH0KKyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsK
ICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdw
b3J0OyB9CiAKICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWJ1Z0JvcmRlckNvbG9yOyB9CkBAIC0xMDEsMTMgKzEwMCw1NSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwotICAgIHZvaWQgZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCk7CisKKyAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlcygpOwor
ICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgdXBkYXRlRGVidWdCb3Jk
ZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAg
IHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdT
dG9yZSgpIGNvbnN0OwogICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGltZXI8
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+Kik7CiAKKyAgICAvLyBUaGlzIHNldCBvZiBmbGFn
cyBoZWxwIHVzIGRlZmVyIHdoaWNoIHByb3BlcnRpZXMgb2YgdGhlIGxheWVyIGhhdmUgYmVlbgor
ICAgIC8vIG1vZGlmaWVkIGJ5IHRoZSBjb21wb3NpdG9yLCBzbyB3ZSBjYW4ga25vdyB3aGF0IHRv
IGxvb2sgZm9yIGluIHRoZSBuZXh0IGZsdXNoLgorICAgIGVudW0gQ2hhbmdlTWFzayB7CisgICAg
ICAgIE5vQ2hhbmdlcyA9ICAgICAgICAgICAgICAgICAwLAorCisgICAgICAgIENoaWxkcmVuQ2hh
bmdlID0gICAgICAgICAgICAoMUwgPDwgMSksCisgICAgICAgIE1hc2tMYXllckNoYW5nZSA9ICAg
ICAgICAgICAoMUwgPDwgMiksCisgICAgICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAo
MUwgPDwgMyksCisKKyAgICAgICAgQ29udGVudENoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCA0
KSwKKyAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlID0gICAgICAgICgxTCA8PCA1KSwKKyAgICAg
ICAgQ29udGVudHNWaXNpYmxlQ2hhbmdlID0gICAgICgxTCA8PCA2KSwKKyAgICAgICAgQ29udGVu
dHNPcGFxdWVDaGFuZ2UgPSAgICAgICgxTCA8PCA3KSwKKworICAgICAgICBQb3NpdGlvbkNoYW5n
ZSA9ICAgICAgICAgICAgKDFMIDw8IDgpLAorICAgICAgICBBbmNob3JQb2ludENoYW5nZSA9ICAg
ICAgICAgKDFMIDw8IDkpLAorICAgICAgICBTaXplQ2hhbmdlID0gICAgICAgICAgICAgICAgKDFM
IDw8IDEwKSwKKyAgICAgICAgVHJhbnNmb3JtQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAxMSks
CisgICAgICAgIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlID0gICAoMUwgPDwgMTIpLAorICAgICAg
ICBQcmVzZXJ2ZXMzRENoYW5nZSA9ICAgICAgICAgKDFMIDw8IDEzKSwKKworICAgICAgICBNYXNr
c1RvQm91bmRzQ2hhbmdlID0gICAgICAgKDFMIDw8IDE0KSwKKyAgICAgICAgRHJhd3NDb250ZW50
Q2hhbmdlID0gICAgICAgICgxTCA8PCAxNSksCisgICAgICAgIE9wYWNpdHlDaGFuZ2UgPSAgICAg
ICAgICAgICAoMUwgPDwgMTYpLAorICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAg
KDFMIDw8IDE3KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2UgPSAgICAgICAgKDFMIDw8
IDE4KSwKKyAgICAgICAgRGlzcGxheUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxOSksCisg
ICAgICAgIENvbnRlbnRzRGlzcGxheUNoYW5nZSA9ICAgICAoMUwgPDwgMjApLAorICAgICAgICBC
YWNrZ3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIxKSwKKworICAgICAgICBBbmltYXRp
b25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0g
ICAgICAgICAgICAgICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0g
ICAgICAgICgxTCA8PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAo
MUwgPDwgMjUpLAorCisgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hhbmdlID0gICAgICAoMUwgPDwg
MjYpCisgICAgfTsKKyAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFuZ2VNYXNrKTsKKwogICAgIE93
blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0aXZlSW1hZ2VQ
dHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CkBAIC0xMzMsNSArMTc0LDcgQEAgaW5saW5l
IHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihHcmFwaGljc0wKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIqPihsYXllcik7CiB9CiAKK1RleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciopOworCiB9CiAjZW5kaWYgLy8gR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA2YjNhYTYy
NGE0YjY4YzdkNWIyYWQ0YjY1ZTVkYzc5NzgyMGZhYjhiLi40OGJkOGM5ZDgyZDJjMDE2OGQ2Mjcz
YTkzOGE4YmFjN2M4OThkNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjIs
OCArMjIsNiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVk
ZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKQEAgLTQwLDExICszOCw2IEBAIHB1
YmxpYzoKICAgICB7IH0KIH07CiAKLVRleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFwcGVy
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgcmV0dXJuIGxheWVyID8gdG9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkgOiAwOwotfQotCiBjb25zdCBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVyKCkgY29uc3QK
IHsKICAgICBpZiAobV9lZmZlY3RUYXJnZXQpCkBAIC0zNzQsODMgKzM2NywxMSBAQCBUZXh0dXJl
TWFwcGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBwZXIoKSBjb25zdAogICAgIHJl
dHVybiByb290TGF5ZXIoKS0+bV90ZXh0dXJlTWFwcGVyOwogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciogZ3JhcGhpY3NMYXllcikKLXsKLSAgICBBU1NFUlQoZ3JhcGhpY3NM
YXllcik7Ci0gICAgaW50IGNoYW5nZU1hc2sgPSBncmFwaGljc0xheWVyLT5jaGFuZ2VNYXNrKCk7
Ci0KLSAgICBpZiAoY2hhbmdlTWFzayA9PSBOb0NoYW5nZXMgJiYgZ3JhcGhpY3NMYXllci0+bV9h
bmltYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNoYW5nZU1h
c2sgJiBDaGlsZHJlbkNoYW5nZSkKLSAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+
Y2hpbGRyZW4oKSk7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkgewot
ICAgICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5
ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpKQotICAgICAgICAgICBsYXllci0+bV9lZmZl
Y3RUYXJnZXQgPSB0aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwbGljYUxh
eWVyQ2hhbmdlKSB7Ci0gICAgICAgaWYgKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1Rl
eHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkpCi0gICAgICAg
ICAgIGxheWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5n
ZU1hc2sgJiBBbmltYXRpb25DaGFuZ2UpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9IGdyYXBoaWNz
TGF5ZXItPm1fYW5pbWF0aW9uczsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgQmFja2luZ1N0b3Jl
Q2hhbmdlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IGdyYXBoaWNzTGF5ZXItPm1fYmFja2lu
Z1N0b3JlLmdldCgpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2Up
Ci0gICAgICAgIG1fc3RhdGUucmVwYWludENvdW50ID0gZ3JhcGhpY3NMYXllci0+cmVwYWludENv
dW50KCk7Ci0KLSAgICBtX3N0YXRlLm1hc2tMYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdy
YXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKTsKLSAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKTsKLSAgICBt
X3N0YXRlLnBvcyA9IGdyYXBoaWNzTGF5ZXItPnBvc2l0aW9uKCk7Ci0gICAgbV9zdGF0ZS5hbmNo
b3JQb2ludCA9IGdyYXBoaWNzTGF5ZXItPmFuY2hvclBvaW50KCk7Ci0gICAgbV9zdGF0ZS5zaXpl
ID0gZ3JhcGhpY3NMYXllci0+c2l6ZSgpOwotICAgIG1fc3RhdGUudHJhbnNmb3JtID0gZ3JhcGhp
Y3NMYXllci0+dHJhbnNmb3JtKCk7Ci0gICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSBncmFwaGlj
c0xheWVyLT5jb250ZW50c1JlY3QoKTsKLSAgICBtX3N0YXRlLnByZXNlcnZlczNEID0gZ3JhcGhp
Y3NMYXllci0+cHJlc2VydmVzM0QoKTsKLSAgICBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgPSBncmFw
aGljc0xheWVyLT5tYXNrc1RvQm91bmRzKCk7Ci0gICAgbV9zdGF0ZS5kcmF3c0NvbnRlbnQgPSBn
cmFwaGljc0xheWVyLT5kcmF3c0NvbnRlbnQoKTsKLSAgICBtX3N0YXRlLmNvbnRlbnRzVmlzaWJs
ZSA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzQXJlVmlzaWJsZSgpOwotICAgIG1fc3RhdGUuY29u
dGVudHNPcGFxdWUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1ZSgpOwotICAgIG1fc3Rh
dGUuYmFja2ZhY2VWaXNpYmlsaXR5ID0gZ3JhcGhpY3NMYXllci0+YmFja2ZhY2VWaXNpYmlsaXR5
KCk7Ci0gICAgbV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPmNoaWxk
cmVuVHJhbnNmb3JtKCk7Ci0gICAgbV9zdGF0ZS5vcGFjaXR5ID0gZ3JhcGhpY3NMYXllci0+b3Bh
Y2l0eSgpOwotICAgIG1fc3RhdGUuc29saWRDb2xvciA9IGdyYXBoaWNzTGF5ZXItPnNvbGlkQ29s
b3IoKTsKLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBGaWx0
ZXJDaGFuZ2UpCi0gICAgICAgIG1fc3RhdGUuZmlsdGVycyA9IGdyYXBoaWNzTGF5ZXItPmZpbHRl
cnMoKTsKLSNlbmRpZgotICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4
ZWRUb1ZpZXdwb3J0KCk7Ci0KLSAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGlj
c0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOwotICAgIG1fc3RhdGUuZGVidWdCb3JkZXJD
b2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVn
Qm9yZGVyQ29sb3IoKTsKLSAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7Ci0g
ICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpOwotCi0gICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+
cGxhdGZvcm1MYXllcigpOwotCi0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFk
anVzdGVkUG9zaXRpb24oKSk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBvaW50
KG1fc3RhdGUuYW5jaG9yUG9pbnQpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKG1f
c3RhdGUuc2l6ZSk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEZsYXR0ZW5pbmcoIW1fc3Rh
dGUucHJlc2VydmVzM0QpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9y
bShtX3N0YXRlLnRyYW5zZm9ybSk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldENoaWxkcmVu
VHJhbnNmb3JtKG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOwotCi0gICAgc3luY0FuaW1hdGlv
bnMoKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZl
Y3RvcjxHcmFwaGljc0xheWVyKj4mIG5ld0NoaWxkcmVuKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYgbmV3Q2hp
bGRyZW4pCiB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVNYXBwZXJM
YXllciogY2hpbGQgPSB0b1RleHR1cmVNYXBwZXJMYXllcihuZXdDaGlsZHJlbltpXSk7Ci0gICAg
ICAgIEFTU0VSVChjaGlsZCk7Ci0gICAgICAgIGFkZENoaWxkKGNoaWxkKTsKLSAgICB9CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAg
YWRkQ2hpbGQobmV3Q2hpbGRyZW5baV0pOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
YWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVyKiBjaGlsZExheWVyKQpAQCAtNDg4LDYgKzQwOSwx
MzUgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlbW92ZUFsbENoaWxkcmVuKCkKICAgICB9
CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBl
ckxheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1hc2tMYXllcikKKyAgICAgICAgbWFza0xh
eWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7CisgICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSBtYXNr
TGF5ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBsaWNhTGF5ZXIoVGV4
dHVyZU1hcHBlckxheWVyKiByZXBsaWNhTGF5ZXIpCit7CisgICAgaWYgKHJlcGxpY2FMYXllcikK
KyAgICAgICAgcmVwbGljYUxheWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7CisgICAgbV9zdGF0
ZS5yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBtX3N0
YXRlLnBvcyA9IHBvc2l0aW9uOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihh
ZGp1c3RlZFBvc2l0aW9uKCkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2l6
ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgbV9zdGF0ZS5zaXplID0gc2l6ZTsKKyAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0U2l6ZShzaXplKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQp
Cit7CisgICAgbV9zdGF0ZS5hbmNob3JQb2ludCA9IGFuY2hvclBvaW50OworICAgIG1fY3VycmVu
dFRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKQoreworICAgIG1f
c3RhdGUucHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMzRDsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0u
c2V0RmxhdHRlbmluZyghcHJlc2VydmVzM0QpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7
CisgICAgbV9zdGF0ZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgbV9jdXJyZW50VHJhbnNm
b3JtLnNldExvY2FsVHJhbnNmb3JtKHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Y2hpbGRyZW5UcmFuc2Zvcm0pCit7CisgICAgbV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSA9IGNo
aWxkcmVuVHJhbnNmb3JtOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5z
Zm9ybShjaGlsZHJlblRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0KQoreworICAgIG1fc3Rh
dGUuY29udGVudHNSZWN0ID0gY29udGVudHNSZWN0OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9zdGF0
ZS5tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sKKyAgICBtX3N0YXRl
LmRyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldENvbnRlbnRzVmlzaWJsZShib29sIGNvbnRlbnRzVmlzaWJsZSkKK3sKKyAgICBtX3N0
YXRlLmNvbnRlbnRzVmlzaWJsZSA9IGNvbnRlbnRzVmlzaWJsZTsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgY29udGVudHNPcGFxdWUpCit7Cisg
ICAgbV9zdGF0ZS5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgYmFja2ZhY2VWaXNp
YmlsaXR5KQoreworICAgIG1fc3RhdGUuYmFja2ZhY2VWaXNpYmlsaXR5ID0gYmFja2ZhY2VWaXNp
YmlsaXR5OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0T3BhY2l0eShmbG9hdCBv
cGFjaXR5KQoreworICAgIG1fc3RhdGUub3BhY2l0eSA9IG9wYWNpdHk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRTb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAg
ICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBjb2xvcjsKK30KKworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpCit7CisgICAgbV9zdGF0ZS5maWx0ZXJzID0gZmlsdGVyczsKK30KKyNl
bmRpZgorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdWaXN1YWxzKGJvb2wgc2hv
d0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVn
Qm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKQoreworICAgIG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycyA9IHNob3dEZWJ1Z0JvcmRlcnM7CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRl
ckNvbG9yID0gZGVidWdCb3JkZXJDb2xvcjsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgg
PSBkZWJ1Z0JvcmRlcldpZHRoOworICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gc2hv
d1JlcGFpbnRDb3VudGVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWlu
dENvdW50KGludCByZXBhaW50Q291bnQpCit7CisgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBy
ZXBhaW50Q291bnQ7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c0xh
eWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQoreworICAgIG1f
Y29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRp
b25zKQoreworICAgIG1fYW5pbWF0aW9ucyA9IGFuaW1hdGlvbnM7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZFRvVmlld3BvcnQpCit7
CisgICAgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZFRvVmlld3BvcnQ7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlKQoreworICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOwor
fQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmlu
Z0FuaW1hdGlvbnMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGQwNTYw
MGM1YTIxMWMyZTAxNzY3NTlmZTViMDFlYzYwYjc2Yzk0N2YuLmUwYzgyMzNjODJlNWY3YzYxY2Q5
NWNhZmM0MTkxZGUzYTI4NmVmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTI0LDcg
KzI0LDYgQEAKIAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCkBAIC0zNCw1MSArMzMsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zOwogY2xhc3MgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXI7Ci1jbGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjsK
IAogY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXJBbmltYXRp
b246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlckxheWVy
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICAvLyBUaGlzIHNl
dCBvZiBmbGFncyBoZWxwIHVzIGRlZmVyIHdoaWNoIHByb3BlcnRpZXMgb2YgdGhlIGxheWVyIGhh
dmUgYmVlbgotICAgIC8vIG1vZGlmaWVkIGJ5IHRoZSBjb21wb3NpdG9yLCBzbyB3ZSBjYW4ga25v
dyB3aGF0IHRvIGxvb2sgZm9yIGluIHRoZSBuZXh0IGZsdXNoLgotICAgIGVudW0gQ2hhbmdlTWFz
ayB7Ci0gICAgICAgIE5vQ2hhbmdlcyA9ICAgICAgICAgICAgICAgICAwLAotCi0gICAgICAgIENo
aWxkcmVuQ2hhbmdlID0gICAgICAgICAgICAoMUwgPDwgMSksCi0gICAgICAgIE1hc2tMYXllckNo
YW5nZSA9ICAgICAgICAgICAoMUwgPDwgMiksCi0gICAgICAgIFBvc2l0aW9uQ2hhbmdlID0gICAg
ICAgICAgICAoMUwgPDwgMyksCi0KLSAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAgICAgICAg
ICgxTCA8PCA0KSwKLSAgICAgICAgU2l6ZUNoYW5nZSAgPSAgICAgICAgICAgICAgICgxTCA8PCA1
KSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCA2KSwKLSAgICAg
ICAgQ29udGVudENoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCA3KSwKLQotICAgICAgICBDb250
ZW50c09yaWVudGF0aW9uQ2hhbmdlID0gKDFMIDw8IDkpLAotICAgICAgICBPcGFjaXR5Q2hhbmdl
ID0gICAgICAgICAgICAgKDFMIDw8IDEwKSwKLSAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlID0g
ICAgICAgICgxTCA8PCAxMSksCi0KLSAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAg
ICgxTCA8PCAxMiksCi0gICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2UgPSAgICAgICAoMUwgPDwg
MTMpLAotICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDE0KSwKLSAg
ICAgICAgQ29udGVudHNWaXNpYmxlQ2hhbmdlID0gICAgICgxTCA8PCAxNSksCi0gICAgICAgIENv
bnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwgMTYpLAotCi0gICAgICAgIEJhY2tmYWNl
VmlzaWJpbGl0eUNoYW5nZSA9ICAoMUwgPDwgMTcpLAotICAgICAgICBDaGlsZHJlblRyYW5zZm9y
bUNoYW5nZSA9ICAgKDFMIDw8IDE4KSwKLSAgICAgICAgRGlzcGxheUNoYW5nZSA9ICAgICAgICAg
ICAgICgxTCA8PCAxOSksCi0gICAgICAgIEJhY2tncm91bmRDb2xvckNoYW5nZSA9ICAgICAoMUwg
PDwgMjApLAotCi0gICAgICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEp
LAotICAgICAgICBBbmltYXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAg
ICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyksCi0KLSAgICAgICAgRGVi
dWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCksCi0gICAgICAgIFJlcGFpbnRDb3Vu
dENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAotCi0gICAgICAgIEJhY2tpbmdTdG9yZUNoYW5n
ZSA9ICAgICAgICAoMUwgPDwgMjYpCi0gICAgfTsKLQogICAgIFRleHR1cmVNYXBwZXJMYXllcigp
CiAgICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQpAQCAt
ODcsMTMgKzQ2LDQyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2N1cnJlbnRPcGFjaXR5KDEpCiAg
ICAgICAgICwgbV9jZW50ZXJaKDApCiAgICAgICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCisgICAg
ICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCiAgICAgeyB9CiAKICAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAogICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIo
KSBjb25zdDsKLSAgICB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqKTsKICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQorCisg
ICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mKTsK
KyAgICB2b2lkIHNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyAgICB2b2lkIHNl
dFJlcGxpY2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyAgICB2b2lkIHNldFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7
CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAgICB2b2lk
IHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CisgICAgdm9pZCBzZXRE
cmF3c0NvbnRlbnQoYm9vbCk7CisgICAgdm9pZCBzZXRDb250ZW50c1Zpc2libGUoYm9vbCk7Cisg
ICAgdm9pZCBzZXRDb250ZW50c09wYXF1ZShib29sKTsKKyAgICB2b2lkIHNldEJhY2tmYWNlVmlz
aWJpbGl0eShib29sKTsKKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOworICAgIHZvaWQgc2V0
U29saWRDb2xvcihjb25zdCBDb2xvciYpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2
b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworI2VuZGlmCisgICAgdm9p
ZCBzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgZGVi
dWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENv
dW50ZXIpOworICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CisgICAgdm9pZCBzZXRDb250
ZW50c0xheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRBbmlt
YXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CisgICAgdm9pZCBzZXRGaXhl
ZFRvVmlld3BvcnQoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZSopOworCisgICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wg
ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdDsKIAogICAgIHZv
aWQgcGFpbnQoKTsKQEAgLTExNSw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQg
YWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
KTsKICAgICB2b2lkIGFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciopOwogICAgIHZvaWQgcmVt
b3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKQEAgLTEzMiw3
ICsxMTksNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgT1ZFUlJJREUgeyBtX2N1cnJlbnRGaWx0
ZXJzID0gZmlsdGVyczsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHN5bmNBbmltYXRpb25zKCk7CiAg
ICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKICAgICBlbnVtIENvbnRlbnRzTGF5ZXJDb3VudCB7
CiAgICAgICAgIE5vTGF5ZXJzV2l0aENvbnRlbnQsCkBAIC0yMTQsOSArMjAwLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OwogfTsKIAotCi1UZXh0dXJlTWFwcGVyTGF5
ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKLQogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcAppbmRleCAwOGRlM2UwZDBj
N2ExNzBiOGUzNGM5YjA5NTYxYjdhMDk1ZThkNWMwLi44YTNhMjQ5YmUyMDBiZWYzNTkyZmNhOGM0
YmQwMGI0NTNhYzNiZGIzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwu
Y3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRFZmwu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRHTC5jcHAKaW5kZXggZDEzMGEzZmI3YjNiMTg5MDZhZWE5ZGY4OTg5MzRiMWE2ZmZh
ZjAwNi4uYzIzZGU2MmExMGExYzE0MWU3NGEwZDMyMjAzZTQ1OTNiZGY4MjA3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcAppbmRl
eCBlZTgyYjk2NWE0NjBjNDExZTUxY2FkMDgzZGMzYjA1YzRmYjAyY2Y0Li42NmI4ZDBmOTZkNGE3
MjY2ZTE2ZGJkY2FlMWE5YmY1OGYzMTk4NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNw
cApAQCAtMjUsNiArMjUsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgiCiAjaW5jbHVkZSAiUVdlYkZyYW1lQWRhcHRlci5oIgogI2luY2x1ZGUgIlFXZWJQYWdl
QWRhcHRlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183379</attachid>
            <date>2013-01-17 22:33:36 -0800</date>
            <delta_ts>2013-01-18 20:11:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130118153028.patch</filename>
            <type>text/plain</type>
            <size>44760</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxYjQ2ZWRjMjM5ZDk4
NDlkZTQ3MmE0Y2JiY2ZjOTJhODY1NDljYi4uNzQ4MjgwNGZiMGZhNGNmNTZiOTk4YjdlZGEyZjEz
NjlhYTQwYjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxMy0wMS0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgICAgICBTZXQgQmFja2dyb3VuZENvbG9y
Q2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CisgICAgICAgICAgICBGbHVzaCBwZW5kaW5nIGNoYW5nZXMgaW50byBUZXh0dXJlTWFw
cGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza3NU
b0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERyYXdz
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRl
bnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENv
bnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdW
aXN1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWlu
dENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRv
Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBl
ckxheWVyKToKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKwogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA4ODFmNTc3N2U5ZmI3MmNiNjhhMDFmZDNjMTBjOWRkNzA1NDAzYjU0Li44NmU3Mjg0NDRl
YTBmODc5NzQ5OGRkNjZlNDAyZjE5Nzg2MzcyZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1
cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgorCisyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1
ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTk4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCA0ZjEyODRmZTdjNmRiNmVjZWJlYTY4MTIwOWM1MWU2YmFlYmNmZjM1Li43NGM5YWY0
ZmM1MDA2Mjg4ZWY0MmNkMGVjZGQwN2E0ODk3NmRiOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4
dHVyZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1Rl
eHR1cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHA6CisKKzIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRl
YnVnIGJvcmRlcnMgYW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGluZ3MuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxOTgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZwppbmRleCAwNTQyYzVmNzVkMjY0MmJkNWZiYmYyYzQzY2MwOWRiODJmMDNhMDFlLi5kNmY0MTBl
MGU0YjlkNDZkYmRhMjYwNGQ5NDVjNGRlZGZhZDYyNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE2IEBACiAyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1
cmVNYXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBw
ZXJMYXllckNsaWVudFF0LmNwcDoKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBFbmFibGUgZGVidWcgYm9y
ZGVycyBhbmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0aW5ncy4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzE5OAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3ZDM5NWMyNGE0OTc1MWEzMThhN2I4ZjQy
MDYwMWVhMjViMTBiODU3Li5jNDI4ZGRmNjlmMWZiMjMxN2I3Y2UxMjUyYTgyOGFkZTg3YjYzYjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI4LDYg
KzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVGV4dHVyZU1hcHBlckxheWVyKiB0
b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICByZXR1cm4g
bGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6IDA7
Cit9CisKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgaWYgKCFmYWN0b3J5KQpAQCAtNDUsNyArNTAsNyBAQCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCiAgICAgLCBtX2xheWVyKGFkb3B0
UHRyKG5ldyBUZXh0dXJlTWFwcGVyTGF5ZXIoKSkpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQotICAgICwgbV9jaGFuZ2VNYXNrKDApCisgICAgLCBtX2NoYW5nZU1hc2soTm9D
aGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2hhc093bkJhY2tp
bmdTdG9yZSh0cnVlKQogICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCkBAIC01NSw3ICs2
MCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoYW5nZU1h
c2sgY2hhbmdlTWFzaykKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNo
YW5nZShDaGFuZ2VNYXNrIGNoYW5nZU1hc2spCiB7CiAgICAgbV9jaGFuZ2VNYXNrIHw9IGNoYW5n
ZU1hc2s7CiAgICAgaWYgKCFjbGllbnQoKSkKQEAgLTg2LDcgKzkxLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdl
KTsKICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsK
IH0KIApAQCAtOTQsNyArOTksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXROZWVkc0Rpc3BsYXkoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNEaXNwbGF5
Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKQEAgLTEw
OCw3ICsxMTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChtX25lZWRzRGlzcGxh
eSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7
CiB9CiAKQEAgLTExNyw3ICsxMjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYgY2hpbGRyZW4pCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVu
KGNoaWxkcmVuKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpD
aGlsZHJlbkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjcsNyAr
MTMyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29u
c3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGQKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXll
cik7CiB9CiAKQEAgLTEzNiwxNSArMTQxLDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQg
aW5kZXgpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRl
eCk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hpbGRyZW5DaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENo
aWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7
Ci0gICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcpOwotICAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAg
R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0xNTIsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRk
Q2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRC
ZWxvdyhsYXllciwgc2libGluZyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6Q2hpbGRyZW5DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9
CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMTYwLDcgKzE2NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciog
bGF5ZXIsIEdyYXBoaWNzTGF5CiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpyZXBs
YWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxk
KQogewogICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0No
aWxkKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJl
bkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzMsNyArMTc4LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TWFza0xheWVyKEdyYXBoaWNz
TGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBtYXNrTGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6TWFza0xheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoTWFza0xheWVyQ2hhbmdlKTsKIAogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE4OSw3ICsxOTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiB2YWx1ZSkKICAgICBpZiAodmFsdWUg
PT0gcmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6UmVwbGljYUxheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwbGljYUxh
eWVyQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xOTksNyAr
MjA0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IHBvc2l0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbih2YWx1ZSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UG9zaXRpb25DaGFuZ2UpOworICAgIG5v
dGlmeUNoYW5nZShQb3NpdGlvbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXll
ci5oKQpAQCAtMjA5LDcgKzIxNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgaWYgKHZhbHVl
ID09IGFuY2hvclBvaW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRBbmNob3JQb2ludCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6QW5jaG9yUG9pbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmNob3JQb2ludENoYW5n
ZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjIyLDcgKzIyNyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXpl
JiB2YWx1ZSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHZhbHVlKTsKICAgICBpZiAobWFz
a0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRTaXplKHZhbHVlKTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpTaXplQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoU2l6ZUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjMz
LDcgKzIzOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
VHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0y
NDMsNyArMjQ4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgKICAgICBpZiAodmFsdWUgPT0g
Y2hpbGRyZW5UcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuVHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENo
aWxkcmVuVHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0yNTMsNyArMjU4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
UHJlc2VydmVzM0QoYm9vbCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcHJlc2VydmVzM0QoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpQcmVzZXJ2ZXMzRENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKFByZXNlcnZlczNEQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yNjMsNyArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogICAgIGlmICh2YWx1
ZSA9PSBtYXNrc1RvQm91bmRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVy
OjpzZXRNYXNrc1RvQm91bmRzKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpNYXNrc1RvQm91bmRzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoTWFza3NUb0Jv
dW5kc0NoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjcyLDcg
KzI3Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVu
dChib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBkcmF3c0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRyYXdzQ29u
dGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERyYXdzQ29udGVudENoYW5nZSk7CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KHZhbHVlKTsKIH0KIApAQCAtMjgyLDcgKzI4
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c0FyZVZpc2libGUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNv
bnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzVmlzaWJsZUNo
YW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKHZhbHVlKTsKICAg
ICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRDb250ZW50c1Zpc2li
bGUodmFsdWUpOwpAQCAtMjk0LDcgKzI5OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09
IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09w
YXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwNSw3ICszMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2YWx1ZSkKICAgICBpZiAo
dmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFw
aGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CisgICAgbm90
aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQpAQCAtMzE1LDcgKzMyMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG9wYWNp
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkodmFs
dWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok9wYWNpdHlDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0zMjUsNyArMzMwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogICAgIGlmICh2
YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNS
ZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzM0LDcgKzMzOSw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zb2xpZENvbG9y
ID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudENo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91bmRDb2xvckNoYW5nZSk7CiB9CiAKIApA
QCAtMzYzLDcgKzM2OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgfQogCiAgICAgc2V0Q29udGVudHNUb01l
ZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5n
ZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKIH0KIApA
QCAtMzczLDcgKzM3OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICAgICAgcmV0dXJu
OwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9
CiAKQEAgLTM4Myw3ICszODgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFw
aGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
RGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKQEAgLTM5Miw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdl
KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC00MDEsMTEgKzQwNiwxMSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAg
ICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOworICAgIGNvbW1pdExheWVyQ2hhbmdlcygpOwor
ICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CiAgICAgLy8gdXBkYXRlQmFja2luZ1N0b3Jl
KCkgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVCYWNraW5nU3RvcmUo
KSBuZWVkcyB0byBnZXQgVGV4dHVyZU1hcHBlciBmcm9tIFRleHR1cmVNYXBwZXJMYXllci4KICAg
ICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKQEAgLTQxMywxMSArNDE4LDEx
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUo
KQogICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFzaG91bGRIYXZl
QmFja2luZ1N0b3JlKCkpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKLSAgICAg
ICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdl
OworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gQmFja2luZ1N0b3JlQ2hhbmdlOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNo
YW5nZTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5nU3RvcmVDaGFuZ2U7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTQyNyw3ICs0MzIsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKIHsKICAgICBB
U1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwotCiAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAK
QEAgLTQzNSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCiAgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNE
aXNwbGF5UmVjdC5pc0VtcHR5KCkpOwogICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
ICYmIG5lZWRzVG9SZXBhaW50KSB7CiAgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwot
ICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRD
aGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBSZXBhaW50Q291bnRDaGFuZ2U7CiAgICAg
fQogfQogCkBAIC00NDUsNyArNDQ5LDk5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiAgICAg
Ly8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91
YmxlIHRoZWlyIHNpemUgaGVyZS4KICAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAg
ICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7Ci0gICAgbV9jaGFuZ2VNYXNrIHw9IFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOworICAgIG1fY2hhbmdlTWFzayB8
PSBEZWJ1Z1Zpc3VhbHNDaGFuZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHRvVGV4dHVyZU1hcHBlckxh
eWVyVmVjdG9yKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGxheWVycywgVmVjdG9yPFRl
eHR1cmVNYXBwZXJMYXllcio+JiB0ZXhtYXBMYXllcnMpCit7CisgICAgdGV4bWFwTGF5ZXJzLnJl
c2VydmVDYXBhY2l0eShsYXllcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4bWFwTGF5ZXJzLmFwcGVuZCh0b1RleHR1
cmVNYXBwZXJMYXllcihsYXllcnNbaV0pKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBpZiAobV9jaGFuZ2VNYXNrID09
IE5vQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENo
aWxkcmVuQ2hhbmdlKSB7CisgICAgICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiB0ZXh0
dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbjsKKyAgICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0
b3IoY2hpbGRyZW4oKSwgdGV4dHVyZU1hcHBlckxheWVyQ2hpbGRyZW4pOworICAgICAgICBtX2xh
eWVyLT5zZXRDaGlsZHJlbih0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7CisgICAgfQorCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0TWFza0xheWVyKHRvVGV4dHVyZU1hcHBlckxheWVyKG1hc2tMYXllcigpKSk7CisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgUmVwbGljYUxheWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRSZXBsaWNhTGF5ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIocmVwbGljYUxheWVyKCkpKTsKKwor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBQb3NpdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5jaG9y
UG9pbnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50
KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFNpemVDaGFuZ2UpCisgICAgICAgIG1fbGF5
ZXItPnNldFNpemUoc2l6ZSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBUcmFuc2Zvcm1D
aGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0oKSk7CisKKyAg
ICBpZiAobV9jaGFuZ2VNYXNrICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIFByZXNlcnZlczNEQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBD
b250ZW50c1JlY3RDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzUmVjdChjb250
ZW50c1JlY3QoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgTWFza3NUb0JvdW5kc0NoYW5n
ZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKCkpOwor
CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERyYXdzQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBDb250ZW50c1Zpc2libGVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRl
bnRzVmlzaWJsZShjb250ZW50c0FyZVZpc2libGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzT3Bh
cXVlKGNvbnRlbnRzT3BhcXVlKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tmYWNl
VmlzaWJpbGl0eUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5
KGJhY2tmYWNlVmlzaWJpbGl0eSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBPcGFjaXR5
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkoKSk7CisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVy
LT5zZXRTb2xpZENvbG9yKHNvbGlkQ29sb3IoKSk7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworI2VuZGlmCisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
QmFja2luZ1N0b3JlQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9i
YWNraW5nU3RvcmUuZ2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERlYnVnVmlzdWFs
c0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCksIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dp
bmdSZXBhaW50Q291bnRlcigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBSZXBhaW50Q291
bnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRDb3VudChyZXBhaW50Q291bnQo
KSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyKCkpOworCisgICAgaWYgKG1fY2hh
bmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QW5pbWF0aW9u
cyhtX2FuaW1hdGlvbnMpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9y
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdw
b3J0KCkpOworCisgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCiAvKiBccmVpbXAg
KEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQ2NSwxMSArNTYxLDYgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICAgICAgY2hpbGRyZW4oKVtpXS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5n
U3RhdGUoKQotewotICAgIG1fY2hhbmdlTWFzayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFz
T3duQmFja2luZ1N0b3JlKTsKQEAgLTUxOSw3ICs2MTAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdAogICAgICAgICBsaXN0c01hdGNoID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZh
bHVlTGlzdCwgaGFzQmlnUm90YXRpb24pID49IDA7CiAKICAgICBtX2FuaW1hdGlvbnMuYWRkKEdy
YXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJhbWVzTmFtZSwgdmFsdWVMaXN0LCBib3hTaXplLCBh
bmltLCBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1l
ci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjcsNyArNjE4LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlv
bnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKLSAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlckxheWVyOjpBbmltYXRpb25DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShB
bmltYXRpb25DaGFuZ2UpOwogfQogCiAKQEAgLTU0OSw3ICs2NDAsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFw
aGljc0xheWVyVAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOwor
ICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVy
OjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCkBAIC01NjEsMTMgKzY1MiwyMiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxUZXh0dXJlTWFwcGVyQmFja2luZwogICAgICAgICByZXR1cm47CiAKICAgICBtX2JhY2tpbmdT
dG9yZSA9IGJhY2tpbmdTdG9yZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpCYWNraW5nU3RvcmVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShCYWNraW5nU3RvcmVDaGFu
Z2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmll
d3BvcnQoYm9vbCBmaXhlZCkKK3sKKyAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gZml4ZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7CisgICAg
bm90aWZ5Q2hhbmdlKEZpeGVkVG9WaWV3cG9yQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAg
ICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVw
YWludENvdW50Q2hhbmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAppbmRleCA1ZTA4MTZlNWQ2MzIxY2NhNzljMmIyNDc4ZTk3NzdlZjkxYTRmY2FjLi43
MjZlMThjNjRiNmIzMjE0MzJkOTQwZDhiOGUzYjRkMzk4YWNhYjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjksOCArMjksNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFw
aGljc0xheWVyIHsKLSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwotCiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXll
ckNsaWVudCopOwogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CkBA
IC03Myw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5n
ZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwg
Y29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTkxLDcgKzg4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hh
c093bkJhY2tpbmdTdG9yZSA9IGI7IH0KICAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVm
UHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+KTsKIAotICAgIHZvaWQgc2V0Rml4ZWRUb1Zp
ZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQorICAgIHZv
aWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIENvbG9yIGRlYnVnQm9y
ZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KQEAgLTEwMSwx
MyArOTgsNTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKTsKLSAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworCisgICAg
dm9pZCBjb21taXRMYXllckNoYW5nZXMoKTsKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUo
KTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9p
ZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsK
ICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiop
OwogCisgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0
aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KKyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9z
aXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4K
KyAgICBlbnVtIENoYW5nZU1hc2sgeworICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAg
ICAgMCwKKworICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAor
ICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBS
ZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRD
aGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5n
ZSA9ICAgICAgICAoMUwgPDwgNSksCisgICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAg
ICAoMUwgPDwgNiksCisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwg
NyksCisKKyAgICAgICAgUG9zaXRpb25DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAg
ICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAgICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6
ZUNoYW5nZSA9ICAgICAgICAgICAgICAgICgxTCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNo
YW5nZSA9ICAgICAgICAgICAoMUwgPDwgMTEpLAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNo
YW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAg
ICgxTCA8PCAxMyksCisKKyAgICAgICAgTWFza3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8
PCAxNCksCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAor
ICAgICAgICBPcGFjaXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAg
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2lu
Z1N0b3JlQ2hhbmdlID0gICAgICAgICgxTCA8PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2Ug
PSAgICAgICAgICAgICAoMUwgPDwgMTkpLAorICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2Ug
PSAgICAgKDFMIDw8IDIwKSwKKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgx
TCA8PCAyMSksCisKKyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAy
MiksCisgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisg
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRv
Vmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlD
aGFuZ2UoQ2hhbmdlTWFzayk7CisKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xh
eWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9z
aXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
OwpAQCAtMTMzLDUgKzE3Miw3IEBAIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitU
ZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsK
KwogfQogI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggNmIzYWE2MjRhNGI2OGM3ZDViMmFkNGI2NWU1ZGM3OTc4MjBm
YWI4Yi4uNDhiZDhjOWQ4MmQyYzAxNjhkNjI3M2E5MzhhOGJhYzdjODk4ZDUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIyLDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyB7CkBAIC00MCwxMSArMzgsNiBAQCBwdWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJl
TWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQot
ewotICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIp
LT5sYXllcigpIDogMDsKLX0KLQogY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpA
QCAtMzc0LDgzICszNjcsMTEgQEAgVGV4dHVyZU1hcHBlciogVGV4dHVyZU1hcHBlckxheWVyOjp0
ZXh0dXJlTWFwcGVyKCkgY29uc3QKICAgICByZXR1cm4gcm9vdExheWVyKCktPm1fdGV4dHVyZU1h
cHBlcjsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5
ZXIpCi17Ci0gICAgQVNTRVJUKGdyYXBoaWNzTGF5ZXIpOwotICAgIGludCBjaGFuZ2VNYXNrID0g
Z3JhcGhpY3NMYXllci0+Y2hhbmdlTWFzaygpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9D
aGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpCi0gICAgICAg
IHNldENoaWxkcmVuKGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKCkpOwotCi0gICAgaWYgKGNoYW5n
ZU1hc2sgJiBNYXNrTGF5ZXJDaGFuZ2UpIHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVy
KiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigp
KSkKLSAgICAgICAgICAgbGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAg
ICBpZiAoY2hhbmdlTWFzayAmIFJlcGxpY2FMYXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
ci0+cmVwbGljYUxheWVyKCkpKQotICAgICAgICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0
aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAg
ICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7Ci0KLSAgICBp
ZiAoY2hhbmdlTWFzayAmIEJhY2tpbmdTdG9yZUNoYW5nZSkKLSAgICAgICAgbV9iYWNraW5nU3Rv
cmUgPSBncmFwaGljc0xheWVyLT5tX2JhY2tpbmdTdG9yZS5nZXQoKTsKLQotICAgIGlmIChjaGFu
Z2VNYXNrICYgUmVwYWludENvdW50Q2hhbmdlKQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3Vu
dCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFpbnRDb3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5
ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0g
ICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xh
eWVyLT5yZXBsaWNhTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5w
b3NpdGlvbigpOwotICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNo
b3JQb2ludCgpOwotICAgIG1fc3RhdGUuc2l6ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAg
ICBtX3N0YXRlLnRyYW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1f
c3RhdGUuY29udGVudHNSZWN0ID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAg
bV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IGdyYXBoaWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAg
bV9zdGF0ZS5tYXNrc1RvQm91bmRzID0gZ3JhcGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwot
ICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0gZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7
Ci0gICAgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0Fy
ZVZpc2libGUoKTsKLSAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+
Y29udGVudHNPcGFxdWUoKTsKLSAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBo
aWNzTGF5ZXItPmJhY2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFu
c2Zvcm0gPSBncmFwaGljc0xheWVyLT5jaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUu
b3BhY2l0eSA9IGdyYXBoaWNzTGF5ZXItPm9wYWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29s
b3IgPSBncmFwaGljc0xheWVyLT5zb2xpZENvbG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJT
KQotICAgIGlmIChjaGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZp
bHRlcnMgPSBncmFwaGljc0xheWVyLT5maWx0ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9W
aWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0
ZS5zaG93RGVidWdCb3JkZXJzID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIo
KTsKLSAgICBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xh
eWVyKS0+ZGVidWdCb3JkZXJXaWR0aCgpOwotICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVy
ID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29u
dGVudHNMYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3Vy
cmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3Vy
cmVudFRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBt
X2N1cnJlbnRUcmFuc2Zvcm0uc2V0U2l6ZShtX3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRy
YW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJl
bnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1f
Y3VycmVudFRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJh
bnNmb3JtKTsKLQotICAgIHN5bmNBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGls
ZHJlbikKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8
VGV4dHVyZU1hcHBlckxheWVyKj4mIG5ld0NoaWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxk
cmVuKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsr
aSkgewotICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkID0gdG9UZXh0dXJlTWFwcGVy
TGF5ZXIobmV3Q2hpbGRyZW5baV0pOwotICAgICAgICBBU1NFUlQoY2hpbGQpOwotICAgICAgICBh
ZGRDaGlsZChjaGlsZCk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hp
bGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZENoaWxkKG5ld0NoaWxkcmVuW2ldKTsKIH0K
IAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciog
Y2hpbGRMYXllcikKQEAgLTQ4OCw2ICs0MDksMTM1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpyZW1vdmVBbGxDaGlsZHJlbigpCiAgICAgfQogfQogCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0TWFza0xheWVyKFRleHR1cmVNYXBwZXJMYXllciogbWFza0xheWVyKQoreworICAgIGlm
IChtYXNrTGF5ZXIpCisgICAgICAgIG1hc2tMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwor
ICAgIG1fc3RhdGUubWFza0xheWVyID0gbWFza0xheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0UmVwbGljYUxheWVyKFRleHR1cmVNYXBwZXJMYXllciogcmVwbGljYUxheWVy
KQoreworICAgIGlmIChyZXBsaWNhTGF5ZXIpCisgICAgICAgIHJlcGxpY2FMYXllci0+bV9lZmZl
Y3RUYXJnZXQgPSB0aGlzOworICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0gcmVwbGljYUxheWVy
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pCit7CisgICAgbV9zdGF0ZS5wb3MgPSBwb3NpdGlvbjsKKyAgICBtX2N1
cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIG1fc3RhdGUuc2l6ZSA9IHNpemU7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFNpemUo
c2l6ZSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludChjb25z
dCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50KQoreworICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQg
PSBhbmNob3JQb2ludDsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQoYW5j
aG9yUG9pbnQpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVzM0Qo
Ym9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBtX3N0YXRlLnByZXNlcnZlczNEID0gcHJlc2VydmVz
M0Q7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEZsYXR0ZW5pbmcoIXByZXNlcnZlczNEKTsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIG1fc3RhdGUudHJhbnNmb3JtID0gdHJh
bnNmb3JtOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNoaWxkcmVuVHJhbnNmb3JtKQoreworICAgIG1f
c3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBjaGlsZHJlblRyYW5zZm9ybTsKKyAgICBtX2N1cnJl
bnRUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0pOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzUmVjdCkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVj
dDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBt
YXNrc1RvQm91bmRzKQoreworICAgIG1fc3RhdGUubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3Vu
ZHM7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBk
cmF3c0NvbnRlbnQpCit7CisgICAgbV9zdGF0ZS5kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c1Zpc2libGUoYm9vbCBj
b250ZW50c1Zpc2libGUpCit7CisgICAgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgPSBjb250ZW50
c1Zpc2libGU7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c09wYXF1
ZShib29sIGNvbnRlbnRzT3BhcXVlKQoreworICAgIG1fc3RhdGUuY29udGVudHNPcGFxdWUgPSBj
b250ZW50c09wYXF1ZTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tmYWNl
VmlzaWJpbGl0eShib29sIGJhY2tmYWNlVmlzaWJpbGl0eSkKK3sKKyAgICBtX3N0YXRlLmJhY2tm
YWNlVmlzaWJpbGl0eSA9IGJhY2tmYWNlVmlzaWJpbGl0eTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX3N0YXRlLm9wYWNp
dHkgPSBvcGFjaXR5OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gY29sb3I7
Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fc3Rh
dGUuZmlsdGVycyA9IGZpbHRlcnM7Cit9CisjZW5kaWYKKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldERlYnVnVmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBk
ZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50
Q291bnRlcikKK3sKKyAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBzaG93RGVidWdCb3Jk
ZXJzOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7Cisg
ICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gZGVidWdCb3JkZXJXaWR0aDsKKyAgICBtX3N0
YXRlLnNob3dSZXBhaW50Q291bnRlciA9IHNob3dSZXBhaW50Q291bnRlcjsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQorewor
ICAgIG1fc3RhdGUucmVwYWludENvdW50ID0gcmVwYWludENvdW50OworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcikKK3sKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVy
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0aW9ucyhjb25zdCBHcmFw
aGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0aW9ucykKK3sKKyAgICBtX2FuaW1hdGlvbnMgPSBh
bmltYXRpb25zOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdw
b3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQoreworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4
ZWRUb1ZpZXdwb3J0OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0
b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2Jh
Y2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKK30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBkMDU2MDBjNWEyMTFjMmUwMTc2NzU5ZmU1YjAxZWM2MGI3
NmM5NDdmLi5lMGM4MjMzYzgyZTVmN2M2MWNkOTVjYWZjNDE5MWRlM2EyODZlZmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAt
MzQsNTEgKzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3Mg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGlj
aCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0
aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4
dCBmbHVzaC4KLSAgICBlbnVtIENoYW5nZU1hc2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAg
ICAgICAgICAgICAgMCwKLQotICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFM
IDw8IDEpLAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAot
ICAgICAgICBQb3NpdGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAg
IEFuY2hvclBvaW50Q2hhbmdlID0gICAgICAgICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFu
Z2UgID0gICAgICAgICAgICAgICAoMUwgPDwgNSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9
ICAgICAgICAgICAoMUwgPDwgNiksCi0gICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAg
ICAoMUwgPDwgNyksCi0KLSAgICAgICAgQ29udGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8
PCA5KSwKLSAgICAgICAgT3BhY2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0g
ICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAg
IFByZXNlcnZlczNEQ2hhbmdlID0gICAgICAgICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1Rv
Qm91bmRzQ2hhbmdlID0gICAgICAgKDFMIDw8IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hh
bmdlID0gICAgICAgICgxTCA8PCAxNCksCi0gICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9
ICAgICAoMUwgPDwgMTUpLAotICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFM
IDw8IDE2KSwKLQotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3
KSwKLSAgICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAg
ICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5
ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDIxKSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0g
ICAgICAgICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAg
ICAoMUwgPDwgMjMpLAotCi0gICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwg
PDwgMjQpLAotICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwK
LQotICAgICAgICBCYWNraW5nU3RvcmVDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI2KQotICAgIH07
Ci0KICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAg
ICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKQEAgLTg3LDEzICs0Niw0MiBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAg
ICAsIG1fdGV4dHVyZU1hcHBlcigwKQorICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNl
KQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKICAgICBU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7Ci0gICAgdm9pZCBmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7
CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3Rl
eHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KKworICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPFRleHR1cmVNYXBwZXJMYXllcio+Jik7CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVy
ZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxh
eWVyKik7CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKyAgICB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQg
c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2
b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRNYXNrc1Rv
Qm91bmRzKGJvb2wpOworICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOworICAgIHZvaWQg
c2V0Q29udGVudHNWaXNpYmxlKGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9v
bCk7CisgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7CisgICAgdm9pZCBzZXRP
cGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKTsKKyNlbmRpZgorICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0Rl
YnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9y
ZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICB2b2lkIHNldFJlcGFpbnRD
b3VudChpbnQpOworICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciopOworICAgIHZvaWQgc2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyYpOworICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOworICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqKTsKKworICAgIHZvaWQg
c3luY0FuaW1hdGlvbnMoKTsKICAgICBib29sIGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdB
bmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50KCk7CkBAIC0xMTUsNyArMTAzLDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsgfQogICAgIGJvb2wgaXNB
bmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDaGlsZHJlbihj
b25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJl
TWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lkIHJl
bW92ZUFsbENoaWxkcmVuKCk7CkBAIC0xMzIsNyArMTE5LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpIE9WRVJSSURFIHsgbV9jdXJyZW50RmlsdGVycyA9IGZpbHRlcnM7IH0KICNlbmRpZgogCi0g
ICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAg
ICAgZW51bSBDb250ZW50c0xheWVyQ291bnQgewogICAgICAgICBOb0xheWVyc1dpdGhDb250ZW50
LApAQCAtMjE0LDkgKzIwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9y
dDsKIH07CiAKLQotVGV4dHVyZU1hcHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFw
aGljc0xheWVyKik7Ci0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dEVmbC5jcHAKaW5kZXggMDhkZTNlMGQwYzdhMTcwYjhlMzRjOWIwOTU2MWI3YTA5NWU4ZDVj
MC4uOGEzYTI0OWJlMjAwYmVmMzU5MmZjYThjNGJkMDBiNDUzYWMzYmRiMyAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCmluZGV4IGQxMzBhM2Zi
N2IzYjE4OTA2YWVhOWRmODk4OTM0YjFhNmZmYWYwMDYuLmMyM2RlNjJhMTBhMWMxNDFlNzRhMGQz
MjIwM2U0NTkzYmRmODIwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxh
eWVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJl
TWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKaW5kZXggZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2Rj
M2IwNWM0ZmIwMmNmNC4uNjZiOGQwZjk2ZDRhNzI2NmUxNmRiZGNhZTFhOWJmNThmMzE5ODcwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9U
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFk
YXB0ZXIuaCIKICNpbmNsdWRlICJRV2ViUGFnZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyTGF5ZXIuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183595</attachid>
            <date>2013-01-18 20:11:25 -0800</date>
            <delta_ts>2013-01-24 21:57:16 -0800</delta_ts>
            <desc>=rebase upstream</desc>
            <filename>bug-107073-20130119130813.patch</filename>
            <type>text/plain</type>
            <size>44676</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwOTE1MzYxNTYwMzA2
NWMzY2MyODI0ZTA5NjA2MDE1YWM4NWFlYi4uZTA2MDE0MTBlNDg2ZTQ4YWZiMGRiZmY3YmIyODU5
ZTg5NjQ5MjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxMy0wMS0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB2
YXJpYWJsZXMgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgICAgICBTZXQgQmFja2dyb3VuZENvbG9y
Q2hhbmdlIHRvIG1fY2hhbmdlTWFzayBpbnN0ZWFkIG9mIENvbnRlbnRDaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CisgICAgICAgICAgICBGbHVzaCBwZW5kaW5nIGNoYW5nZXMgaW50byBUZXh0dXJlTWFw
cGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza3NU
b0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERyYXdz
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRl
bnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENv
bnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdW
aXN1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWlu
dENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVu
dHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRv
Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBl
ckxheWVyKToKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKwogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA4ODFmNTc3N2U5ZmI3MmNiNjhhMDFmZDNjMTBjOWRkNzA1NDAzYjU0Li44NmU3Mjg0NDRl
YTBmODc5NzQ5OGRkNjZlNDAyZjE5Nzg2MzcyZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1
cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgorCisyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1
ZyBib3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTk4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCA0ZjEyODRmZTdjNmRiNmVjZWJlYTY4MTIwOWM1MWU2YmFlYmNmZjM1Li43NGM5YWY0
ZmM1MDA2Mjg4ZWY0MmNkMGVjZGQwN2E0ODk3NmRiOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTYgQEAKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4
dHVyZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1Rl
eHR1cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHA6CisKKzIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRl
YnVnIGJvcmRlcnMgYW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGluZ3MuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxOTgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZwppbmRleCAwNTQyYzVmNzVkMjY0MmJkNWZiYmYyYzQzY2MwOWRiODJmMDNhMDFlLi5kNmY0MTBl
MGU0YjlkNDZkYmRhMjYwNGQ5NDVjNGRlZGZhZDYyNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE2IEBACiAyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1
cmVNYXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBw
ZXJMYXllckNsaWVudFF0LmNwcDoKKworMjAxMy0wMS0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBFbmFibGUgZGVidWcgYm9y
ZGVycyBhbmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0aW5ncy4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzE5OAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAxYjliYmZlZWQxZTYxNzhkODBlNTkyYzE2
YTQzYjg3ZDZhMjdjY2UzLi5iYTM4NmE5MGJmYjhiYjRiMWY0MzQ0MjM5ZTI5YjZjY2ViMTRlZTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI4LDYg
KzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVGV4dHVyZU1hcHBlckxheWVyKiB0
b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICByZXR1cm4g
bGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6IDA7
Cit9CisKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgaWYgKCFmYWN0b3J5KQpAQCAtNDUsNyArNTAsNyBAQCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCiAgICAgLCBtX2xheWVyKGFkb3B0
UHRyKG5ldyBUZXh0dXJlTWFwcGVyTGF5ZXIoKSkpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQotICAgICwgbV9jaGFuZ2VNYXNrKDApCisgICAgLCBtX2NoYW5nZU1hc2soTm9D
aGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2hhc093bkJhY2tp
bmdTdG9yZSh0cnVlKQogICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCkBAIC01NSw3ICs2
MCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllCiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoYW5nZU1h
c2sgY2hhbmdlTWFzaykKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNo
YW5nZShDaGFuZ2VNYXNrIGNoYW5nZU1hc2spCiB7CiAgICAgbV9jaGFuZ2VNYXNrIHw9IGNoYW5n
ZU1hc2s7CiAgICAgaWYgKCFjbGllbnQoKSkKQEAgLTg2LDcgKzkxLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdl
KTsKICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsK
IH0KIApAQCAtOTQsNyArOTksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXROZWVkc0Rpc3BsYXkoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNEaXNwbGF5
Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKQEAgLTEw
OCw3ICsxMTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChtX25lZWRzRGlzcGxh
eSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7
CiB9CiAKQEAgLTExNyw3ICsxMjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYgY2hpbGRyZW4pCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVu
KGNoaWxkcmVuKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpD
aGlsZHJlbkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjcsNyAr
MTMyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29u
c3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGQKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXll
cik7CiB9CiAKQEAgLTEzNiwxNSArMTQxLDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQg
aW5kZXgpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRl
eCk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hpbGRyZW5DaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENo
aWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7
Ci0gICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcpOwotICAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAg
R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0xNTIsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRk
Q2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRC
ZWxvdyhsYXllciwgc2libGluZyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6Q2hpbGRyZW5DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9
CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMTYwLDcgKzE2NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciog
bGF5ZXIsIEdyYXBoaWNzTGF5CiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpyZXBs
YWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxk
KQogewogICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0No
aWxkKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJl
bkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzMsNyArMTc4LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TWFza0xheWVyKEdyYXBoaWNz
TGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBtYXNrTGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6TWFza0xheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoTWFza0xheWVyQ2hhbmdlKTsKIAogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE4OSw3ICsxOTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiB2YWx1ZSkKICAgICBpZiAodmFsdWUg
PT0gcmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6UmVwbGljYUxheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwbGljYUxh
eWVyQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xOTksNyAr
MjA0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IHBvc2l0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbih2YWx1ZSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UG9zaXRpb25DaGFuZ2UpOworICAgIG5v
dGlmeUNoYW5nZShQb3NpdGlvbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXll
ci5oKQpAQCAtMjA5LDcgKzIxNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgaWYgKHZhbHVl
ID09IGFuY2hvclBvaW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRBbmNob3JQb2ludCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6QW5jaG9yUG9pbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmNob3JQb2ludENoYW5n
ZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjIyLDcgKzIyNyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXpl
JiB2YWx1ZSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHZhbHVlKTsKICAgICBpZiAobWFz
a0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRTaXplKHZhbHVlKTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpTaXplQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoU2l6ZUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjMz
LDcgKzIzOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
VHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0y
NDMsNyArMjQ4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgKICAgICBpZiAodmFsdWUgPT0g
Y2hpbGRyZW5UcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuVHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENo
aWxkcmVuVHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0yNTMsNyArMjU4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
UHJlc2VydmVzM0QoYm9vbCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcHJlc2VydmVzM0QoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHZhbHVl
KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpQcmVzZXJ2ZXMzRENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKFByZXNlcnZlczNEQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yNjMsNyArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogICAgIGlmICh2YWx1
ZSA9PSBtYXNrc1RvQm91bmRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVy
OjpzZXRNYXNrc1RvQm91bmRzKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpNYXNrc1RvQm91bmRzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoTWFza3NUb0Jv
dW5kc0NoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjcyLDcg
KzI3Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVu
dChib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBkcmF3c0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRyYXdzQ29u
dGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERyYXdzQ29udGVudENoYW5nZSk7CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KHZhbHVlKTsKIH0KIApAQCAtMjgyLDcgKzI4
Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVmlzaWJs
ZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c0FyZVZpc2libGUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNv
bnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzVmlzaWJsZUNo
YW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKHZhbHVlKTsKICAg
ICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRDb250ZW50c1Zpc2li
bGUodmFsdWUpOwpAQCAtMjk0LDcgKzI5OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09
IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09w
YXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwNSw3ICszMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2YWx1ZSkKICAgICBpZiAo
dmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFw
aGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CisgICAgbm90
aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQpAQCAtMzE1LDcgKzMyMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG9wYWNp
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkodmFs
dWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok9wYWNpdHlDaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0zMjUsNyArMzMwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogICAgIGlmICh2
YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudHNS
ZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzM0LDcgKzMzOSw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zb2xpZENvbG9y
ID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudENo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91bmRDb2xvckNoYW5nZSk7CiB9CiAKIApA
QCAtMzYzLDcgKzM2OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgfQogCiAgICAgc2V0Q29udGVudHNUb01l
ZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5n
ZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKIH0KIApA
QCAtMzczLDcgKzM3OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICAgICAgcmV0dXJu
OwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9
CiAKQEAgLTM4Myw3ICszODgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFw
aGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
RGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKQEAgLTM5Miw3ICszOTcsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdl
KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC00MDEsMTEgKzQwNiwxMSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAg
ICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOworICAgIGNvbW1pdExheWVyQ2hhbmdlcygpOwor
ICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CiAgICAgLy8gdXBkYXRlQmFja2luZ1N0b3Jl
KCkgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgYmVjYXVzZSB1cGRhdGVCYWNraW5nU3RvcmUo
KSBuZWVkcyB0byBnZXQgVGV4dHVyZU1hcHBlciBmcm9tIFRleHR1cmVNYXBwZXJMYXllci4KICAg
ICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKQEAgLTQxMywxMSArNDE4LDEx
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUo
KQogICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFzaG91bGRIYXZl
QmFja2luZ1N0b3JlKCkpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKLSAgICAg
ICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdl
OworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gQmFja2luZ1N0b3JlQ2hhbmdlOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdTdG9yZUNo
YW5nZTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5nU3RvcmVDaGFuZ2U7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTQyNyw3ICs0MzIsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKIHsKICAgICBB
U1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwotCiAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiAK
QEAgLTQzNSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCiAgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNE
aXNwbGF5UmVjdC5pc0VtcHR5KCkpOwogICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
ICYmIG5lZWRzVG9SZXBhaW50KSB7CiAgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwot
ICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRD
aGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBSZXBhaW50Q291bnRDaGFuZ2U7CiAgICAg
fQogfQogCkBAIC00NDMsNyArNDQ3LDk5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiB7CiAg
ICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CiAgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0g
d2lkdGg7Ci0gICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1
YWxzQ2hhbmdlOworICAgIG1fY2hhbmdlTWFzayB8PSBEZWJ1Z1Zpc3VhbHNDaGFuZ2U7Cit9CisK
K3N0YXRpYyB2b2lkIHRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGxheWVycywgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+JiB0ZXhtYXBM
YXllcnMpCit7CisgICAgdGV4bWFwTGF5ZXJzLnJlc2VydmVDYXBhY2l0eShsYXllcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkKKyAgICAg
ICAgdGV4bWFwTGF5ZXJzLmFwcGVuZCh0b1RleHR1cmVNYXBwZXJMYXllcihsYXllcnNbaV0pKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2Vz
KCkKK3sKKyAgICBpZiAobV9jaGFuZ2VNYXNrID09IE5vQ2hhbmdlcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdlKSB7CisgICAgICAgIFZl
Y3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiB0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbjsKKyAg
ICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY2hpbGRyZW4oKSwgdGV4dHVyZU1hcHBl
ckxheWVyQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5zZXRDaGlsZHJlbih0ZXh0dXJlTWFw
cGVyTGF5ZXJDaGlsZHJlbik7CisgICAgfQorCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tM
YXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza0xheWVyKHRvVGV4dHVyZU1hcHBl
ckxheWVyKG1hc2tMYXllcigpKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUmVwbGljYUxh
eWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRSZXBsaWNhTGF5ZXIodG9UZXh0dXJlTWFw
cGVyTGF5ZXIocmVwbGljYUxheWVyKCkpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBQb3Np
dGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CisK
KyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5jaG9yUG9pbnRDaGFuZ2UpCisgICAgICAgIG1fbGF5
ZXItPnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIFNpemVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFNpemUoc2l6ZSgpKTsKKworICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBUcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ2hpbGRy
ZW5UcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3Jt
KGNoaWxkcmVuVHJhbnNmb3JtKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFByZXNlcnZl
czNEQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgp
KTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1JlY3RDaGFuZ2UpCisgICAgICAg
IG1fbGF5ZXItPnNldENvbnRlbnRzUmVjdChjb250ZW50c1JlY3QoKSk7CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgTWFza3NUb0JvdW5kc0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFz
a3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERy
YXdzQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdz
Q29udGVudCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1Zpc2libGVDaGFu
Z2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShjb250ZW50c0FyZVZpc2li
bGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpCisg
ICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKGNvbnRlbnRzT3BhcXVlKCkpOworCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSkKKyAgICAgICAg
bV9sYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJhY2tmYWNlVmlzaWJpbGl0eSgpKTsKKwor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBPcGFjaXR5Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRPcGFjaXR5KG9wYWNpdHkoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRTb2xpZENvbG9yKHNvbGlkQ29sb3Io
KSk7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZp
bHRlckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworI2Vu
ZGlmCisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQorICAgICAg
ICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUuZ2V0KCkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIERlYnVnVmlzdWFsc0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCksIGRlYnVnQm9yZGVyQ29sb3Io
KSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKTsKKworICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXIt
PnNldFJlcGFpbnRDb3VudChyZXBhaW50Q291bnQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNMYXllcihwbGF0
Zm9ybUxheWVyKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOworCisgICAgaWYg
KG1fY2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRGaXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdwb3J0KCkpOworCisgICAgbV9jaGFuZ2VNYXNr
ID0gTm9DaGFuZ2VzOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQ2Mywx
MSArNTU5LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgY2hpbGRyZW4oKVtpXS0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQotewotICAgIG1fY2hhbmdlTWFz
ayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tp
bmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKQEAgLTUxNyw3
ICs2MDgsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdAogICAgICAgICBsaXN0c01hdGNoID0g
dmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pID49
IDA7CiAKICAgICBtX2FuaW1hdGlvbnMuYWRkKEdyYXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJh
bWVzTmFtZSwgdmFsdWVMaXN0LCBib3hTaXplLCBhbmltLCBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0
aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdl
KTsKICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC01MjUsNyArNjE2LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0g
YW5pbWF0aW9uczsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmltYXRp
b25DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25DaGFuZ2UpOwogfQogCiAKQEAg
LTU0Nyw3ICs2MzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRp
b25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFu
Z2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQog
I2VuZGlmCkBAIC01NTksMTMgKzY1MCwyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZwogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2UpOworICAg
IG5vdGlmeUNoYW5nZShCYWNraW5nU3RvcmVDaGFuZ2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkKK3sKKyAgICBp
ZiAobV9maXhlZFRvVmlld3BvcnQgPT0gZml4ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Zml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7CisgICAgbm90aWZ5Q2hhbmdlKEZpeGVkVG9WaWV3cG9y
Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWlu
dENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAgICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50
Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50
Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwYWludENvdW50Q2hhbmdlKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCA1ZTA4MTZlNWQ2MzIx
Y2NhNzljMmIyNDc4ZTk3NzdlZjkxYTRmY2FjLi43MjZlMThjNjRiNmIzMjE0MzJkOTQwZDhiOGUz
YjRkMzk4YWNhYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApA
QCAtMjksOCArMjksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKLSAgICBmcmllbmQgY2xh
c3MgVGV4dHVyZU1hcHBlckxheWVyOwotCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CkBAIC03Myw3ICs3MSw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNM
YXllcjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFu
Z2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2No
YW5nZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3Ry
aW5nJiwgZG91YmxlKTsKQEAgLTkxLDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFz
T3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hhc093bkJhY2tpbmdTdG9yZSA9IGI7IH0KICAg
ICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+KTsKIAotICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhl
ZFRvVmlld3BvcnQgPSBmaXhlZDsgfQorICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wp
OwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmll
d3BvcnQ7IH0KIAogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2RlYnVnQm9yZGVyQ29sb3I7IH0KQEAgLTEwMSwxMyArOTgsNTUgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKLSAgICB2b2lkIGRpZEZs
dXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworCisgICAgdm9pZCBjb21taXRMYXllckNoYW5nZXMoKTsK
KyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9y
ZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAg
ICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5n
U3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVy
PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwogCisgICAgLy8gVGhpcyBzZXQgb2YgZmxh
Z3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4K
KyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0
byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KKyAgICBlbnVtIENoYW5nZU1hc2sgeworICAg
ICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKKworICAgICAgICBDaGlsZHJlbkNo
YW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAorICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAg
ICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwg
NCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgNSksCisgICAg
ICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgNiksCisgICAgICAgIENvbnRl
bnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwgNyksCisKKyAgICAgICAgUG9zaXRpb25DaGFu
Z2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAg
ICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6ZUNoYW5nZSA9ICAgICAgICAgICAgICAgICgx
TCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMTEp
LAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAgICAg
ICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAgICgxTCA8PCAxMyksCisKKyAgICAgICAgTWFz
a3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8PCAxNCksCisgICAgICAgIERyYXdzQ29udGVu
dENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAorICAgICAgICBPcGFjaXR5Q2hhbmdlID0gICAg
ICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0g
ICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2luZ1N0b3JlQ2hhbmdlID0gICAgICAgICgxTCA8
PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkpLAor
ICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKKyAgICAgICAg
QmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgxTCA8PCAyMSksCisKKyAgICAgICAgQW5pbWF0
aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCisgICAgICAgIEZpbHRlckNoYW5nZSA9
ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisgICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9
ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8
IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlDaGFuZ2UoQ2hhbmdlTWFzayk7CisKICAgICBP
d25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdl
UHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwpAQCAtMTMzLDUgKzE3Miw3IEBAIGlubGlu
ZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVy
ZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKwogfQogI2VuZGlmIC8vIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNmIzYWE2
MjRhNGI2OGM3ZDViMmFkNGI2NWU1ZGM3OTc4MjBmYWI4Yi4uNDhiZDhjOWQ4MmQyYzAxNjhkNjI3
M2E5MzhhOGJhYzdjODk4ZDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIy
LDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CkBAIC00MCwxMSArMzgsNiBAQCBw
dWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBl
ckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIHJldHVybiBsYXllciA/IHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDogMDsKLX0KLQogY29uc3Qg
VGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0
CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpAQCAtMzc0LDgzICszNjcsMTEgQEAgVGV4dHVy
ZU1hcHBlciogVGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlTWFwcGVyKCkgY29uc3QKICAgICBy
ZXR1cm4gcm9vdExheWVyKCktPm1fdGV4dHVyZU1hcHBlcjsKIH0KIAotdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgQVNTRVJUKGdyYXBoaWNz
TGF5ZXIpOwotICAgIGludCBjaGFuZ2VNYXNrID0gZ3JhcGhpY3NMYXllci0+Y2hhbmdlTWFzaygp
OwotCi0gICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1f
YW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjaGFuZ2VN
YXNrICYgQ2hpbGRyZW5DaGFuZ2UpCi0gICAgICAgIHNldENoaWxkcmVuKGdyYXBoaWNzTGF5ZXIt
PmNoaWxkcmVuKCkpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBNYXNrTGF5ZXJDaGFuZ2UpIHsK
LSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxh
eWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKSkKLSAgICAgICAgICAgbGF5ZXItPm1fZWZm
ZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGxpY2FM
YXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9U
ZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpKQotICAgICAg
ICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFu
Z2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGlj
c0xheWVyLT5tX2FuaW1hdGlvbnM7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIEJhY2tpbmdTdG9y
ZUNoYW5nZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBncmFwaGljc0xheWVyLT5tX2JhY2tp
bmdTdG9yZS5nZXQoKTsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hhbmdl
KQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFpbnRD
b3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihn
cmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgPSB0
b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSk7Ci0gICAg
bV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwotICAgIG1fc3RhdGUuYW5j
aG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNob3JQb2ludCgpOwotICAgIG1fc3RhdGUuc2l6
ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IGdyYXBo
aWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUuY29udGVudHNSZWN0ID0gZ3JhcGhp
Y3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IGdyYXBo
aWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgbV9zdGF0ZS5tYXNrc1RvQm91bmRzID0gZ3Jh
cGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwotICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0g
Z3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7Ci0gICAgbV9zdGF0ZS5jb250ZW50c1Zpc2li
bGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0FyZVZpc2libGUoKTsKLSAgICBtX3N0YXRlLmNv
bnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKTsKLSAgICBtX3N0
YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBoaWNzTGF5ZXItPmJhY2tmYWNlVmlzaWJpbGl0
eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT5jaGls
ZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUub3BhY2l0eSA9IGdyYXBoaWNzTGF5ZXItPm9w
YWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBncmFwaGljc0xheWVyLT5zb2xpZENv
bG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmIChjaGFuZ2VNYXNrICYgRmls
dGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGljc0xheWVyLT5maWx0
ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXItPmZp
eGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gZ3JhcGhp
Y3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKLSAgICBtX3N0YXRlLmRlYnVnQm9yZGVy
Q29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1
Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gdG9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJXaWR0aCgpOwot
ICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5n
UmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihh
ZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRBbmNob3JQb2lu
dChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0U2l6ZSht
X3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFtX3N0
YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zv
cm0obV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRDaGlsZHJl
blRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKLQotICAgIHN5bmNBbmltYXRp
b25zKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIG5ld0No
aWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIGNoaWxkID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIobmV3Q2hpbGRyZW5baV0pOwotICAg
ICAgICBBU1NFUlQoY2hpbGQpOwotICAgICAgICBhZGRDaGlsZChjaGlsZCk7Ci0gICAgfQorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAg
IGFkZENoaWxkKG5ld0NoaWxkcmVuW2ldKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciogY2hpbGRMYXllcikKQEAgLTQ4OCw2ICs0MDks
MTM1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAgICAg
fQogfQogCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xheWVyKFRleHR1cmVNYXBw
ZXJMYXllciogbWFza0xheWVyKQoreworICAgIGlmIChtYXNrTGF5ZXIpCisgICAgICAgIG1hc2tM
YXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOworICAgIG1fc3RhdGUubWFza0xheWVyID0gbWFz
a0xheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwbGljYUxheWVyKFRl
eHR1cmVNYXBwZXJMYXllciogcmVwbGljYUxheWVyKQoreworICAgIGlmIChyZXBsaWNhTGF5ZXIp
CisgICAgICAgIHJlcGxpY2FMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOworICAgIG1fc3Rh
dGUucmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgbV9z
dGF0ZS5wb3MgPSBwb3NpdGlvbjsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24o
YWRqdXN0ZWRQb3NpdGlvbigpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIG1fc3RhdGUuc2l6ZSA9IHNpemU7Cisg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFNpemUoc2l6ZSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50
KQoreworICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICBtX2N1cnJl
bnRUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBt
X3N0YXRlLnByZXNlcnZlczNEID0gcHJlc2VydmVzM0Q7CisgICAgbV9jdXJyZW50VHJhbnNmb3Jt
LnNldEZsYXR0ZW5pbmcoIXByZXNlcnZlczNEKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQor
eworICAgIG1fc3RhdGUudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIG1fY3VycmVudFRyYW5z
Zm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGNoaWxkcmVuVHJhbnNmb3JtKQoreworICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBj
aGlsZHJlblRyYW5zZm9ybTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFu
c2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRzUmVjdCkKK3sKKyAgICBtX3N0
YXRlLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVjdDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIG1fc3Rh
dGUubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9zdGF0
ZS5kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRDb250ZW50c1Zpc2libGUoYm9vbCBjb250ZW50c1Zpc2libGUpCit7CisgICAgbV9z
dGF0ZS5jb250ZW50c1Zpc2libGUgPSBjb250ZW50c1Zpc2libGU7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRDb250ZW50c09wYXF1ZShib29sIGNvbnRlbnRzT3BhcXVlKQorewor
ICAgIG1fc3RhdGUuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIGJhY2tmYWNlVmlz
aWJpbGl0eSkKK3sKKyAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGJhY2tmYWNlVmlz
aWJpbGl0eTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQg
b3BhY2l0eSkKK3sKKyAgICBtX3N0YXRlLm9wYWNpdHkgPSBvcGFjaXR5OworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7Cisg
ICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gY29sb3I7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fc3RhdGUuZmlsdGVycyA9IGZpbHRlcnM7Cit9Cisj
ZW5kaWYKKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVnVmlzdWFscyhib29sIHNo
b3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1
Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcikKK3sKKyAgICBtX3N0YXRlLnNo
b3dEZWJ1Z0JvcmRlcnMgPSBzaG93RGVidWdCb3JkZXJzOworICAgIG1fc3RhdGUuZGVidWdCb3Jk
ZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRo
ID0gZGVidWdCb3JkZXJXaWR0aDsKKyAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9IHNo
b3dSZXBhaW50Q291bnRlcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGFp
bnRDb3VudChpbnQgcmVwYWludENvdW50KQoreworICAgIG1fc3RhdGUucmVwYWludENvdW50ID0g
cmVwYWludENvdW50OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNM
YXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3sKKyAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0
aW9ucykKK3sKKyAgICBtX2FuaW1hdGlvbnMgPSBhbmltYXRpb25zOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWRUb1ZpZXdwb3J0KQor
eworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0OworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsK
K30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5p
bmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBkMDU2
MDBjNWEyMTFjMmUwMTc2NzU5ZmU1YjAxZWM2MGI3NmM5NDdmLi5lMGM4MjMzYzgyZTVmN2M2MWNk
OTVjYWZjNDE5MWRlM2EyODZlZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0yNCw3
ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtMzQsNTEgKzMzLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI7
CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xheWVyQW5pbWF0
aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJMYXll
cik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gVGhpcyBz
ZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBo
YXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtu
b3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KLSAgICBlbnVtIENoYW5nZU1h
c2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKLQotICAgICAgICBD
aGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAotICAgICAgICBNYXNrTGF5ZXJD
aGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAotICAgICAgICBQb3NpdGlvbkNoYW5nZSA9ICAg
ICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAgIEFuY2hvclBvaW50Q2hhbmdlID0gICAgICAg
ICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFuZ2UgID0gICAgICAgICAgICAgICAoMUwgPDwg
NSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgNiksCi0gICAg
ICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNyksCi0KLSAgICAgICAgQ29u
dGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwKLSAgICAgICAgT3BhY2l0eUNoYW5n
ZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0gICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9
ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAgIFByZXNlcnZlczNEQ2hhbmdlID0gICAgICAg
ICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlID0gICAgICAgKDFMIDw8
IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAxNCksCi0g
ICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgMTUpLAotICAgICAgICBD
b250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2KSwKLQotICAgICAgICBCYWNrZmFj
ZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAgICAgICAgQ2hpbGRyZW5UcmFuc2Zv
cm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAgICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAg
ICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFM
IDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDIx
KSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCi0gICAg
ICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAotCi0gICAgICAgIERl
YnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBSZXBhaW50Q291
bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKLQotICAgICAgICBCYWNraW5nU3RvcmVDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDI2KQotICAgIH07Ci0KICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIo
KQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKQEAg
LTg3LDEzICs0Niw0MiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQog
ICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQorICAg
ICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+
VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
KCkgY29uc3Q7Ci0gICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KKwor
ICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+Jik7
CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBz
ZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBzZXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYp
OworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9p
ZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0Jik7CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworICAgIHZvaWQgc2V0
RHJhd3NDb250ZW50KGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNWaXNpYmxlKGJvb2wpOwor
ICAgIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNrZmFjZVZp
c2liaWxpdHkoYm9vbCk7CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKyAgICB2b2lkIHNl
dFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAg
dm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRpZgorICAgIHZv
aWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRl
YnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRD
b3VudGVyKTsKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOworICAgIHZvaWQgc2V0Q29u
dGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0QW5p
bWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOworICAgIHZvaWQgc2V0Rml4
ZWRUb1ZpZXdwb3J0KGJvb2wpOworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUqKTsKKworICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29s
IGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2
b2lkIHBhaW50KCk7CkBAIC0xMTUsNyArMTAzLDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50
IGFkanVzdGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xs
UG9zaXRpb25EZWx0YTsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+
Jik7CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJl
bW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CkBAIC0xMzIs
NyArMTE5LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJz
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIE9WRVJSSURFIHsgbV9jdXJyZW50Rmls
dGVycyA9IGZpbHRlcnM7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzeW5jQW5pbWF0aW9ucygpOwog
ICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgZW51bSBDb250ZW50c0xheWVyQ291bnQg
ewogICAgICAgICBOb0xheWVyc1dpdGhDb250ZW50LApAQCAtMjE0LDkgKzIwMCw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKIH07CiAKLQotVGV4dHVyZU1hcHBlckxh
eWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKik7Ci0KIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKaW5kZXggMDhkZTNlMGQw
YzdhMTcwYjhlMzRjOWIwOTU2MWI3YTA5NWU4ZDVjMC4uOGEzYTI0OWJlMjAwYmVmMzU5MmZjYThj
NGJkMDBiNDUzYWMzYmRiMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZs
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50RWZs
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0R0wuY3BwCmluZGV4IGQxMzBhM2ZiN2IzYjE4OTA2YWVhOWRmODk4OTM0YjFhNmZm
YWYwMDYuLmMyM2RlNjJhMTBhMWMxNDFlNzRhMGQzMjIwM2U0NTkzYmRmODIwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKaW5k
ZXggZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNmNC4uNjZiOGQwZjk2ZDRh
NzI2NmUxNmRiZGNhZTFhOWJmNThmMzE5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJRV2ViUGFn
ZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIK
</data>
<flag name="review"
          id="202017"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="202018"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184660</attachid>
            <date>2013-01-24 21:56:57 -0800</date>
            <delta_ts>2013-01-25 02:10:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107073-20130125145338.patch</filename>
            <type>text/plain</type>
            <size>44463</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdmZjA2NmZkMmY1OTRh
MjNhYThiMzI2MGE1NWZiMmZkMzRjYjAyZi4uYTViY2VhNmI5NjRiM2ExM2Y5YzI3NGEyZTg4NTk0
ZDRmY2FmN2FhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMy0wMS0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgICAgIFNldCBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgdG8g
bV9jaGFuZ2VNYXNrIGluc3RlYWQgb2YgQ29udGVudENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjph
ZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGls
ZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c09wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VG9NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnBy
ZXBhcmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXllclZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAg
ICAgICAgICAgIEZsdXNoIHBlbmRpbmcgY2hhbmdlcyBpbnRvIFRleHR1cmVNYXBwZXJMYXllci4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAg
ICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBs
aWNhTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFx
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZp
c2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFj
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBhaW50Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgor
CiAyMDEzLTAxLTI0ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tp
bmdTdG9yZXMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMjUxYTg0
ZWU4NmNiNzJlZGEwZGVlNTcxZjIzYWM3NDEzYWMzNjI5OS4uODNlNTdlOWNiZDM4NGI1M2JhMDgx
ODc4MjYzYzMzYmM4MmY3NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXll
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1
ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5
ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0RWZsLmNwcDoKKwogMjAxMy0wMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBj
b21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4TWFwXSBFbmFibGUgZGVidWcgYm9yZGVycyBh
bmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAxZGE5
NmE0ZDg5NjE2OGY2OTZhNTRlMTQ5OTMyMjQyZjBlYTFhMGQxLi40ZTQ1MDcwODY5ODc0MzgyNWE1
ZjQ1YTljYjQxYTE2NmY3M2YxY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVyZU1hcHBlckxh
eWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3
MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5j
bHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1cmVNYXBwZXJM
YXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRHTC5jcHA6CisKIDIwMTMtMDEtMjIgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRlYnVnIGJvcmRlcnMg
YW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDMzM2Q3
YmI1NmM3NjQ3MDIzYWRkZWVjNzQ2MDYzMjAwMzA0OTQ5MWMuLjUzYWZiNmI2M2VkZDdjYjlmOTA5
Mjg0OTgwMmFmYTBjZDAwNjkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAg
ICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVyZU1hcHBlckxheWVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVk
ZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1cmVNYXBwZXJMYXll
cigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50
UXQuY3BwOgorCiAyMDEzLTAxLTIyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1ZyBib3JkZXJzIGFuZCByZXBh
aW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKaW5kZXggNTNiMGFlOTg3YzNmNjYwOGQwYjZiNDAyMGViOTZhZWEzZjQzYzZj
OC4uZjAwMmNiNjNkNzI0YzRhZGE2MWU4ODM4M2M3MWE0MTkyN2M1ZTQ2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yOCw2ICsyOCwxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFwcGVy
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyID8gdG9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkgOiAwOworfQorCiBQYXNzT3du
UHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFj
dG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewogICAgIGlmICgh
ZmFjdG9yeSkKQEAgLTQ1LDcgKzUwLDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKICAgICA6
IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQogICAgICwgbV9sYXllcihhZG9wdFB0cihuZXcgVGV4dHVy
ZU1hcHBlckxheWVyKCkpKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKLSAg
ICAsIG1fY2hhbmdlTWFzaygwKQorICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAs
IG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9oYXNPd25CYWNraW5nU3RvcmUodHJ1ZSkK
ICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQpAQCAtNTUsNyArNjAsNyBAQCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NM
YXllckNsaWVudCogY2xpZQogewogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojpub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrIGNoYW5nZU1hc2sp
Cit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3RpZnlDaGFuZ2UoQ2hhbmdlTWFz
ayBjaGFuZ2VNYXNrKQogewogICAgIG1fY2hhbmdlTWFzayB8PSBjaGFuZ2VNYXNrOwogICAgIGlm
ICghY2xpZW50KCkpCkBAIC04Niw3ICs5MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbmVlZHNE
aXNwbGF5ID0gdHJ1ZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNw
bGF5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVw
YWludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSk7CiB9CiAKQEAgLTk0LDcg
Kzk5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5
KCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRz
RGlzcGxheSgpCiB7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxh
eUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFp
bnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CiAg
ICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5
Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3LDcgKzEyMiw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHsK
ICAgICBpZiAoR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7Ci0gICAgICAg
IG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAg
ICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXll
cio+JiBjaGlsZAogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxk
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2Up
OwogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAtMTM2LDE1ICsx
NDEsMTUgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGls
ZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFwaGlj
c0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENo
aWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVy
KiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXllcjo6
YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGls
ZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2Up
OwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsxNTcsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5
ZXIqIGxheWVyLCBHcmFwaGljc0xheQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGlu
ZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBzaWJsaW5nKTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7Cisg
ICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGlj
c0xheWVyLmgpCkBAIC0xNjAsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIGJv
b2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVy
KiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYgKEdyYXBoaWNz
TGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5vdGlm
eUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAgbm90
aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUpCiAgICAgaWYg
KHZhbHVlID09IG1hc2tMYXllcigpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxh
eWVyOjpNYXNrTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5ZXJDaGFuZ2Up
OwogCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE5NCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdy
YXBoaWNzTGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKHZh
bHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBsaWNhTGF5ZXJD
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwogfQogCiAvKiBc
cmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiB2YWx1ZSkK
ICAgICBpZiAodmFsdWUgPT0gcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFBvc2l0aW9uKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpQb3NpdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBvc2l0aW9uQ2hh
bmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDksNyArMjE0LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQoY29uc3Qg
RmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9pbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHZhbHVlKTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2ludENoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKEFuY2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChH
cmFwaGljc0xheWVyLmgpCkBAIC0yMjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFNpemUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFz
a0xheWVyKCktPnNldFNpemUodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OlNpemVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0
VHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpU
cmFuc2Zvcm1DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFuZ2UpOwogfQog
CiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeAogICAgIGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5zZm9ybSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
dmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuVHJh
bnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2Up
OwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsyNTgsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHZhbHVl
KQogICAgIGlmICh2YWx1ZSA9PSBwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm47CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OlByZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
UHJlc2VydmVzM0RDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAg
LTI2Myw3ICsyNjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNr
c1RvQm91bmRzKGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9Cb3VuZHMoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHModmFs
dWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tzVG9Cb3VuZHND
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsKIH0KIAogLyog
XHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlID09IGRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoRHJhd3NDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXREcmF3
c0NvbnRlbnQodmFsdWUpOwogCiAgICAgaWYgKHZhbHVlICYmIG1faGFzT3duQmFja2luZ1N0b3Jl
KQpAQCAtMjg1LDcgKzI5MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzVmlzaWJsZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50
c0FyZVZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkNvbnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENv
bnRlbnRzVmlzaWJsZUNoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNWaXNp
YmxlKHZhbHVlKTsKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5z
ZXRDb250ZW50c1Zpc2libGUodmFsdWUpOwpAQCAtMjk3LDcgKzMwMiw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNoYW5nZSk7Cisg
ICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c09wYXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwOCw3ICszMTMsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2
YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmFsdWUpOwot
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlzaWJpbGl0eUNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAK
IC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMzE4LDcgKzMyMyw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAgICAgaWYg
KHZhbHVlID09IG9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldE9wYWNpdHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6
Ok9wYWNpdHlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdlKTsKIH0KIAog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0zMjgsNyArMzMzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZh
bHVlKQogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoQ29udGVudHNSZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAt
MzM3LDcgKzM0Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zb2xpZENvbG9yID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6Q29udGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91bmRDb2xvckNo
YW5nZSk7CiB9CiAKIApAQCAtMzY2LDcgKzM3MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgfQogCiAgICAg
c2V0Q29udGVudHNUb01lZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAgICBub3RpZnlD
aGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoQ29udGVudENoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdl
KGltYWdlKTsKIH0KIApAQCAtMzc2LDcgKzM4MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlh
KG1lZGlhKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hh
bmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9jb250ZW50c0xh
eWVyID0gbWVkaWE7CiB9CiAKQEAgLTM4Niw3ICszOTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1
cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKQEAgLTM5
NSw3ICs0MDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGVi
dWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC00
MDQsMTEgKzQwOSwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICBpZiAobV9oYXNPd25CYWNr
aW5nU3RvcmUpCiAgICAgICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5m
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOworICAgIGNvbW1pdExh
eWVyQ2hhbmdlcygpOworICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CiAgICAgLy8gdXBk
YXRlQmFja2luZ1N0b3JlKCkgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgVGV4dHVyZU1hcHBlckxh
eWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgYmVjYXVzZSB1cGRh
dGVCYWNraW5nU3RvcmUoKSBuZWVkcyB0byBnZXQgVGV4dHVyZU1hcHBlciBmcm9tIFRleHR1cmVN
YXBwZXJMYXllci4KICAgICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKQEAg
LTQxNiwxMSArNDIxLDExIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBh
cmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAg
aWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUu
Y2xlYXIoKTsKLSAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6QmFj
a2luZ1N0b3JlQ2hhbmdlOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gQmFja2luZ1N0b3JlQ2hh
bmdlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKICAgICAg
ICAgICAgIG1fYmFja2luZ1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUoKTsKLSAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6
OkJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICAgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5n
U3RvcmVDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzMCw3ICs0MzUsNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KCkKIHsKICAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOwotCiAgICAgbV91c2lu
Z1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CiAgICAgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CiAKQEAgLTQzOCw3ICs0NDIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCiAgICAgYm9vbCBu
ZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3Bs
YXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOwogICAgIGlmIChpc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CiAgICAgICAgIGluY3JlbWVudFJl
cGFpbnRDb3VudCgpOwotICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVy
OjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBSZXBhaW50Q291
bnRDaGFuZ2U7CiAgICAgfQogfQogCkBAIC00NDYsNyArNDUwLDk5IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgd2lkdGgpCiB7CiAgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CiAgICAgbV9kZWJ1
Z0JvcmRlcldpZHRoID0gd2lkdGg7Ci0gICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJM
YXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOworICAgIG1fY2hhbmdlTWFzayB8PSBEZWJ1Z1Zpc3Vh
bHNDaGFuZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKGNv
bnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGxheWVycywgVmVjdG9yPFRleHR1cmVNYXBwZXJM
YXllcio+JiB0ZXhtYXBMYXllcnMpCit7CisgICAgdGV4bWFwTGF5ZXJzLnJlc2VydmVDYXBhY2l0
eShsYXllcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXpl
KCk7ICsraSkKKyAgICAgICAgdGV4bWFwTGF5ZXJzLmFwcGVuZCh0b1RleHR1cmVNYXBwZXJMYXll
cihsYXllcnNbaV0pKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29t
bWl0TGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBpZiAobV9jaGFuZ2VNYXNrID09IE5vQ2hhbmdlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdl
KSB7CisgICAgICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiB0ZXh0dXJlTWFwcGVyTGF5
ZXJDaGlsZHJlbjsKKyAgICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY2hpbGRyZW4o
KSwgdGV4dHVyZU1hcHBlckxheWVyQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5zZXRDaGls
ZHJlbih0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7CisgICAgfQorCisgICAgaWYgKG1fY2hh
bmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza0xheWVy
KHRvVGV4dHVyZU1hcHBlckxheWVyKG1hc2tMYXllcigpKSk7CisKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgUmVwbGljYUxheWVyQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRSZXBsaWNhTGF5
ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIocmVwbGljYUxheWVyKCkpKTsKKworICAgIGlmIChtX2No
YW5nZU1hc2sgJiBQb3NpdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24o
cG9zaXRpb24oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQW5jaG9yUG9pbnRDaGFuZ2Up
CisgICAgICAgIG1fbGF5ZXItPnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KCkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIFNpemVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFNpemUo
c2l6ZSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBUcmFuc2Zvcm1DaGFuZ2UpCisgICAg
ICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0oKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VNYXNrICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENo
aWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOworCisgICAgaWYgKG1fY2hhbmdl
TWFzayAmIFByZXNlcnZlczNEQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRQcmVzZXJ2ZXMz
RChwcmVzZXJ2ZXMzRCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1JlY3RD
aGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzUmVjdChjb250ZW50c1JlY3QoKSk7
CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgTWFza3NUb0JvdW5kc0NoYW5nZSkKKyAgICAgICAg
bV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKCkpOworCisgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIERyYXdzQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RHJh
d3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250
ZW50c1Zpc2libGVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShj
b250ZW50c0FyZVZpc2libGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudHNP
cGFxdWVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKGNvbnRlbnRz
T3BhcXVlKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEJhY2tmYWNlVmlzaWJpbGl0eUNo
YW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJhY2tmYWNlVmlz
aWJpbGl0eSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBPcGFjaXR5Q2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRTb2xpZENv
bG9yKHNvbGlkQ29sb3IoKSk7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKCkpOworI2VuZGlmCisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3Jl
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUu
Z2V0KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERlYnVnVmlzdWFsc0NoYW5nZSkKKyAg
ICAgICAgbV9sYXllci0+c2V0RGVidWdWaXN1YWxzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCksIGRl
YnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpLCBpc1Nob3dpbmdSZXBhaW50Q291
bnRlcigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2UpCisg
ICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRDb3VudChyZXBhaW50Q291bnQoKSk7CisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29u
dGVudHNMYXllcihwbGF0Zm9ybUxheWVyKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFu
aW1hdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlv
bnMpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9yQ2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdwb3J0KCkpOworCisg
ICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5
ZXIuaCkKQEAgLTQ2NiwxMSArNTYyLDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAg
Y2hpbGRyZW4oKVtpXS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwogfQogCi12b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQotewot
ICAgIG1fY2hhbmdlTWFzayA9IDA7Ci19Ci0KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0
b3JlKTsKQEAgLTUyMCw3ICs2MTEsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdAogICAgICAg
ICBsaXN0c01hdGNoID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFz
QmlnUm90YXRpb24pID49IDA7CiAKICAgICBtX2FuaW1hdGlvbnMuYWRkKEdyYXBoaWNzTGF5ZXJB
bmltYXRpb24oa2V5ZnJhbWVzTmFtZSwgdmFsdWVMaXN0LCBib3hTaXplLCBhbmltLCBXVEY6OmN1
cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
QW5pbWF0aW9uQ2hhbmdlKTsKICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjgsNyArNjE5LDcgQEAgYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFuaW1h
dGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCiB7CiAgICAg
bV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpBbmltYXRpb25DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25DaGFu
Z2UpOwogfQogCiAKQEAgLTU1MCw3ICs2NDEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJz
KGZpbHRlcnMpOwogfQogI2VuZGlmCkBAIC01NjIsMTMgKzY1MywyMiBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFw
cGVyQmFja2luZwogICAgICAgICByZXR1cm47CiAKICAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tp
bmdTdG9yZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpCYWNraW5nU3Rv
cmVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShCYWNraW5nU3RvcmVDaGFuZ2UpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBm
aXhlZCkKK3sKKyAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gZml4ZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7CisgICAgbm90aWZ5Q2hhbmdl
KEZpeGVkVG9WaWV3cG9yQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAgICAgbV9yZXBhaW50
Q291bnQgPSByZXBhaW50Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6UmVwYWludENvdW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwYWludENvdW50Q2hh
bmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRl
eCA1ZTA4MTZlNWQ2MzIxY2NhNzljMmIyNDc4ZTk3NzdlZjkxYTRmY2FjLi43MjZlMThjNjRiNmIz
MjE0MzJkOTQwZDhiOGUzYjRkMzk4YWNhYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaApAQCAtMjksOCArMjksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsK
LSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwotCiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwog
ICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CkBAIC03Myw3ICs3MSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25z
dCB7IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTkxLDcgKzg4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hhc093bkJhY2tpbmdT
dG9yZSA9IGI7IH0KICAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmU+KTsKIAotICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wg
Zml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQorICAgIHZvaWQgc2V0Rml4ZWRU
b1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1
cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KQEAgLTEwMSwxMyArOTgsNTUgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsK
LSAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworCisgICAgdm9pZCBjb21taXRM
YXllckNoYW5nZXMoKTsKKyAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lk
IHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmUoKTsKLSAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNo
b3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRU
aW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwogCisgICAgLy8g
VGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBs
YXllciBoYXZlIGJlZW4KKyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2Ug
Y2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KKyAgICBlbnVtIENo
YW5nZU1hc2sgeworICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKKworICAg
ICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAorICAgICAgICBNYXNr
TGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBSZXBsaWNhTGF5ZXJD
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAg
ICAgICAgICAoMUwgPDwgNCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAo
MUwgPDwgNSksCisgICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgNiks
CisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwgNyksCisKKyAgICAg
ICAgUG9zaXRpb25DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAgICAgICAgQW5jaG9y
UG9pbnRDaGFuZ2UgPSAgICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6ZUNoYW5nZSA9ICAg
ICAgICAgICAgICAgICgxTCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAg
ICAgICAoMUwgPDwgMTEpLAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSA9ICAgKDFM
IDw8IDEyKSwKKyAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAgICgxTCA8PCAxMyks
CisKKyAgICAgICAgTWFza3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8PCAxNCksCisgICAg
ICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAorICAgICAgICBPcGFj
aXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAgQmFja2ZhY2VWaXNp
YmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2luZ1N0b3JlQ2hhbmdl
ID0gICAgICAgICgxTCA8PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2UgPSAgICAgICAgICAg
ICAoMUwgPDwgMTkpLAorICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2UgPSAgICAgKDFMIDw8
IDIwKSwKKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgxTCA8PCAyMSksCisK
KyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCisgICAgICAg
IEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisgICAgICAgIERlYnVn
VmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBSZXBhaW50Q291bnRD
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5n
ZSA9ICAgICAgKDFMIDw8IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlDaGFuZ2UoQ2hhbmdl
TWFzayk7CisKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xheWVyOwogICAgIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwog
ICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwpAQCAtMTMzLDUg
KzE3Miw3IEBAIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitUZXh0dXJlTWFwcGVy
TGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKwogfQogI2VuZGlm
IC8vIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKaW5kZXggNmIzYWE2MjRhNGI2OGM3ZDViMmFkNGI2NWU1ZGM3OTc4MjBmYWI4Yi4uNDhiZDhj
OWQ4MmQyYzAxNjhkNjI3M2E5MzhhOGJhYzdjODk4ZDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKQEAgLTIyLDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CkBAIC00
MCwxMSArMzgsNiBAQCBwdWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJlTWFwcGVyTGF5ZXIq
IHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIHJldHVy
biBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDog
MDsKLX0KLQogY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJv
b3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpAQCAtMzc0LDgzICsz
NjcsMTEgQEAgVGV4dHVyZU1hcHBlciogVGV4dHVyZU1hcHBlckxheWVyOjp0ZXh0dXJlTWFwcGVy
KCkgY29uc3QKICAgICByZXR1cm4gcm9vdExheWVyKCktPm1fdGV4dHVyZU1hcHBlcjsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAg
QVNTRVJUKGdyYXBoaWNzTGF5ZXIpOwotICAgIGludCBjaGFuZ2VNYXNrID0gZ3JhcGhpY3NMYXll
ci0+Y2hhbmdlTWFzaygpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdy
YXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChjaGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpCi0gICAgICAgIHNldENoaWxkcmVu
KGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKCkpOwotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBNYXNr
TGF5ZXJDaGFuZ2UpIHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKSkKLSAgICAgICAg
ICAgbGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdl
TWFzayAmIFJlcGxpY2FMYXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxh
eWVyKCkpKQotICAgICAgICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwotICAgIH0K
LQotICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAgICAgICBtX2FuaW1h
dGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7Ci0KLSAgICBpZiAoY2hhbmdlTWFz
ayAmIEJhY2tpbmdTdG9yZUNoYW5nZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBncmFwaGlj
c0xheWVyLT5tX2JhY2tpbmdTdG9yZS5nZXQoKTsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVw
YWludENvdW50Q2hhbmdlKQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNz
TGF5ZXItPnJlcGFpbnRDb3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5y
ZXBsaWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNh
TGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwot
ICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNob3JQb2ludCgpOwot
ICAgIG1fc3RhdGUuc2l6ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAgICBtX3N0YXRlLnRy
YW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUuY29udGVu
dHNSZWN0ID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAgbV9zdGF0ZS5wcmVz
ZXJ2ZXMzRCA9IGdyYXBoaWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgbV9zdGF0ZS5tYXNr
c1RvQm91bmRzID0gZ3JhcGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwotICAgIG1fc3RhdGUu
ZHJhd3NDb250ZW50ID0gZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7Ci0gICAgbV9zdGF0
ZS5jb250ZW50c1Zpc2libGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0FyZVZpc2libGUoKTsK
LSAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFx
dWUoKTsKLSAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBoaWNzTGF5ZXItPmJh
Y2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFw
aGljc0xheWVyLT5jaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUub3BhY2l0eSA9IGdy
YXBoaWNzTGF5ZXItPm9wYWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBncmFwaGlj
c0xheWVyLT5zb2xpZENvbG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmIChj
aGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFw
aGljc0xheWVyLT5maWx0ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdy
YXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0ZS5zaG93RGVidWdC
b3JkZXJzID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKLSAgICBtX3N0
YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldp
ZHRoID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdC
b3JkZXJXaWR0aCgpOwotICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NM
YXllci0+aXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29udGVudHNMYXllciA9
IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3VycmVudFRyYW5zZm9y
bS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3VycmVudFRyYW5zZm9y
bS5zZXRBbmNob3JQb2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX2N1cnJlbnRUcmFu
c2Zvcm0uc2V0U2l6ZShtX3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRG
bGF0dGVuaW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0u
c2V0TG9jYWxUcmFuc2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudFRyYW5z
Zm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKLQot
ICAgIHN5bmNBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRD
aGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKK3ZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBl
ckxheWVyKj4mIG5ld0NoaWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIobmV3Q2hp
bGRyZW5baV0pOwotICAgICAgICBBU1NFUlQoY2hpbGQpOwotICAgICAgICBhZGRDaGlsZChjaGls
ZCk7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgp
OyArK2kpCisgICAgICAgIGFkZENoaWxkKG5ld0NoaWxkcmVuW2ldKTsKIH0KIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciogY2hpbGRMYXllcikK
QEAgLTQ4OCw2ICs0MDksMTM1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpyZW1vdmVBbGxD
aGlsZHJlbigpCiAgICAgfQogfQogCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza0xh
eWVyKFRleHR1cmVNYXBwZXJMYXllciogbWFza0xheWVyKQoreworICAgIGlmIChtYXNrTGF5ZXIp
CisgICAgICAgIG1hc2tMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOworICAgIG1fc3RhdGUu
bWFza0xheWVyID0gbWFza0xheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
UmVwbGljYUxheWVyKFRleHR1cmVNYXBwZXJMYXllciogcmVwbGljYUxheWVyKQoreworICAgIGlm
IChyZXBsaWNhTGF5ZXIpCisgICAgICAgIHJlcGxpY2FMYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0
aGlzOworICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24pCit7CisgICAgbV9zdGF0ZS5wb3MgPSBwb3NpdGlvbjsKKyAgICBtX2N1cnJlbnRUcmFuc2Zv
cm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIG1fc3RhdGUu
c2l6ZSA9IHNpemU7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFNpemUoc2l6ZSk7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50
M0QmIGFuY2hvclBvaW50KQoreworICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBhbmNob3JQb2lu
dDsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOwor
fQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2
ZXMzRCkKK3sKKyAgICBtX3N0YXRlLnByZXNlcnZlczNEID0gcHJlc2VydmVzM0Q7CisgICAgbV9j
dXJyZW50VHJhbnNmb3JtLnNldEZsYXR0ZW5pbmcoIXByZXNlcnZlczNEKTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtKQoreworICAgIG1fc3RhdGUudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAg
IG1fY3VycmVudFRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGNoaWxkcmVuVHJhbnNmb3JtKQoreworICAgIG1fc3RhdGUuY2hpbGRy
ZW5UcmFuc2Zvcm0gPSBjaGlsZHJlblRyYW5zZm9ybTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0u
c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRzUmVj
dCkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVjdDsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRz
KQoreworICAgIG1fc3RhdGUubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7Cit9CisKK3Zv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQp
Cit7CisgICAgbV9zdGF0ZS5kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c1Zpc2libGUoYm9vbCBjb250ZW50c1Zpc2li
bGUpCit7CisgICAgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgPSBjb250ZW50c1Zpc2libGU7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50c09wYXF1ZShib29sIGNvbnRl
bnRzT3BhcXVlKQoreworICAgIG1fc3RhdGUuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1
ZTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShi
b29sIGJhY2tmYWNlVmlzaWJpbGl0eSkKK3sKKyAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0
eSA9IGJhY2tmYWNlVmlzaWJpbGl0eTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX3N0YXRlLm9wYWNpdHkgPSBvcGFjaXR5
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U29saWRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCit7CisgICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gY29sb3I7Cit9CisKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RmlsdGVycyhj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fc3RhdGUuZmlsdGVycyA9
IGZpbHRlcnM7Cit9CisjZW5kaWYKKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVn
VmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNv
bG9yLCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcikKK3sK
KyAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBzaG93RGVidWdCb3JkZXJzOworICAgIG1f
c3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7CisgICAgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoID0gZGVidWdCb3JkZXJXaWR0aDsKKyAgICBtX3N0YXRlLnNob3dSZXBh
aW50Q291bnRlciA9IHNob3dSZXBhaW50Q291bnRlcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQoreworICAgIG1fc3RhdGUu
cmVwYWludENvdW50ID0gcmVwYWludENvdW50OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcikKK3sKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyYgYW5pbWF0aW9ucykKK3sKKyAgICBtX2FuaW1hdGlvbnMgPSBhbmltYXRpb25zOwor
fQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4
ZWRUb1ZpZXdwb3J0KQoreworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2JhY2tpbmdTdG9yZSA9
IGJhY2tpbmdTdG9yZTsKK30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRz
T3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaAppbmRleCBkMDU2MDBjNWEyMTFjMmUwMTc2NzU5ZmU1YjAxZWM2MGI3NmM5NDdmLi5lMGM4
MjMzYzgyZTVmN2M2MWNkOTVjYWZjNDE5MWRlM2EyODZlZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtMzQsNTEgKzMzLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
czsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFw
aGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRl
eHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVz
IG9mIHRoZSBsYXllciBoYXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRv
ciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KLSAg
ICBlbnVtIENoYW5nZU1hc2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAg
MCwKLQotICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAotICAg
ICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAotICAgICAgICBQb3Np
dGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAgIEFuY2hvclBvaW50
Q2hhbmdlID0gICAgICAgICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFuZ2UgID0gICAgICAg
ICAgICAgICAoMUwgPDwgNSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAo
MUwgPDwgNiksCi0gICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNyks
Ci0KLSAgICAgICAgQ29udGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwKLSAgICAg
ICAgT3BhY2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0gICAgICAgIENvbnRl
bnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAgIFByZXNlcnZlczNE
Q2hhbmdlID0gICAgICAgICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdl
ID0gICAgICAgKDFMIDw8IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0gICAgICAg
ICgxTCA8PCAxNCksCi0gICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwg
MTUpLAotICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2KSwKLQot
ICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAgICAgICAg
Q2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAgICAgIERpc3BsYXlD
aGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JD
aGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAg
ICAgICAgKDFMIDw8IDIxKSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgx
TCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMp
LAotCi0gICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAg
ICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKLQotICAgICAgICBC
YWNraW5nU3RvcmVDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI2KQotICAgIH07Ci0KICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZl
Y3RUYXJnZXQoMCkKQEAgLTg3LDEzICs0Niw0MiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJy
ZW50T3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVy
ZU1hcHBlcigwKQorICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQogICAgIHsgfQog
CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKICAgICBUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7Ci0gICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBz
ZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIg
PSB0ZXhtYXA7IH0KKworICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVN
YXBwZXJMYXllcio+Jik7CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVy
Kik7CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAg
dm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJik7CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKyAgICB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0Q2hpbGRyZW5U
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldENvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wp
OworICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNW
aXNpYmxlKGJvb2wpOworICAgIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7CisgICAgdm9p
ZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0
KTsKKyAgICB2b2lkIHNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsK
KyNlbmRpZgorICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0RlYnVnQm9yZGVycywg
Y29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJv
b2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOwor
ICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciopOwor
ICAgIHZvaWQgc2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwor
ICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOworICAgIHZvaWQgc2V0QmFja2luZ1N0
b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqKTsKKworICAgIHZvaWQgc3luY0FuaW1hdGlv
bnMoKTsKICAgICBib29sIGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHBhaW50KCk7CkBAIC0xMTUsNyArMTAzLDYgQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVk
VG9WaWV3cG9ydCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8
R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIq
KTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxk
cmVuKCk7CkBAIC0xMzIsNyArMTE5LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIE9WRVJSSURF
IHsgbV9jdXJyZW50RmlsdGVycyA9IGZpbHRlcnM7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzeW5j
QW5pbWF0aW9ucygpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgZW51bSBDb250
ZW50c0xheWVyQ291bnQgewogICAgICAgICBOb0xheWVyc1dpdGhDb250ZW50LApAQCAtMjE0LDkg
KzIwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKIH07CiAKLQot
VGV4dHVyZU1hcHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKik7
Ci0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAK
aW5kZXggMDhkZTNlMGQwYzdhMTcwYjhlMzRjOWIwOTU2MWI3YTA5NWU4ZDVjMC4uOGEzYTI0OWJl
MjAwYmVmMzU5MmZjYThjNGJkMDBiNDUzYWMzYmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0RWZsLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRl
ICJQYWdlQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCmluZGV4IGQxMzBhM2ZiN2IzYjE4OTA2YWVh
OWRmODk4OTM0YjFhNmZmYWYwMDYuLmMyM2RlNjJhMTBhMWMxNDFlNzRhMGQzMjIwM2U0NTkzYmRm
ODIwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJD
bGllbnRRdC5jcHAKaW5kZXggZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNm
NC4uNjZiOGQwZjk2ZDRhNzI2NmUxNmRiZGNhZTFhOWJmNThmMzE5ODcwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKICNp
bmNsdWRlICJRV2ViUGFnZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIu
aCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184706</attachid>
            <date>2013-01-25 02:10:59 -0800</date>
            <delta_ts>2013-01-30 00:03:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130125190739.patch</filename>
            <type>text/plain</type>
            <size>44065</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JlNGE3MGUwZTI1ZDJl
YjBhY2E5M2VhMGU2YjhlYzg0YWUzOWFlZi4uMGI3ZjU0ZTBmNTA5MDQxZjM3YmZiYzZmZGIzMjc3
MWJjN2U0ZTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxMy0wMS0yNSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgICAgIFNldCBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgdG8g
bV9jaGFuZ2VNYXNrIGluc3RlYWQgb2YgQ29udGVudENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjph
ZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGls
ZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c09wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VG9NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnBy
ZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5n
ZXMpOgorICAgICAgICAgICAgRmx1c2ggcGVuZGluZyBjaGFuZ2VzIGludG8gVGV4dHVyZU1hcHBl
ckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFk
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuY2hvclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVz
M0QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlblRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tzVG9C
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250
ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVnVmlz
dWFscyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGFpbnRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1Zp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJM
YXllcik6CisKKzIwMTMtMDEtMjUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJlci4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5OQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5k
ZXggMjUxYTg0ZWU4NmNiNzJlZGEwZGVlNTcxZjIzYWM3NDEzYWMzNjI5OS4uZWIzNjE3NGJlMzA0
Mjg1ODQyMzI1MWJhZjg3MzRmYWRhMjNmNjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEzLTAxLTI1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVN
YXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAg
ICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKKwogMjAxMy0wMS0yMiAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4TWFwXSBFbmFibGUgZGVidWcg
Ym9yZGVycyBhbmQgcmVwYWludCBjb3VudGVyIHZpYSBTZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCAxZGE5NmE0ZDg5NjE2OGY2OTZhNTRlMTQ5OTMyMjQyZjBlYTFhMGQxLi5hNTgxYTBjYWZj
MTU4ZTc5ZmU3MjJiYTYyZWQ5ZTI4OTczYmNkNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTMtMDEtMjUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAg
ICAgICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1
cmVNYXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRHTC5jcHA6CisKIDIwMTMtMDEtMjIgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRlYnVn
IGJvcmRlcnMgYW5kIHJlcGFpbnQgY291bnRlciB2aWEgU2V0dGluZ3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDMzM2Q3YmI1NmM3NjQ3MDIzYWRkZWVjNzQ2MDYzMjAwMzA0OTQ5MWMuLjcxMzQ3YTE2OTQ1
MWI4NDc4NTFmN2I0YjQyYWJhYThmNmZmYjg1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTMtMDEtMjUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CisKKyAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVyZU1h
cHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAg
ICAgSW5jbHVkZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1cmVN
YXBwZXJMYXllcigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxh
eWVyQ2xpZW50UXQuY3BwOgorCiAyMDEzLTAxLTIyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1ZyBib3JkZXJz
IGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggYjc2N2Q5Mjg0ODJmMmQyNjY3OTE1MWRjNmY0NWQx
N2JiNDc0NTQ1Yy4uYjE2YmRkYmFjMTE2MTJiMzBiMmI5ZjMyY2VmZDMwMzdhMTI1ZTQyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yOCw2ICsyOCwx
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHR1cmVNYXBwZXJMYXllciogdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVy
ID8gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkgOiAwOworfQor
CiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGlj
c0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewog
ICAgIGlmICghZmFjdG9yeSkKQEAgLTQ1LDcgKzUwLDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWUKICAgICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQogICAgICwgbV9sYXllcihhZG9wdFB0cihu
ZXcgVGV4dHVyZU1hcHBlckxheWVyKCkpKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQ
dHIoMCkKLSAgICAsIG1fY2hhbmdlTWFzaygwKQorICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdl
cykKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9oYXNPd25CYWNraW5nU3Rv
cmUodHJ1ZSkKICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQpAQCAtNTUsNyArNjAsNyBA
QCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
R3JhcGhpY3NMYXllckNsaWVudCogY2xpZQogewogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrIGNo
YW5nZU1hc2spCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3RpZnlDaGFuZ2Uo
Q2hhbmdlTWFzayBjaGFuZ2VNYXNrKQogewogICAgIG1fY2hhbmdlTWFzayB8PSBjaGFuZ2VNYXNr
OwogICAgIGlmICghY2xpZW50KCkpCkBAIC04Niw3ICs5MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fbmVlZHNEaXNwbGF5ID0gdHJ1ZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxh
eWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAg
ICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSk7CiB9CiAK
QEAgLTk0LDcgKzk5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVl
ZHNEaXNwbGF5KCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6RGlzcGxheUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFuZ2UpOwogICAg
IGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5n
ZShEaXNwbGF5Q2hhbmdlKTsKICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3
LDcgKzEyMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlz
cGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGls
ZHJlbikKIHsKICAgICBpZiAoR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7
Ci0gICAgICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdl
KTsKKyAgICAgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3Jh
cGhpY3NMYXllcio+JiBjaGlsZAogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRy
ZW5DaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAt
MTM2LDE1ICsxNDEsMTUgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hp
bGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAg
ICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFw
aGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVy
OjphZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRy
ZW5DaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsx
NTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdy
YXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBz
aWJsaW5nKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0xNjAsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhp
Y3NMYXkKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFw
aGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYg
KEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAg
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAg
ICAgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUp
CiAgICAgaWYgKHZhbHVlID09IG1hc2tMYXllcigpKQogICAgICAgICByZXR1cm47CiAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0TWFza0xheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpNYXNrTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5
ZXJDaGFuZ2UpOwogCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcg
KzE5NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRC
eUxheWVyKEdyYXBoaWNzTGF5ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5
ZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRC
eUxheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBs
aWNhTGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwog
fQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlckxheWVyOjpQb3NpdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBv
c2l0aW9uQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDks
NyArMjE0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9p
bnQoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9p
bnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2lu
dENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEFuY2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyog
XHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAg
IEdyYXBoaWNzTGF5ZXI6OnNldFNpemUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAg
ICAgICAgbWFza0xheWVyKCktPnNldFNpemUodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OlNpemVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdl
KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0VHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpUcmFuc2Zvcm1DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFu
Z2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeAogICAgIGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5z
Zm9ybSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5U
cmFuc2Zvcm0odmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNo
aWxkcmVuVHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zv
cm1DaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsy
NTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChi
b29sIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1
cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlm
eUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlByZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoUHJlc2VydmVzM0RDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5
ZXIuaCkKQEAgLTI2Myw3ICsyNjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9C
b3VuZHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9C
b3VuZHModmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tz
VG9Cb3VuZHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsK
IH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlID09IGRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsK
KyAgICBub3RpZnlDaGFuZ2UoRHJhd3NDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVy
OjpzZXREcmF3c0NvbnRlbnQodmFsdWUpOwogCiAgICAgaWYgKHZhbHVlICYmIG1faGFzT3duQmFj
a2luZ1N0b3JlKQpAQCAtMjg1LDcgKzI5MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzVmlzaWJsZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9
PSBjb250ZW50c0FyZVZpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENvbnRlbnRzVmlzaWJsZUNoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNWaXNpYmxlKHZhbHVlKTsKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tM
YXllcigpLT5zZXRDb250ZW50c1Zpc2libGUodmFsdWUpOwpAQCAtMjk3LDcgKzMwMiw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlID09IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwOCw3ICszMTMs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxp
dHkoYm9vbCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHko
dmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlz
aWJpbGl0eUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5n
ZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMzE4LDcgKzMyMyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUp
CiAgICAgaWYgKHZhbHVlID09IG9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldE9wYWNpdHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6Ok9wYWNpdHlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdl
KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0zMjgsNyArMzMzLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoQ29udGVudHNSZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQpAQCAtMzM3LDcgKzM0Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zb2xpZENvbG9yID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6Q29udGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91
bmRDb2xvckNoYW5nZSk7CiB9CiAKIApAQCAtMzY2LDcgKzM3MSw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAg
fQogCiAgICAgc2V0Q29udGVudHNUb01lZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBu
b3RpZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb0ltYWdlKGltYWdlKTsKIH0KIApAQCAtMzc2LDcgKzM4MSw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcioKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb01lZGlhKG1lZGlhKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpD
b250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9j
b250ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKQEAgLTM4Niw3ICszOTEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAg
ICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hv
dyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hh
bmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hv
dykKQEAgLTM5NSw3ICs0MDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAgICBH
cmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVy
LmgpCkBAIC00MDMsOSArNDA4LDkgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewogICAg
IHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwotICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkodGhpcyk7CisgICAgY29tbWl0TGF5ZXJDaGFuZ2Vz
KCk7CisgICAgbV9sYXllci0+c3luY0FuaW1hdGlvbnMoKTsKICAgICB1cGRhdGVCYWNraW5nU3Rv
cmVJZk5lZWRlZCgpOwotICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQo
KQpAQCAtNDE0LDExICs0MTksMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
cHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
c2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKSB7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLmNsZWFy
KCk7Ci0gICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tpbmdT
dG9yZUNoYW5nZTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IEJhY2tpbmdTdG9yZUNoYW5nZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlKSB7CiAgICAgICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpCYWNr
aW5nU3RvcmVDaGFuZ2U7CisgICAgICAgICAgICBtX2NoYW5nZU1hc2sgfD0gQmFja2luZ1N0b3Jl
Q2hhbmdlOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzUsNyArNDQwLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQo
KQogICAgIGJvb2wgbmVlZHNUb1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgJiYg
KG1fbmVlZHNEaXNwbGF5IHx8ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsKICAgICBp
ZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkgewogICAgICAg
ICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKLSAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1
cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgICAgICBtX2NoYW5nZU1hc2sg
fD0gUmVwYWludENvdW50Q2hhbmdlOwogICAgIH0KIH0KIApAQCAtNDQzLDcgKzQ0OCw5OSBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IHdpZHRoKQogewogICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9y
OwogICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotICAgIG1fY2hhbmdlTWFzayB8PSBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZTsKKyAgICBtX2NoYW5nZU1hc2sg
fD0gRGVidWdWaXN1YWxzQ2hhbmdlOworfQorCitzdGF0aWMgdm9pZCB0b1RleHR1cmVNYXBwZXJM
YXllclZlY3Rvcihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBsYXllcnMsIFZlY3RvcjxU
ZXh0dXJlTWFwcGVyTGF5ZXIqPiYgdGV4bWFwTGF5ZXJzKQoreworICAgIHRleG1hcExheWVycy5y
ZXNlcnZlQ2FwYWNpdHkobGF5ZXJzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleG1hcExheWVycy5hcHBlbmQodG9UZXh0
dXJlTWFwcGVyTGF5ZXIobGF5ZXJzW2ldKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCit7CisgICAgaWYgKG1fY2hhbmdlTWFzayA9
PSBOb0NoYW5nZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBD
aGlsZHJlbkNoYW5nZSkgeworICAgICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4gdGV4
dHVyZU1hcHBlckxheWVyQ2hpbGRyZW47CisgICAgICAgIHRvVGV4dHVyZU1hcHBlckxheWVyVmVj
dG9yKGNoaWxkcmVuKCksIHRleHR1cmVNYXBwZXJMYXllckNoaWxkcmVuKTsKKyAgICAgICAgbV9s
YXllci0+c2V0Q2hpbGRyZW4odGV4dHVyZU1hcHBlckxheWVyQ2hpbGRyZW4pOworICAgIH0KKwor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBNYXNrTGF5ZXJDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXIt
PnNldE1hc2tMYXllcih0b1RleHR1cmVNYXBwZXJMYXllcihtYXNrTGF5ZXIoKSkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIFJlcGxpY2FMYXllckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0UmVwbGljYUxheWVyKHRvVGV4dHVyZU1hcHBlckxheWVyKHJlcGxpY2FMYXllcigpKSk7CisK
KyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUG9zaXRpb25DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXIt
PnNldFBvc2l0aW9uKHBvc2l0aW9uKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuY2hv
clBvaW50Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludChhbmNob3JQb2lu
dCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBTaXplQ2hhbmdlKQorICAgICAgICBtX2xh
eWVyLT5zZXRTaXplKHNpemUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgVHJhbnNmb3Jt
Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKCkpOworCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlKQorICAgICAgICBt
X2xheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKKworICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBQcmVzZXJ2ZXMzRENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0UHJlc2VydmVzM0QocHJlc2VydmVzM0QoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
Q29udGVudHNSZWN0Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50c1JlY3QoY29u
dGVudHNSZWN0KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tzVG9Cb3VuZHNDaGFu
Z2UpCisgICAgICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobWFza3NUb0JvdW5kcygpKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBEcmF3c0NvbnRlbnRDaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBpZiAobV9jaGFu
Z2VNYXNrICYgQ29udGVudHNWaXNpYmxlQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRDb250
ZW50c1Zpc2libGUoY29udGVudHNBcmVWaXNpYmxlKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIENvbnRlbnRzT3BhcXVlQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50c09w
YXF1ZShjb250ZW50c09wYXF1ZSgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNrZmFj
ZVZpc2liaWxpdHlDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0
eShiYWNrZmFjZVZpc2liaWxpdHkoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgT3BhY2l0
eUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KCkpOworCisgICAg
aWYgKG1fY2hhbmdlTWFzayAmIEJhY2tncm91bmRDb2xvckNoYW5nZSkKKyAgICAgICAgbV9sYXll
ci0+c2V0U29saWRDb2xvcihzb2xpZENvbG9yKCkpOworCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorICAgIGlmIChtX2NoYW5nZU1hc2sgJiBGaWx0ZXJDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycygpKTsKKyNlbmRpZgorCisgICAgaWYgKG1fY2hhbmdlTWFzayAm
IEJhY2tpbmdTdG9yZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1f
YmFja2luZ1N0b3JlLmdldCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBEZWJ1Z1Zpc3Vh
bHNDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldERlYnVnVmlzdWFscyhpc1Nob3dpbmdEZWJ1
Z0JvcmRlcigpLCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgoKSwgaXNTaG93
aW5nUmVwYWludENvdW50ZXIoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUmVwYWludENv
dW50Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRSZXBhaW50Q291bnQocmVwYWludENvdW50
KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIENvbnRlbnRDaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldENvbnRlbnRzTGF5ZXIocGxhdGZvcm1MYXllcigpKTsKKworICAgIGlmIChtX2No
YW5nZU1hc2sgJiBBbmltYXRpb25DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBGaXhlZFRvVmlld3Bv
ckNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGZpeGVkVG9WaWV3
cG9ydCgpKTsKKworICAgIG1fY2hhbmdlTWFzayA9IE5vQ2hhbmdlczsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC00NjMsMTEgKzU2MCw2IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgICAgIGNoaWxkcmVuKClbaV0tPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShyZWN0KTsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGlu
Z1N0YXRlKCkKLXsKLSAgICBtX2NoYW5nZU1hc2sgPSAwOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiB7CiAgICAgaWYg
KCFtX2hhc093bkJhY2tpbmdTdG9yZSkKQEAgLTUxOSw3ICs2MTEsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdAogICAgICAgICBsaXN0c01hdGNoID0gdmFsaWRhdGVUcmFuc2Zvcm1PcGVyYXRp
b25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pID49IDA7CiAKICAgICBtX2FuaW1hdGlvbnMu
YWRkKEdyYXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJhbWVzTmFtZSwgdmFsdWVMaXN0LCBib3hT
aXplLCBhbmltLCBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7
Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsK
KyAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKICAgICBtX2FuaW1hdGlvblN0YXJ0
ZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjcsNyAr
NjE5LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFu
aW1hdGlvbnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKLSAgICBub3RpZnlD
aGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmltYXRpb25DaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShBbmltYXRpb25DaGFuZ2UpOwogfQogCiAKQEAgLTU0OSw3ICs2NDEsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1l
cjxHcmFwaGljc0xheWVyVAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykKIHsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpGaWx0ZXJDaGFu
Z2UpOworICAgIG5vdGlmeUNoYW5nZShGaWx0ZXJDaGFuZ2UpOwogICAgIHJldHVybiBHcmFwaGlj
c0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCkBAIC01NjEsMTMgKzY1Mywy
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNraW5nU3RvcmUoUGFz
c1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZwogICAgICAgICByZXR1cm47CiAKICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpCYWNraW5nU3RvcmVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShCYWNraW5nU3Rv
cmVDaGFuZ2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhl
ZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkKK3sKKyAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0g
Zml4ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7
CisgICAgbm90aWZ5Q2hhbmdlKEZpeGVkVG9WaWV3cG9yQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQp
CiB7CiAgICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFu
Z2UoUmVwYWludENvdW50Q2hhbmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaAppbmRleCA2MmY0NTgwM2NmZWYyYWM0NzJmYTg5YTIwYzAyNzk4YWExMzFj
NTU2Li44Zjc1ZjVmODY0M2UzOWYzM2Y0NWI2YTQxMzRmNjY2ZGIyZGM4ODY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjksOCArMjksNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyIHsKLSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwot
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhp
Y3NMYXllckNsaWVudCopOwogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KCk7CkBAIC03Myw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50
IGNoYW5nZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRT
aXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTkxLDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikg
eyBtX2hhc093bkJhY2tpbmdTdG9yZSA9IGI7IH0KICAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQ
YXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+KTsKIAotICAgIHZvaWQgc2V0Rml4
ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQor
ICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdw
b3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIENvbG9yIGRl
YnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KQEAg
LTEwMCwxMyArOTcsNTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKTsKLSAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwor
CisgICAgdm9pZCBjb21taXRMYXllckNoYW5nZXMoKTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9y
ZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZCgpOwogICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgYm9vbCBz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3Q7CiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVk
VGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4qKTsKIAorICAgIC8v
IFRoaXMgc2V0IG9mIGZsYWdzIGhlbHAgdXMgZGVmZXIgd2hpY2ggcHJvcGVydGllcyBvZiB0aGUg
bGF5ZXIgaGF2ZSBiZWVuCisgICAgLy8gbW9kaWZpZWQgYnkgdGhlIGNvbXBvc2l0b3IsIHNvIHdl
IGNhbiBrbm93IHdoYXQgdG8gbG9vayBmb3IgaW4gdGhlIG5leHQgZmx1c2guCisgICAgZW51bSBD
aGFuZ2VNYXNrIHsKKyAgICAgICAgTm9DaGFuZ2VzID0gICAgICAgICAgICAgICAgIDAsCisKKyAg
ICAgICAgQ2hpbGRyZW5DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCAxKSwKKyAgICAgICAgTWFz
a0xheWVyQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyKSwKKyAgICAgICAgUmVwbGljYUxheWVy
Q2hhbmdlID0gICAgICAgICgxTCA8PCAzKSwKKworICAgICAgICBDb250ZW50Q2hhbmdlID0gICAg
ICAgICAgICAgKDFMIDw8IDQpLAorICAgICAgICBDb250ZW50c1JlY3RDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDUpLAorICAgICAgICBDb250ZW50c1Zpc2libGVDaGFuZ2UgPSAgICAgKDFMIDw8IDYp
LAorICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDcpLAorCisgICAg
ICAgIFBvc2l0aW9uQ2hhbmdlID0gICAgICAgICAgICAoMUwgPDwgOCksCisgICAgICAgIEFuY2hv
clBvaW50Q2hhbmdlID0gICAgICAgICAoMUwgPDwgOSksCisgICAgICAgIFNpemVDaGFuZ2UgPSAg
ICAgICAgICAgICAgICAoMUwgPDwgMTApLAorICAgICAgICBUcmFuc2Zvcm1DaGFuZ2UgPSAgICAg
ICAgICAgKDFMIDw8IDExKSwKKyAgICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgx
TCA8PCAxMiksCisgICAgICAgIFByZXNlcnZlczNEQ2hhbmdlID0gICAgICAgICAoMUwgPDwgMTMp
LAorCisgICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2UgPSAgICAgICAoMUwgPDwgMTQpLAorICAg
ICAgICBEcmF3c0NvbnRlbnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDE1KSwKKyAgICAgICAgT3Bh
Y2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxNiksCisgICAgICAgIEJhY2tmYWNlVmlz
aWJpbGl0eUNoYW5nZSA9ICAoMUwgPDwgMTcpLAorCisgICAgICAgIEJhY2tpbmdTdG9yZUNoYW5n
ZSA9ICAgICAgICAoMUwgPDwgMTgpLAorICAgICAgICBEaXNwbGF5Q2hhbmdlID0gICAgICAgICAg
ICAgKDFMIDw8IDE5KSwKKyAgICAgICAgQ29udGVudHNEaXNwbGF5Q2hhbmdlID0gICAgICgxTCA8
PCAyMCksCisgICAgICAgIEJhY2tncm91bmRDb2xvckNoYW5nZSA9ICAgICAoMUwgPDwgMjEpLAor
CisgICAgICAgIEFuaW1hdGlvbkNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMjIpLAorICAgICAg
ICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIzKSwKKworICAgICAgICBEZWJ1
Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKKyAgICAgICAgUmVwYWludENvdW50
Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSksCisKKyAgICAgICAgRml4ZWRUb1ZpZXdwb3JDaGFu
Z2UgPSAgICAgICgxTCA8PCAyNikKKyAgICB9OworICAgIHZvaWQgbm90aWZ5Q2hhbmdlKENoYW5n
ZU1hc2spOworCiAgICAgT3duUHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbV9sYXllcjsKICAgICBS
ZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsK
ICAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKQEAgLTEzMiw1
ICsxNzEsNyBAQCBpbmxpbmUgc3RhdGljIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiB0b0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcio+KGxheWVyKTsKIH0KIAorVGV4dHVyZU1hcHBl
ckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKik7CisKIH0KICNlbmRp
ZiAvLyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwCmluZGV4IDZiM2FhNjI0YTRiNjhjN2Q1YjJhZDRiNjVlNWRjNzk3ODIwZmFiOGIuLjQ4YmQ4
YzlkODJkMmMwMTY4ZDYyNzNhOTM4YThiYWM3Yzg5OGQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwCkBAIC0yMiw4ICsyMiw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAKLSNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgewpAQCAt
NDAsMTEgKzM4LDYgQEAgcHVibGljOgogICAgIHsgfQogfTsKIAotVGV4dHVyZU1hcHBlckxheWVy
KiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICByZXR1
cm4gbGF5ZXIgPyB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+bGF5ZXIoKSA6
IDA7Ci19Ci0KIGNvbnN0IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpy
b290TGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX2VmZmVjdFRhcmdldCkKQEAgLTM3NCw4MyAr
MzY3LDExIEBAIFRleHR1cmVNYXBwZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6dGV4dHVyZU1hcHBl
cigpIGNvbnN0CiAgICAgcmV0dXJuIHJvb3RMYXllcigpLT5tX3RleHR1cmVNYXBwZXI7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncmFwaGljc0xheWVyKQotewotICAg
IEFTU0VSVChncmFwaGljc0xheWVyKTsKLSAgICBpbnQgY2hhbmdlTWFzayA9IGdyYXBoaWNzTGF5
ZXItPmNoYW5nZU1hc2soKTsKLQotICAgIGlmIChjaGFuZ2VNYXNrID09IE5vQ2hhbmdlcyAmJiBn
cmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdlKQotICAgICAgICBzZXRDaGlsZHJl
bihncmFwaGljc0xheWVyLT5jaGlsZHJlbigpKTsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgTWFz
a0xheWVyQ2hhbmdlKSB7Ci0gICAgICAgaWYgKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0
b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSkpCi0gICAgICAg
ICAgIGxheWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5n
ZU1hc2sgJiBSZXBsaWNhTGF5ZXJDaGFuZ2UpIHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxh
eWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FM
YXllcigpKSkKLSAgICAgICAgICAgbGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9
Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkKLSAgICAgICAgbV9hbmlt
YXRpb25zID0gZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25zOwotCi0gICAgaWYgKGNoYW5nZU1h
c2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gZ3JhcGhp
Y3NMYXllci0+bV9iYWNraW5nU3RvcmUuZ2V0KCk7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIFJl
cGFpbnRDb3VudENoYW5nZSkKLSAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGlj
c0xheWVyLT5yZXBhaW50Q291bnQoKTsKLQotICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwotICAgIG1fc3RhdGUu
cmVwbGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGlj
YUxheWVyKCkpOwotICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsK
LSAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gZ3JhcGhpY3NMYXllci0+YW5jaG9yUG9pbnQoKTsK
LSAgICBtX3N0YXRlLnNpemUgPSBncmFwaGljc0xheWVyLT5zaXplKCk7Ci0gICAgbV9zdGF0ZS50
cmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT50cmFuc2Zvcm0oKTsKLSAgICBtX3N0YXRlLmNvbnRl
bnRzUmVjdCA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzUmVjdCgpOwotICAgIG1fc3RhdGUucHJl
c2VydmVzM0QgPSBncmFwaGljc0xheWVyLT5wcmVzZXJ2ZXMzRCgpOwotICAgIG1fc3RhdGUubWFz
a3NUb0JvdW5kcyA9IGdyYXBoaWNzTGF5ZXItPm1hc2tzVG9Cb3VuZHMoKTsKLSAgICBtX3N0YXRl
LmRyYXdzQ29udGVudCA9IGdyYXBoaWNzTGF5ZXItPmRyYXdzQ29udGVudCgpOwotICAgIG1fc3Rh
dGUuY29udGVudHNWaXNpYmxlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNBcmVWaXNpYmxlKCk7
Ci0gICAgbV9zdGF0ZS5jb250ZW50c09wYXF1ZSA9IGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzT3Bh
cXVlKCk7Ci0gICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBncmFwaGljc0xheWVyLT5i
YWNrZmFjZVZpc2liaWxpdHkoKTsKLSAgICBtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtID0gZ3Jh
cGhpY3NMYXllci0+Y2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICBtX3N0YXRlLm9wYWNpdHkgPSBn
cmFwaGljc0xheWVyLT5vcGFjaXR5KCk7Ci0gICAgbV9zdGF0ZS5zb2xpZENvbG9yID0gZ3JhcGhp
Y3NMYXllci0+c29saWRDb2xvcigpOwotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAo
Y2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKLSAgICAgICAgbV9zdGF0ZS5maWx0ZXJzID0gZ3Jh
cGhpY3NMYXllci0+ZmlsdGVycygpOwotI2VuZGlmCi0gICAgbV9maXhlZFRvVmlld3BvcnQgPSBn
cmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKLQotICAgIG1fc3RhdGUuc2hvd0RlYnVn
Qm9yZGVycyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7Ci0gICAgbV9z
dGF0ZS5kZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFw
aGljc0xheWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOwotICAgIG1fc3RhdGUuZGVidWdCb3JkZXJX
aWR0aCA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVn
Qm9yZGVyV2lkdGgoKTsKLSAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9IGdyYXBoaWNz
TGF5ZXItPmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7Ci0KLSAgICBtX2NvbnRlbnRzTGF5ZXIg
PSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0KLSAgICBtX2N1cnJlbnRUcmFuc2Zv
cm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zv
cm0uc2V0QW5jaG9yUG9pbnQobV9zdGF0ZS5hbmNob3JQb2ludCk7Ci0gICAgbV9jdXJyZW50VHJh
bnNmb3JtLnNldFNpemUobV9zdGF0ZS5zaXplKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0
RmxhdHRlbmluZyghbV9zdGF0ZS5wcmVzZXJ2ZXMzRCk7Ci0gICAgbV9jdXJyZW50VHJhbnNmb3Jt
LnNldExvY2FsVHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKLSAgICBtX2N1cnJlbnRUcmFu
c2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7Ci0K
LSAgICBzeW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRyZW4pCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBw
ZXJMYXllcio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgVGV4dHVyZU1hcHBlckxheWVyKiBjaGlsZCA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5ld0No
aWxkcmVuW2ldKTsKLSAgICAgICAgQVNTRVJUKGNoaWxkKTsKLSAgICAgICAgYWRkQ2hpbGQoY2hp
bGQpOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUo
KTsgKytpKQorICAgICAgICBhZGRDaGlsZChuZXdDaGlsZHJlbltpXSk7CiB9CiAKIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjphZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkTGF5ZXIp
CkBAIC00ODgsNiArNDA5LDEzNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cmVtb3ZlQWxs
Q2hpbGRyZW4oKQogICAgIH0KIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tM
YXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBpZiAobWFza0xheWVy
KQorICAgICAgICBtYXNrTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRl
Lm1hc2tMYXllciA9IG1hc2tMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFJlcGxpY2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlcGxpY2FMYXllcikKK3sKKyAgICBp
ZiAocmVwbGljYUxheWVyKQorICAgICAgICByZXBsaWNhTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0g
dGhpczsKKyAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQoreworICAgIG1fc3RhdGUucG9zID0gcG9zaXRpb247CisgICAgbV9jdXJyZW50VHJhbnNm
b3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3N0YXRl
LnNpemUgPSBzaXplOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKHNpemUpOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJiBhbmNob3JQb2ludCkKK3sKKyAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gYW5jaG9yUG9p
bnQ7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KTsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2Vy
dmVzM0QpCit7CisgICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOworICAgIG1f
Y3VycmVudFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0odHJhbnNmb3JtKTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBjaGlsZHJlblRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLmNoaWxk
cmVuVHJhbnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm07CisgICAgbV9jdXJyZW50VHJhbnNmb3Jt
LnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50c1Jl
Y3QpCit7CisgICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7Cit9CisKK3Zv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5k
cykKK3sKKyAgICBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50
KQoreworICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgY29udGVudHNWaXNp
YmxlKQoreworICAgIG1fc3RhdGUuY29udGVudHNWaXNpYmxlID0gY29udGVudHNWaXNpYmxlOwor
fQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBjb250
ZW50c09wYXF1ZSkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFx
dWU7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHko
Ym9vbCBiYWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxp
dHkgPSBiYWNrZmFjZVZpc2liaWxpdHk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgbV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0
eTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIG1fc3RhdGUuc29saWRDb2xvciA9IGNvbG9yOworfQorCisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3N0YXRlLmZpbHRlcnMg
PSBmaWx0ZXJzOworfQorI2VuZGlmCisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1
Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgZGVidWdCb3JkZXJD
b2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpCit7
CisgICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gc2hvd0RlYnVnQm9yZGVyczsKKyAgICBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSBkZWJ1Z0JvcmRlckNvbG9yOworICAgIG1fc3RhdGUu
ZGVidWdCb3JkZXJXaWR0aCA9IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgbV9zdGF0ZS5zaG93UmVw
YWludENvdW50ZXIgPSBzaG93UmVwYWludENvdW50ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBtX3N0YXRl
LnJlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIpCit7CisgICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1MYXllcjsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFu
aW1hdGlvbnMmIGFuaW1hdGlvbnMpCit7CisgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZp
eGVkVG9WaWV3cG9ydCkKK3sKKyAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9y
dDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShUZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUpCit7CisgICAgbV9iYWNraW5nU3RvcmUg
PSBiYWNraW5nU3RvcmU7Cit9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpkZXNjZW5kYW50
c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmgKaW5kZXggZDA1NjAwYzVhMjExYzJlMDE3Njc1OWZlNWIwMWVjNjBiNzZjOTQ3Zi4uZTBj
ODIzM2M4MmU1ZjdjNjFjZDk1Y2FmYzQxOTFkZTNhMjg2ZWZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
clRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKQEAgLTM0LDUxICszMywx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnM7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKLWNsYXNzIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXIgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
ZXh0dXJlTWFwcGVyTGF5ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIC8vIFRoaXMgc2V0IG9mIGZsYWdzIGhlbHAgdXMgZGVmZXIgd2hpY2ggcHJvcGVydGll
cyBvZiB0aGUgbGF5ZXIgaGF2ZSBiZWVuCi0gICAgLy8gbW9kaWZpZWQgYnkgdGhlIGNvbXBvc2l0
b3IsIHNvIHdlIGNhbiBrbm93IHdoYXQgdG8gbG9vayBmb3IgaW4gdGhlIG5leHQgZmx1c2guCi0g
ICAgZW51bSBDaGFuZ2VNYXNrIHsKLSAgICAgICAgTm9DaGFuZ2VzID0gICAgICAgICAgICAgICAg
IDAsCi0KLSAgICAgICAgQ2hpbGRyZW5DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCAxKSwKLSAg
ICAgICAgTWFza0xheWVyQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyKSwKLSAgICAgICAgUG9z
aXRpb25DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCAzKSwKLQotICAgICAgICBBbmNob3JQb2lu
dENoYW5nZSA9ICAgICAgICAgKDFMIDw8IDQpLAotICAgICAgICBTaXplQ2hhbmdlICA9ICAgICAg
ICAgICAgICAgKDFMIDw8IDUpLAotICAgICAgICBUcmFuc2Zvcm1DaGFuZ2UgPSAgICAgICAgICAg
KDFMIDw8IDYpLAotICAgICAgICBDb250ZW50Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDcp
LAotCi0gICAgICAgIENvbnRlbnRzT3JpZW50YXRpb25DaGFuZ2UgPSAoMUwgPDwgOSksCi0gICAg
ICAgIE9wYWNpdHlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTApLAotICAgICAgICBDb250
ZW50c1JlY3RDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDExKSwKLQotICAgICAgICBQcmVzZXJ2ZXMz
RENoYW5nZSA9ICAgICAgICAgKDFMIDw8IDEyKSwKLSAgICAgICAgTWFza3NUb0JvdW5kc0NoYW5n
ZSA9ICAgICAgICgxTCA8PCAxMyksCi0gICAgICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAgICAg
ICAoMUwgPDwgMTQpLAotICAgICAgICBDb250ZW50c1Zpc2libGVDaGFuZ2UgPSAgICAgKDFMIDw8
IDE1KSwKLSAgICAgICAgQ29udGVudHNPcGFxdWVDaGFuZ2UgPSAgICAgICgxTCA8PCAxNiksCi0K
LSAgICAgICAgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyksCi0gICAgICAg
IENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlID0gICAoMUwgPDwgMTgpLAotICAgICAgICBEaXNwbGF5
Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDE5KSwKLSAgICAgICAgQmFja2dyb3VuZENvbG9y
Q2hhbmdlID0gICAgICgxTCA8PCAyMCksCi0KLSAgICAgICAgUmVwbGljYUxheWVyQ2hhbmdlID0g
ICAgICAgICgxTCA8PCAyMSksCi0gICAgICAgIEFuaW1hdGlvbkNoYW5nZSA9ICAgICAgICAgICAo
MUwgPDwgMjIpLAotICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIz
KSwKLQotICAgICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKLSAg
ICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSksCi0KLSAgICAgICAg
QmFja2luZ1N0b3JlQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNikKLSAgICB9OwotCiAgICAgVGV4
dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fZWZm
ZWN0VGFyZ2V0KDApCkBAIC04NywxMyArNDYsNDIgQEAgcHVibGljOgogICAgICAgICAsIG1fY3Vy
cmVudE9wYWNpdHkoMSkKICAgICAgICAgLCBtX2NlbnRlclooMCkKICAgICAgICAgLCBtX3RleHR1
cmVNYXBwZXIoMCkKKyAgICAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKICAgICB7IH0K
IAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJMYXllcigpOwogCiAgICAgVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwotICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciopOwogICAgIHZvaWQg
c2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVy
ID0gdGV4bWFwOyB9CisKKyAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJl
TWFwcGVyTGF5ZXIqPiYpOworICAgIHZvaWQgc2V0TWFza0xheWVyKFRleHR1cmVNYXBwZXJMYXll
ciopOworICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFRleHR1cmVNYXBwZXJMYXllciopOworICAg
IHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9p
bnQzRCYpOworICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAgdm9pZCBzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldENoaWxkcmVu
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRDb250
ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29s
KTsKKyAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKKyAgICB2b2lkIHNldENvbnRlbnRz
VmlzaWJsZShib29sKTsKKyAgICB2b2lkIHNldENvbnRlbnRzT3BhcXVlKGJvb2wpOworICAgIHZv
aWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOworICAgIHZvaWQgc2V0T3BhY2l0eShmbG9h
dCk7CisgICAgdm9pZCBzZXRTb2xpZENvbG9yKGNvbnN0IENvbG9yJik7CisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7
CisjZW5kaWYKKyAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRlcnMs
IGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBi
b29sIHNob3dSZXBhaW50Q291bnRlcik7CisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50KTsK
KyAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqKTsK
KyAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsK
KyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKKyAgICB2b2lkIHNldEJhY2tpbmdT
dG9yZShUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKik7CisKKyAgICB2b2lkIHN5bmNBbmltYXRp
b25zKCk7CiAgICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygp
IGNvbnN0OwogCiAgICAgdm9pZCBwYWludCgpOwpAQCAtMTE1LDcgKzEwMyw2IEBAIHByaXZhdGU6
CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGE7IH0KICAgICBib29sIGlzQW5jZXN0b3JGaXhl
ZFRvVmlld3BvcnQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIqPiYpOwogICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVy
Kik7CiAgICAgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgdm9pZCByZW1vdmVBbGxDaGls
ZHJlbigpOwpAQCAtMTMyLDcgKzExOSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBPVkVSUklE
RSB7IG1fY3VycmVudEZpbHRlcnMgPSBmaWx0ZXJzOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc3lu
Y0FuaW1hdGlvbnMoKTsKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwogICAgIGVudW0gQ29u
dGVudHNMYXllckNvdW50IHsKICAgICAgICAgTm9MYXllcnNXaXRoQ29udGVudCwKQEAgLTIxNCw5
ICsyMDAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CiB9OwogCi0K
LVRleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciop
OwotCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
CmluZGV4IDA4ZGUzZTBkMGM3YTE3MGI4ZTM0YzliMDk1NjFiN2EwOTVlOGQ1YzAuLjhhM2EyNDli
ZTIwMGJlZjM1OTJmY2E4YzRiZDAwYjQ1M2FjM2JkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dEVmbC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVk
ZSAiUGFnZUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcAppbmRleCBkMTMwYTNmYjdiM2IxODkwNmFl
YTlkZjg5ODkzNGIxYTZmZmFmMDA2Li5jMjNkZTYyYTEwYTFjMTQxZTc0YTBkMzIyMDNlNDU5M2Jk
ZjgyMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVy
Q2xpZW50UXQuY3BwCmluZGV4IGVlODJiOTY1YTQ2MGM0MTFlNTFjYWQwODNkYzNiMDVjNGZiMDJj
ZjQuLjY2YjhkMGY5NmQ0YTcyNjZlMTZkYmRjYWUxYTliZjU4ZjMxOTg3MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50UXQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCiAj
aW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVy
LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185409</attachid>
            <date>2013-01-30 00:03:10 -0800</date>
            <delta_ts>2013-01-30 01:04:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130130165955.patch</filename>
            <type>text/plain</type>
            <size>62387</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMyZTdiNzdlNTdmY2Jh
NDIwMWE5ZDhhMzVmMWYyNWQzMDY3ZmI0NS4uYTYyYTZlY2MxNTA1NzJmZjIxNzhlYjM1NzBmNDMy
NjljNzQ2MWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMCBAQAorMjAxMy0wMS0yOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgICAgIFNldCBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgdG8g
bV9jaGFuZ2VNYXNrIGluc3RlYWQgb2YgQ29udGVudENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjph
ZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGls
ZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c09wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VG9NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnBy
ZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5n
ZXMpOgorICAgICAgICAgICAgRmx1c2ggcGVuZGluZyBjaGFuZ2VzIGludG8gVGV4dHVyZU1hcHBl
ckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFk
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuY2hvclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVz
M0QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlblRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tzVG9C
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250
ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVnVmlz
dWFscyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGFpbnRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1Zp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJM
YXllcik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9UZXh0dXJlTWFwcGVyTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6Om5vdGlmeUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRCZWxvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVwbGFjZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNr
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFByZXNlcnZlczNEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1Rv
Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRD
b250ZW50c1RvU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFp
bnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjp0
b1RleHR1cmVNYXBwZXJMYXllclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRB
bmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldEZpeGVkVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVw
bGljYUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRQcmVzZXJ2ZXMzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERyYXdzQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzT3Bh
cXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2ZhY2VW
aXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0T3Bh
Y2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaWx0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdWaXN1YWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UmVwYWludENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRGaXhlZFRvVmlld3BvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNraW5nU3RvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBlckxheWVyKToK
KworMjAxMy0wMS0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9h
bSBSb3NlbnRoYWwuCisKKyAgICAgICAgQWRkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRCYWNraW5nU3RvcmUoKSBzbyB0aGF0CisgICAgICAgIExheWVyVHJlZVJlbmRlcmVyIHNldHMg
YSBiYWNraW5nIHN0b3JlIHRvIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgorCisgICAgICAg
IFJlbW92ZSB0aHJlZSBtZXRob2RzIG9mIFRleHR1cmVNYXBwZXJMYXllciByZWxhdGVkIHRvIGEg
YmFja2luZyBzdG9yZQorICAgICAgICBiZWNhdXNlIHRoZXkgYXJlIG5vIGxvbmdlciB1c2VkLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXll
cik6CisKIDIwMTMtMDEtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIENoYW5nZSBEYXRhYmFzZUNvbnRleHQgbG9va3VwIHRvIGJlIHRocmVhZC1zYWZlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCmluZGV4IDAzMGQ4MjAzYThiODFhNmVjNWE3YzMwOTJmZWZjNzdhNmFiYzA0YzEu
LjAxMTBhODY1OGIwOTg5MDc3MzQzYmRjZjdmZGY5NTUyNDQ1MDVmZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMS0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFwXSBSZW1vdmUgR3JhcGhpY3NMYXll
ciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2Vu
dGhhbC4KKworICAgICAgICBJbmNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggdG8g
dXNlIHRvVGV4dHVyZU1hcHBlckxheWVyKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHA6CisKIDIwMTMtMDEtMjkgIEdyemVn
b3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gVW5pZmllZCB0ZXh0IGNoZWNrZXIgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggOGE2Y2QzODgwNjFhOGI2ZGQ4MTc2OWM2Y2IyMDU2MmFlNDJjZmZhNS4uODIyYzQ5NzI0Y2I2
ZWI1NzA0ODk0ZjU2YjY4NWNmMDUwMmZiMDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEzLTAxLTI5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVN
YXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAg
ICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0R0wuY3BwOgorCiAyMDEzLTAxLTI5ICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gTWlzc2luZyBidWls
ZCBmbGFncyB3aGVuIGJ1aWxkaW5nIHdpdGggSGFyZmJ1enoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNjA5
Zjk5MTEyZTYxZjJhN2E2YmNmYjM0M2NmMWU1Y2Y3ZGUzMzM0ZC4uOTRlZjI3ZDI4YjViNjA1NWM0
MmU1ZDUwZWNiOWQ2ZWNmYWE2YTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMy0wMS0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwor
ICAgICAgICBbVGV4TWFwXSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcw
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBJbmNs
dWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggdG8gdXNlIHRvVGV4dHVyZU1hcHBlckxh
eWVyKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdC5jcHA6CisKIDIwMTMtMDEtMjkgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5p
bmdAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1bV0sxXSBGaXggUU9iamVjdCBCcmlkZ2UgdGVz
dHMgZXhwZWN0ZWQgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJhMzIzOWQwOGIxM2ExZWUwNWUwYjNh
MjgzYWNiMGQxZGU5ZTRhNDUuLmI2OWYzOTkzNmIxZTBlODdjNmQ2MDE4OWMwYTUxMmUxMGIzNjc0
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNCBAQAogMjAxMy0wMS0yOSAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFwXSBSZW1vdmUg
R3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBJbnN0ZWFkIG9mIHF1ZXVpbmcgdGhlIHNldHRp
bmcgb2YgYmFja2luZyBzdG9yZXMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIsCisgICAgICAgIGFuZCB0
aGVuIHNldHRpbmcgdGhlbSBkaXJlY3RseSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIsIHdlIGFsbG93
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyJ3MgZXhpc3RpbmcgcXVldWluZyBt
ZWNoYW5pc20gdG8gaGFuZGxlIHRoYXQuCisgICAgICAgIEluc3RlYWQgb2YgYSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3JlcyBxdWV1ZSwgd2UgaGF2ZSBhIG1fYmFja2luZ1N0b3JlcworICAgICAg
ICBxdWV1ZSB3aGljaCBjYW4gYmUgYXBwbGllZCBtdWNoIG1vcmUgZWFzaWx5IHRvIHRoZSBsYXll
ciB0cmVlLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VH
TFJlc291cmNlcygpIGRvZXMgbm90IGNhbGwKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyOjpj
bGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKSBiZWNhdXNlCisgICAgICAgIFRleHR1cmVNYXBw
ZXJMYXllciB3aWxsIGJlIGRlc3RydWN0ZWQgc29vbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRv
TGF5ZXJTaXplKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRp
bGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVy
YXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlR0xSZXNv
dXJjZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmg6CisKKzIwMTMtMDEtMjkgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CisKICAgICAgICAgW1dLMl0gQ2FsbCBMYXllclRyZWVIb3N0OjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSB3aGVuIGEgZGV2aWNlIG9yIHBhZ2Ugc2NhbGUgZmFj
dG9yIGlzIGNoYW5nZWQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDc4MDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggODhiMGUwMDUyOTdmYTI5ZGE2OTJmNmIzOWU3OTNjMjY0YjcxOWFlMi4uOTE2Y2Zj
ZTk1Nzc4ZDE0YWU4MGUxNDMxOTA4ZTlhY2RiYTAyNDE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yOCw2ICsyOCwxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK1RleHR1cmVNYXBwZXJMYXllciogdG9UZXh0dXJlTWFwcGVyTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyID8gdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkgOiAwOworfQorCiBQYXNzT3duUHRyPEdyYXBo
aWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFj
dG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewogICAgIGlmICghZmFjdG9yeSkK
QEAgLTQ1LDcgKzUwLDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKICAgICA6IEdyYXBoaWNz
TGF5ZXIoY2xpZW50KQogICAgICwgbV9sYXllcihhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlckxh
eWVyKCkpKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKLSAgICAsIG1fY2hh
bmdlTWFzaygwKQorICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1fbmVlZHNE
aXNwbGF5KGZhbHNlKQogICAgICwgbV9oYXNPd25CYWNraW5nU3RvcmUodHJ1ZSkKICAgICAsIG1f
Zml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQpAQCAtNTUsNyArNjAsNyBAQCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZQogewogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3RpZnlD
aGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGFuZ2VNYXNrIGNoYW5nZU1hc2spCit2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpub3RpZnlDaGFuZ2UoQ2hhbmdlTWFzayBjaGFuZ2VN
YXNrKQogewogICAgIG1fY2hhbmdlTWFzayB8PSBjaGFuZ2VNYXNrOwogICAgIGlmICghY2xpZW50
KCkpCkBAIC04Niw3ICs5MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dE5lZWRzRGlzcGxheSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbmVlZHNEaXNwbGF5ID0g
dHJ1ZTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdl
KTsKKyAgICBub3RpZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVwYWludFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSk7CiB9CiAKQEAgLTk0LDcgKzk5LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKICovCiB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgp
CiB7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFpbnRSZWN0KGNv
bnRlbnRzUmVjdCgpKTsKIH0KIApAQCAtMTA4LDcgKzExMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVk
c0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdlKTsK
ICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIApAQCAtMTE3LDcgKzEyMiw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGls
ZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHsKICAgICBpZiAo
R3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pKSB7Ci0gICAgICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyNyw3ICsxMzIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGls
ZAogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkKEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNo
aWxkcmVuQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2UpOwogICAgIEdy
YXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKIH0KIApAQCAtMTM2LDE1ICsxNDEsMTUgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciog
bGF5ZXIpCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEF0SW5kZXgo
R3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFwaGljc0xheWVyOjph
ZGRDaGlsZEF0SW5kZXgobGF5ZXIsIGluZGV4KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVuQ2hh
bmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwg
R3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRB
Ym92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5
ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGxh
eWVyLCBzaWJsaW5nKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5DaGFuZ2UpOwogfQogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTE1Miw3ICsxNTcsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVy
LCBHcmFwaGljc0xheQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRC
ZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAg
ICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGxheWVyLCBzaWJsaW5nKTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CkBAIC0xNjAsNyArMTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRk
Q2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIGJvb2wgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGls
ZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnJl
cGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICAgICAgbm90aWZ5Q2hhbmdl
KENoaWxkcmVuQ2hhbmdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogdmFsdWUpCiAgICAgaWYgKHZhbHVlID09
IG1hc2tMYXllcigpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFz
a0xheWVyKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpNYXNr
TGF5ZXJDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShNYXNrTGF5ZXJDaGFuZ2UpOwogCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5LDcgKzE5NCw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5
ZXIqIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSByZXBsaWNhTGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKHZhbHVlKTsKLSAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBsaWNhTGF5ZXJDaGFuZ2UpOwor
ICAgIG5vdGlmeUNoYW5nZShSZXBsaWNhTGF5ZXJDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdy
YXBoaWNzTGF5ZXIuaCkKQEAgLTE5OSw3ICsyMDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiB2YWx1ZSkKICAgICBpZiAo
dmFsdWUgPT0gcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldFBvc2l0aW9uKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpQb3NpdGlvbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKFBvc2l0aW9uQ2hhbmdlKTsKIH0K
IAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yMDksNyArMjE0LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gYW5jaG9yUG9pbnQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHZhbHVlKTsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmNob3JQb2ludENoYW5nZSk7CisgICAgbm90
aWZ5Q2hhbmdlKEFuY2hvclBvaW50Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xh
eWVyLmgpCkBAIC0yMjIsNyArMjI3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQogICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFNpemUodmFsdWUpOwogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCkt
PnNldFNpemUodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlNp
emVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShTaXplQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0yMzMsNyArMjM4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3Jt
KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpUcmFuc2Zvcm1D
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShUcmFuc2Zvcm1DaGFuZ2UpOwogfQogCiAvKiBccmVp
bXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI0Myw3ICsyNDgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeAogICAgIGlmICh2YWx1ZSA9PSBjaGlsZHJlblRyYW5zZm9ybSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odmFsdWUpOwot
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNoaWxkcmVuVHJhbnNmb3JtQ2hh
bmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpOwogfQogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI1Myw3ICsyNTgsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHZhbHVlKQogICAgIGlm
ICh2YWx1ZSA9PSBwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0UHJlc2VydmVzM0QodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OlByZXNlcnZlczNEQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUHJlc2VydmVz
M0RDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTI2Myw3ICsy
NjgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRNYXNrc1RvQm91bmRz
KGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IG1hc2tzVG9Cb3VuZHMoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHModmFsdWUpOwotICAg
IG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok1hc2tzVG9Cb3VuZHNDaGFuZ2UpOwor
ICAgIG5vdGlmeUNoYW5nZShNYXNrc1RvQm91bmRzQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChH
cmFwaGljc0xheWVyLmgpCkBAIC0yNzIsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
ID09IGRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbm90aWZ5Q2hhbmdlKFRl
eHR1cmVNYXBwZXJMYXllcjo6RHJhd3NDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
RHJhd3NDb250ZW50Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQo
dmFsdWUpOwogCiAgICAgaWYgKHZhbHVlICYmIG1faGFzT3duQmFja2luZ1N0b3JlKQpAQCAtMjg1
LDcgKzI5MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VmlzaWJsZShib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c0FyZVZpc2li
bGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5
ZXI6OkNvbnRlbnRzVmlzaWJsZUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzVmlz
aWJsZUNoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKHZhbHVl
KTsKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRDb250ZW50
c1Zpc2libGUodmFsdWUpOwpAQCAtMjk3LDcgKzMwMiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlID09IGNvbnRlbnRzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c09wYXF1ZUNoYW5nZSk7CisgICAgbm90aWZ5
Q2hhbmdlKENvbnRlbnRzT3BhcXVlQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250
ZW50c09wYXF1ZSh2YWx1ZSk7CiB9CiAKQEAgLTMwOCw3ICszMTMsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2YWx1ZSkKICAg
ICBpZiAodmFsdWUgPT0gYmFja2ZhY2VWaXNpYmlsaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmFsdWUpOwotICAgIG5vdGlm
eUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7Cisg
ICAgbm90aWZ5Q2hhbmdlKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAKIC8qIFxyZWlt
cCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMzE4LDcgKzMyMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09
IG9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNp
dHkodmFsdWUpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6Ok9wYWNpdHlD
aGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShPcGFjaXR5Q2hhbmdlKTsKIH0KIAogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCkBAIC0zMjgsNyArMzMzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogICAg
IGlmICh2YWx1ZSA9PSBjb250ZW50c1JlY3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6Q29udGVudHNSZWN0Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29u
dGVudHNSZWN0Q2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzM3LDcgKzM0
Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xp
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zb2xp
ZENvbG9yID0gY29sb3I7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29u
dGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEJhY2tncm91bmRDb2xvckNoYW5nZSk7CiB9
CiAKIApAQCAtMzY2LDcgKzM3MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgfQogCiAgICAgc2V0Q29udGVu
dHNUb01lZGlhKG1fY29tcG9zaXRlZEltYWdlLmdldCgpKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQ29udGVu
dENoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsK
IH0KIApAQCAtMzc2LDcgKzM4MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICAgICAg
cmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01lZGlhKG1lZGlhKTsK
LSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50Q2hhbmdlKTsKKyAg
ICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7CiAgICAgbV9jb250ZW50c0xheWVyID0gbWVk
aWE7CiB9CiAKQEAgLTM4Niw3ICszOTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogICAgICAgICByZXR1cm47CiAKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Ci0gICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoRGVidWdWaXN1YWxzQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKQEAgLTM5NSwyNCArNDAw
LDM5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihib29sIHNob3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3Vh
bHNDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkKIHsKLSAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVk
KCk7Ci0gICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0
aGlzKTsKKyAgICBwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKKyAgICBjb21taXRMYXll
ckNoYW5nZXMoKTsKKyAgICBtX2xheWVyLT5zeW5jQW5pbWF0aW9ucygpOwogICAgIHVwZGF0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci0gICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5k
UmVwYWludENvdW50SWZOZWVkZWQoKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
cHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1faGFzT3duQmFja2lu
Z1N0b3JlKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3Jl
KCkpIHsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKKyAgICAgICAgbV9jaGFuZ2VN
YXNrIHw9IEJhY2tpbmdTdG9yZUNoYW5nZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1f
YmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2NoYW5nZU1hc2sg
fD0gQmFja2luZ1N0b3JlQ2hhbmdlOworICAgICAgICB9CisgICAgfQorCisgICAgdXBkYXRlRGVi
dWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKK30KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIEFTU0VS
VChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkp
CiAgICAgICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogCkBAIC00MjAsNyArNDQwLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBh
aW50Q291bnRJZk5lZWRlZCgpCiAgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVC
YWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5p
c0VtcHR5KCkpOwogICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9S
ZXBhaW50KSB7CiAgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotICAgICAgICBtX2No
YW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAg
ICAgIG1fY2hhbmdlTWFzayB8PSBSZXBhaW50Q291bnRDaGFuZ2U7CiAgICAgfQogfQogCkBAIC00
MjgsNyArNDQ4LDk5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiB7CiAgICAgbV9kZWJ1Z0Jv
cmRlckNvbG9yID0gY29sb3I7CiAgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Ci0gICAg
bV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOwor
ICAgIG1fY2hhbmdlTWFzayB8PSBEZWJ1Z1Zpc3VhbHNDaGFuZ2U7Cit9CisKK3N0YXRpYyB2b2lk
IHRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
IGxheWVycywgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+JiB0ZXhtYXBMYXllcnMpCit7Cisg
ICAgdGV4bWFwTGF5ZXJzLnJlc2VydmVDYXBhY2l0eShsYXllcnMuc2l6ZSgpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4bWFwTGF5
ZXJzLmFwcGVuZCh0b1RleHR1cmVNYXBwZXJMYXllcihsYXllcnNbaV0pKTsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrID09IE5vQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdlKSB7CisgICAgICAgIFZlY3RvcjxUZXh0dXJl
TWFwcGVyTGF5ZXIqPiB0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbjsKKyAgICAgICAgdG9UZXh0
dXJlTWFwcGVyTGF5ZXJWZWN0b3IoY2hpbGRyZW4oKSwgdGV4dHVyZU1hcHBlckxheWVyQ2hpbGRy
ZW4pOworICAgICAgICBtX2xheWVyLT5zZXRDaGlsZHJlbih0ZXh0dXJlTWFwcGVyTGF5ZXJDaGls
ZHJlbik7CisgICAgfQorCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIE1hc2tMYXllckNoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0TWFza0xheWVyKHRvVGV4dHVyZU1hcHBlckxheWVyKG1hc2tM
YXllcigpKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUmVwbGljYUxheWVyQ2hhbmdlKQor
ICAgICAgICBtX2xheWVyLT5zZXRSZXBsaWNhTGF5ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIocmVw
bGljYUxheWVyKCkpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBQb3NpdGlvbkNoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgQW5jaG9yUG9pbnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEFuY2hv
clBvaW50KGFuY2hvclBvaW50KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFNpemVDaGFu
Z2UpCisgICAgICAgIG1fbGF5ZXItPnNldFNpemUoc2l6ZSgpKTsKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBUcmFuc2Zvcm1DaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybSh0
cmFuc2Zvcm0oKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ2hpbGRyZW5UcmFuc2Zvcm1D
aGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJh
bnNmb3JtKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFByZXNlcnZlczNEQ2hhbmdlKQor
ICAgICAgICBtX2xheWVyLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKKworICAgIGlm
IChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1JlY3RDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNl
dENvbnRlbnRzUmVjdChjb250ZW50c1JlY3QoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
TWFza3NUb0JvdW5kc0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyht
YXNrc1RvQm91bmRzKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIERyYXdzQ29udGVudENo
YW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1Zpc2libGVDaGFuZ2UpCisgICAgICAg
IG1fbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShjb250ZW50c0FyZVZpc2libGUoKSk7CisKKyAg
ICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpCisgICAgICAgIG1fbGF5
ZXItPnNldENvbnRlbnRzT3BhcXVlKGNvbnRlbnRzT3BhcXVlKCkpOworCisgICAgaWYgKG1fY2hh
bmdlTWFzayAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0
QmFja2ZhY2VWaXNpYmlsaXR5KGJhY2tmYWNlVmlzaWJpbGl0eSgpKTsKKworICAgIGlmIChtX2No
YW5nZU1hc2sgJiBPcGFjaXR5Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9w
YWNpdHkoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQmFja2dyb3VuZENvbG9yQ2hhbmdl
KQorICAgICAgICBtX2xheWVyLT5zZXRTb2xpZENvbG9yKHNvbGlkQ29sb3IoKSk7CisKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworI2VuZGlmCisKKyAgICBp
ZiAobV9jaGFuZ2VNYXNrICYgQmFja2luZ1N0b3JlQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5z
ZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAm
IERlYnVnVmlzdWFsc0NoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdWaXN1YWxzKGlz
U2hvd2luZ0RlYnVnQm9yZGVyKCksIGRlYnVnQm9yZGVyQ29sb3IoKSwgZGVidWdCb3JkZXJXaWR0
aCgpLCBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sg
JiBSZXBhaW50Q291bnRDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldFJlcGFpbnRDb3VudChy
ZXBhaW50Q291bnQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29udGVudENoYW5nZSkK
KyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyKCkpOworCisg
ICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZp
eGVkVG9WaWV3cG9yQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQo
Zml4ZWRUb1ZpZXdwb3J0KCkpOworCisgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQog
CiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTQ0OCwyOSArNTYwLDIwIEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIGNoaWxkcmVuKClbaV0tPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZShyZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCkKLXsKLSAgICBtX2NoYW5nZU1hc2sgPSAwOwotfQotCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
CiB7CiAgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwotICAg
IHByZXBhcmVCYWNraW5nU3RvcmUoKTsKLSAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9i
YWNraW5nU3RvcmUpOwotfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVw
YXJlQmFja2luZ1N0b3JlKCkKLXsKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyID0g
bV9sYXllci0+dGV4dHVyZU1hcHBlcigpOwogICAgIGlmICghdGV4dHVyZU1hcHBlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpIHsKLSAgICAg
ICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUKCFtX2JhY2tpbmdTdG9y
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
IAogICAgIEludFJlY3QgZGlydHlSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBtX3NpemUpKTsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQpAQCAt
NDc4LDkgKzU4MSw2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVC
YWNraW5nU3RvcmUoKQogICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7Ci0KICNpZiBQTEFURk9S
TShRVCkKICAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAjZW5kaWYKQEAgLTUxMSw3ICs2MTEsNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdAogICAgICAgICBsaXN0c01hdGNoID0gdmFsaWRhdGVU
cmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlTGlzdCwgaGFzQmlnUm90YXRpb24pID49IDA7CiAKICAg
ICBtX2FuaW1hdGlvbnMuYWRkKEdyYXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJhbWVzTmFtZSwg
dmFsdWVMaXN0LCBib3hTaXplLCBhbmltLCBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0
LCBsaXN0c01hdGNoKSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5p
bWF0aW9uQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKICAgICBt
X2FuaW1hdGlvblN0YXJ0ZWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC01MTksNyArNjE5LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXll
ckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9u
czsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpBbmltYXRpb25DaGFuZ2Up
OworICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25DaGFuZ2UpOwogfQogCiAKQEAgLTU0MSwxNSAr
NjQxLDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFuaW1hdGlvblN0YXJ0
ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUCiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQogYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkZpbHRlckNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKEZpbHRlckNoYW5nZSk7CiAg
ICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAjZW5kaWYK
IAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKFBhc3NS
ZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQoreworICAgIEFT
U0VSVCghbV9oYXNPd25CYWNraW5nU3RvcmUpOworICAgIGlmIChtX2JhY2tpbmdTdG9yZSA9PSBi
YWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZ1N0b3JlID0gYmFj
a2luZ1N0b3JlOworICAgIG5vdGlmeUNoYW5nZShCYWNraW5nU3RvcmVDaGFuZ2UpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBm
aXhlZCkKK3sKKyAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gZml4ZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7CisgICAgbm90aWZ5Q2hhbmdl
KEZpeGVkVG9WaWV3cG9yQ2hhbmdlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCiB7CiAgICAgbV9yZXBhaW50
Q291bnQgPSByZXBhaW50Q291bnQ7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6UmVwYWludENvdW50Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwYWludENvdW50Q2hh
bmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRl
eCA0OWI1MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBiZGVlNDNkY2I4NmQ0Li44Zjc1ZjVmODY0M2Uz
OWYzM2Y0NWI2YTQxMzRmNjY2ZGIyZGM4ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaApAQCAtMjksOCArMjksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsK
LSAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwotCiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwog
ICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CkBAIC03Myw3ICs3MSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudHNMYXllcjsgfQogCi0gICAgdm9pZCBub3RpZnlDaGFuZ2UoVGV4dHVyZU1h
cHBlckxheWVyOjpDaGFuZ2VNYXNrKTsKICAgICBpbmxpbmUgaW50IGNoYW5nZU1hc2soKSBjb25z
dCB7IHJldHVybiBtX2NoYW5nZU1hc2s7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKQEAgLTg5LDggKzg2LDkgQEAgcHVibGljOgog
CiAgICAgLy8gRklYTUU6IEl0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciByZW1vdmluZyBkZXBlbmRl
bmN5IG9mIExheWVyVHJlZVJlbmRlcmVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgog
ICAgIHZvaWQgc2V0SGFzT3duQmFja2luZ1N0b3JlKGJvb2wgYikgeyBtX2hhc093bkJhY2tpbmdT
dG9yZSA9IGI7IH0KKyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmU+KTsKIAotICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wg
Zml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQorICAgIHZvaWQgc2V0Rml4ZWRU
b1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1
cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KQEAgLTk5LDEzICs5Nyw1NSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwot
ICAgIHZvaWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVEZWJ1
Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CisKKyAgICB2b2lkIGNvbW1pdExheWVy
Q2hhbmdlcygpOworICAgIHZvaWQgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsK
ICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBwcmVwYXJl
QmFja2luZ1N0b3JlKCk7CisgICAgdm9pZCBwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsK
ICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIGFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiop
OwogCisgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0
aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KKyAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9z
aXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4K
KyAgICBlbnVtIENoYW5nZU1hc2sgeworICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAg
ICAgMCwKKworICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAor
ICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAorICAgICAgICBS
ZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDMpLAorCisgICAgICAgIENvbnRlbnRD
aGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNCksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5n
ZSA9ICAgICAgICAoMUwgPDwgNSksCisgICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAg
ICAoMUwgPDwgNiksCisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlID0gICAgICAoMUwgPDwg
NyksCisKKyAgICAgICAgUG9zaXRpb25DaGFuZ2UgPSAgICAgICAgICAgICgxTCA8PCA4KSwKKyAg
ICAgICAgQW5jaG9yUG9pbnRDaGFuZ2UgPSAgICAgICAgICgxTCA8PCA5KSwKKyAgICAgICAgU2l6
ZUNoYW5nZSA9ICAgICAgICAgICAgICAgICgxTCA8PCAxMCksCisgICAgICAgIFRyYW5zZm9ybUNo
YW5nZSA9ICAgICAgICAgICAoMUwgPDwgMTEpLAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNo
YW5nZSA9ICAgKDFMIDw8IDEyKSwKKyAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2UgPSAgICAgICAg
ICgxTCA8PCAxMyksCisKKyAgICAgICAgTWFza3NUb0JvdW5kc0NoYW5nZSA9ICAgICAgICgxTCA8
PCAxNCksCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTUpLAor
ICAgICAgICBPcGFjaXR5Q2hhbmdlID0gICAgICAgICAgICAgKDFMIDw8IDE2KSwKKyAgICAgICAg
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlID0gICgxTCA8PCAxNyksCisKKyAgICAgICAgQmFja2lu
Z1N0b3JlQ2hhbmdlID0gICAgICAgICgxTCA8PCAxOCksCisgICAgICAgIERpc3BsYXlDaGFuZ2Ug
PSAgICAgICAgICAgICAoMUwgPDwgMTkpLAorICAgICAgICBDb250ZW50c0Rpc3BsYXlDaGFuZ2Ug
PSAgICAgKDFMIDw8IDIwKSwKKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlID0gICAgICgx
TCA8PCAyMSksCisKKyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAy
MiksCisgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisg
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKKworICAgICAgICBGaXhlZFRv
Vmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8IDI2KQorICAgIH07CisgICAgdm9pZCBub3RpZnlD
aGFuZ2UoQ2hhbmdlTWFzayk7CisKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2xh
eWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9z
aXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
OwpAQCAtMTMxLDUgKzE3MSw3IEBAIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKj4obGF5ZXIpOwogfQogCitU
ZXh0dXJlTWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqKTsK
KwogfQogI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggZjk0YzE2ZDEwOTFjNzhmMGU2ZTM4MmI5MGMzYjZmOWVmMDZk
MDNkMy4uZWRmZTMyMDc4ZDhmMjFhYjc4OGE0YWNmZTdkNWMyYmNmMWY0MjkwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIyLDggKzIyLDYgQEAKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyB7CkBAIC00MCwxMSArMzgsNiBAQCBwdWJsaWM6CiAgICAgeyB9CiB9OwogCi1UZXh0dXJl
TWFwcGVyTGF5ZXIqIHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQot
ewotICAgIHJldHVybiBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIp
LT5sYXllcigpIDogMDsKLX0KLQogY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWZmZWN0VGFyZ2V0KQpA
QCAtNTQsMTYgKzQ3LDYgQEAgY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKQotewotICAgIG1f
YmFja2luZ1N0b3JlLmNsZWFyKCk7Ci0gICAgbV9jb250ZW50c0xheWVyID0gMDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fY2hp
bGRyZW5baV0tPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotICAgIGlmIChtX3N0YXRl
Lm1hc2tMYXllcikKLSAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jl
c1JlY3Vyc2l2ZSgpOwotfQotCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5z
Zm9ybXNSZWN1cnNpdmUoKQogewogICAgIGlmIChtX3N0YXRlLnNpemUuaXNFbXB0eSgpICYmIG1f
c3RhdGUubWFza3NUb0JvdW5kcykKQEAgLTQwMiw5MCArMzg1LDExIEBAIFRleHR1cmVNYXBwZXIq
IFRleHR1cmVNYXBwZXJMYXllcjo6dGV4dHVyZU1hcHBlcigpIGNvbnN0CiAgICAgcmV0dXJuIHJv
b3RMYXllcigpLT5tX3RleHR1cmVNYXBwZXI7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKiBncmFwaGljc0xheWVyKQotewotICAgIEFTU0VSVChncmFwaGljc0xheWVyKTsK
LSAgICBpbnQgY2hhbmdlTWFzayA9IGdyYXBoaWNzTGF5ZXItPmNoYW5nZU1hc2soKTsKLQotICAg
IGlmIChjaGFuZ2VNYXNrID09IE5vQ2hhbmdlcyAmJiBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlv
bnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIENo
aWxkcmVuQ2hhbmdlKQotICAgICAgICBzZXRDaGlsZHJlbihncmFwaGljc0xheWVyLT5jaGlsZHJl
bigpKTsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgTWFza0xheWVyQ2hhbmdlKSB7Ci0gICAgICAg
aWYgKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFw
aGljc0xheWVyLT5tYXNrTGF5ZXIoKSkpCi0gICAgICAgICAgIGxheWVyLT5tX2VmZmVjdFRhcmdl
dCA9IHRoaXM7Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBsaWNhTGF5ZXJDaGFu
Z2UpIHsKLSAgICAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1h
cHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKSkKLSAgICAgICAgICAgbGF5
ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKLSAgICB9Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAm
IEFuaW1hdGlvbkNoYW5nZSkKLSAgICAgICAgbV9hbmltYXRpb25zID0gZ3JhcGhpY3NMYXllci0+
bV9hbmltYXRpb25zOwotICAgIAotICAgIGlmIChjaGFuZ2VNYXNrICYgVHJhbnNmb3JtQ2hhbmdl
KQotICAgICAgICBtX3Nob3VsZFVwZGF0ZUN1cnJlbnRUcmFuc2Zvcm1Gcm9tR3JhcGhpY3NMYXll
ciA9IHRydWU7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIE9wYWNpdHlDaGFuZ2UpCi0gICAgICAg
IG1fc2hvdWxkVXBkYXRlQ3VycmVudE9wYWNpdHlGcm9tR3JhcGhpY3NMYXllciA9IHRydWU7Ci0K
LSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBGaWx0ZXJDaGFu
Z2UpCi0gICAgICAgIG1fc2hvdWxkVXBkYXRlQ3VycmVudEZpbHRlcnNGcm9tR3JhcGhpY3NMYXll
ciA9IHRydWU7Ci0jZW5kaWYKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hh
bmdlKQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFp
bnRDb3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXll
cihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIg
PSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSk7Ci0g
ICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwotICAgIG1fc3RhdGUu
YW5jaG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNob3JQb2ludCgpOwotICAgIG1fc3RhdGUu
c2l6ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IGdy
YXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUuY29udGVudHNSZWN0ID0gZ3Jh
cGhpY3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IGdy
YXBoaWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgbV9zdGF0ZS5tYXNrc1RvQm91bmRzID0g
Z3JhcGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwotICAgIG1fc3RhdGUuZHJhd3NDb250ZW50
ID0gZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7Ci0gICAgbV9zdGF0ZS5jb250ZW50c1Zp
c2libGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0FyZVZpc2libGUoKTsKLSAgICBtX3N0YXRl
LmNvbnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKTsKLSAgICBt
X3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBoaWNzTGF5ZXItPmJhY2tmYWNlVmlzaWJp
bGl0eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT5j
aGlsZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUub3BhY2l0eSA9IGdyYXBoaWNzTGF5ZXIt
Pm9wYWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBncmFwaGljc0xheWVyLT5zb2xp
ZENvbG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmIChjaGFuZ2VNYXNrICYg
RmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGljc0xheWVyLT5m
aWx0ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXIt
PmZpeGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gZ3Jh
cGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKLSAgICBtX3N0YXRlLmRlYnVnQm9y
ZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5k
ZWJ1Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gdG9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJXaWR0aCgp
OwotICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NMYXllci0+aXNTaG93
aW5nUmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNzTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlv
bihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRBbmNob3JQ
b2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0U2l6
ZShtX3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFt
X3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5U
cmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7Ci0KLSAgICBzeW5jQW5pbWF0aW9u
cygpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRyZW4pCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+JiBuZXdDaGls
ZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlckxh
eWVyKiBjaGlsZCA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5ld0NoaWxkcmVuW2ldKTsKLSAgICAg
ICAgQVNTRVJUKGNoaWxkKTsKLSAgICAgICAgYWRkQ2hpbGQoY2hpbGQpOwotICAgIH0KKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBh
ZGRDaGlsZChuZXdDaGlsZHJlbltpXSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjph
ZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkTGF5ZXIpCkBAIC01MjMsNiArNDI3LDEz
NSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQogICAgIH0K
IH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVy
TGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBpZiAobWFza0xheWVyKQorICAgICAgICBtYXNrTGF5
ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRlLm1hc2tMYXllciA9IG1hc2tM
YXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGxpY2FMYXllcihUZXh0
dXJlTWFwcGVyTGF5ZXIqIHJlcGxpY2FMYXllcikKK3sKKyAgICBpZiAocmVwbGljYUxheWVyKQor
ICAgICAgICByZXBsaWNhTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRl
LnJlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fc3Rh
dGUucG9zID0gcG9zaXRpb247CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFk
anVzdGVkUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3N0YXRlLnNpemUgPSBzaXplOworICAg
IG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKHNpemUpOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCkK
K3sKKyAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7CisgICAgbV9jdXJyZW50
VHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KTsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit7CisgICAgbV9z
dGF0ZS5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5z
ZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sK
KyAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zv
cm0uc2V0TG9jYWxUcmFuc2Zvcm0odHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBj
aGlsZHJlblRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtID0gY2hp
bGRyZW5UcmFuc2Zvcm07CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNm
b3JtKGNoaWxkcmVuVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QpCit7CisgICAgbV9zdGF0
ZS5jb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKK3sKKyAgICBtX3N0YXRl
Lm1hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIG1fc3RhdGUu
ZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgY29udGVudHNWaXNpYmxlKQoreworICAgIG1fc3Rh
dGUuY29udGVudHNWaXNpYmxlID0gY29udGVudHNWaXNpYmxlOworfQorCit2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBjb250ZW50c09wYXF1ZSkKK3sKKyAg
ICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiYWNrZmFjZVZpc2li
aWxpdHkpCit7CisgICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBiYWNrZmFjZVZpc2li
aWxpdHk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpCit7CisgICAgbV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0eTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IG1fc3RhdGUuc29saWRDb2xvciA9IGNvbG9yOworfQorCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3N0YXRlLmZpbHRlcnMgPSBmaWx0ZXJzOworfQorI2Vu
ZGlmCisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93
RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdC
b3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpCit7CisgICAgbV9zdGF0ZS5zaG93
RGVidWdCb3JkZXJzID0gc2hvd0RlYnVnQm9yZGVyczsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVy
Q29sb3IgPSBkZWJ1Z0JvcmRlckNvbG9yOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9
IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBzaG93
UmVwYWludENvdW50ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRSZXBhaW50
Q291bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IHJl
cGFpbnRDb3VudDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRzTGF5
ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCit7CisgICAgbV9j
b250ZW50c0xheWVyID0gcGxhdGZvcm1MYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlv
bnMpCit7CisgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9WaWV3cG9ydCkKK3sK
KyAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tp
bmdTdG9yZTsKK30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxm
SGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApp
bmRleCBlNWJlMmIxYWJkNWNkNmZjODljYWUyYjU2NTkyMDEyNDVmNzk1ZjgzLi43ZjNmMmM2ZTQx
MDJjMjJhZWViNjEzYTJiNzhkNDdjZDE1YzdhMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtMzQsNDkgKzMzLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uczsKIGNs
YXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVN
YXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
Ly8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRo
ZSBsYXllciBoYXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28g
d2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KLSAgICBlbnVt
IENoYW5nZU1hc2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAgICAgICAgMCwKLQot
ICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEpLAotICAgICAgICBN
YXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAotICAgICAgICBQb3NpdGlvbkNo
YW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAgIEFuY2hvclBvaW50Q2hhbmdl
ID0gICAgICAgICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFuZ2UgID0gICAgICAgICAgICAg
ICAoMUwgPDwgNSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwg
NiksCi0gICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgNyksCi0KLSAg
ICAgICAgQ29udGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwKLSAgICAgICAgT3Bh
Y2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0gICAgICAgIENvbnRlbnRzUmVj
dENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAgIFByZXNlcnZlczNEQ2hhbmdl
ID0gICAgICAgICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlID0gICAg
ICAgKDFMIDw8IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0gICAgICAgICgxTCA8
PCAxNCksCi0gICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAoMUwgPDwgMTUpLAot
ICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2KSwKLQotICAgICAg
ICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAgICAgICAgQ2hpbGRy
ZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAgICAgIERpc3BsYXlDaGFuZ2Ug
PSAgICAgICAgICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2Ug
PSAgICAgKDFMIDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDIxKSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAy
MiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAotCi0g
ICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAotICAgICAgICBS
ZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQotICAgIH07Ci0KICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZl
Y3RUYXJnZXQoMCkKQEAgLTg5LDIxICs1MCw0NiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zaG91
bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21HcmFwaGljc0xheWVyKHRydWUpCiAjZW5kaWYKICAg
ICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKKyAgICAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChm
YWxzZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJMYXllcigpOwogCiAg
ICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwotICAgIHZvaWQgZmx1c2hD
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ciopOwogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsg
bV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CisKKyAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0
IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYpOworICAgIHZvaWQgc2V0TWFza0xheWVyKFRl
eHR1cmVNYXBwZXJMYXllciopOworICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFRleHR1cmVNYXBw
ZXJMYXllciopOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAg
IHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldEFuY2hvclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7Cisg
ICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2
b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Cisg
ICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgc2V0TWFz
a3NUb0JvdW5kcyhib29sKTsKKyAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKKyAgICB2
b2lkIHNldENvbnRlbnRzVmlzaWJsZShib29sKTsKKyAgICB2b2lkIHNldENvbnRlbnRzT3BhcXVl
KGJvb2wpOworICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOworICAgIHZvaWQg
c2V0T3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRTb2xpZENvbG9yKGNvbnN0IENvbG9yJik7
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJik7CisjZW5kaWYKKyAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29sIHNo
b3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1
Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcik7CisgICAgdm9pZCBzZXRSZXBh
aW50Q291bnQoaW50KTsKKyAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIqKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXll
ckFuaW1hdGlvbnMmKTsKKyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKKyAgICB2
b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+
KTsKKworICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29sIGRlc2NlbmRhbnRzT3JT
ZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50KCk7CiAK
LSAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSkgeyBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsgfQot
ICAgIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKCkg
eyByZXR1cm4gbV9iYWNraW5nU3RvcmU7IH0KLSAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jlc1Jl
Y3Vyc2l2ZSgpOwotCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29u
c3QgRmxvYXRTaXplJik7CiAKICAgICB2b2lkIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7
CkBAIC0xMjEsNyArMTA3LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0
YTsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0OwogCi0gICAg
dm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdm9p
ZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJl
bnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CkBAIC0xMzgsNyArMTIzLDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdm9pZCBzeW5jQW5pbWF0aW9u
cygpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgZW51bSBDb250ZW50c0xheWVy
Q291bnQgewogICAgICAgICBOb0xheWVyc1dpdGhDb250ZW50LApAQCAtMjI2LDkgKzIxMCw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKIH07CiAKLQotVGV4dHVyZU1h
cHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKik7Ci0KIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKaW5kZXggMDhk
ZTNlMGQwYzdhMTcwYjhlMzRjOWIwOTU2MWI3YTA5NWU4ZDVjMC4uOGEzYTI0OWJlMjAwYmVmMzU5
MmZjYThjNGJkMDBiNDUzYWMzYmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0RWZsLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0R0wuY3BwCmluZGV4IGQxMzBhM2ZiN2IzYjE4OTA2YWVhOWRmODk4OTM0
YjFhNmZmYWYwMDYuLmMyM2RlNjJhMTBhMWMxNDFlNzRhMGQzMjIwM2U0NTkzYmRmODIwNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5j
cHAKaW5kZXggZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNmNC4uNjZiOGQw
Zjk2ZDRhNzI2NmUxNmRiZGNhZTFhOWJmNThmMzE5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJR
V2ViUGFnZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCA4MDVhODczNmU5NDJiY2YzZTQzZWI0
OTM2NTVlMGVlMDMzOTNhOGRkLi5kZmYxNmFjZjFiNTMwZjg2NTJmMjNjNTYyMmMxYzdhMTdhNjRi
ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0zODYsNyArMzg2
LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXll
cklEIGxheWVySUQpCiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGxheWVyID0gbV9sYXllcnMu
dGFrZShsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwogCi0gICAgbV9wZW5kaW5nU3luY0Jh
Y2tpbmdTdG9yZXMucmVtb3ZlKHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyLmdldCgpKSk7Cisg
ICAgbV9iYWNraW5nU3RvcmVzLnJlbW92ZShsYXllci5nZXQoKSk7CiAgICAgbV9maXhlZExheWVy
cy5yZW1vdmUobGF5ZXJJRCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJm
YWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXJJRCk7CkBAIC00MDUsMTggKzQwNSw2IEBAIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBs
YXllcklEKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChsYXllcik7CiB9CiAKLUNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdyYXBo
aWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
ciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXIpOwotICAgIEFTU0VSVChsYXll
cik7Ci0gICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19j
YXN0PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKj4obGF5ZXItPmJhY2tpbmdTdG9yZSgpLmdldCgp
KTsKLQotICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tp
bmdTdG9yZXMuZW5kKCkpCi0gICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZS5nZXQoKTsK
LSAgICByZXR1cm4gYmFja2luZ1N0b3JlOwotfQotCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpw
cmVwYXJlQ29udGVudEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQog
ewogICAgIGlmICghbGF5ZXJTaG91bGRIYXZlQmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKSB7
CkBAIC00MjksNTUgKzQxNywyNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwcmVwYXJlQ29u
dGVudEJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogCiB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVy
KiBncmFwaGljc0xheWVyKQogewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1Rl
eHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0g
ICAgLy8gTWFrZSBzdXJlIHRoZSBsYXllciBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgYSBiYWNraW5n
IHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCi0gICAgQmFja2luZ1N0b3JlTWFwOjppdGVy
YXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIpOwotICAgIGlm
IChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgewotICAgICAgICBpZiAo
IWl0LT52YWx1ZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIHJlbW92YWws
IGNhbmNlbCBpdC4KLSAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92
ZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcg
YWRkaXRpb24uCisgICAgaWYgKG1fYmFja2luZ1N0b3Jlcy5jb250YWlucyhncmFwaGljc0xheWVy
KSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobGF5ZXItPmJhY2tpbmdTdG9yZSgp
KQotICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3Rv
cmUgKGFuZCBubyBwZW5kaW5nIHJlbW92YWwpLgogCiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgp
KTsKLQogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwot
ICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsK
LSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7
CisgICAgbV9iYWNraW5nU3RvcmVzLmFkZChncmFwaGljc0xheWVyLCBiYWNraW5nU3RvcmUpOwor
ICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJhY2tp
bmdTdG9yZShiYWNraW5nU3RvcmUpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1v
dmVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewot
ICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFw
aGljc0xheWVyKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGxh
eW91dCBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBvciBwZW5kaW5nKS4K
LSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdT
dG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLmVuZCgpKSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIC8vIFRo
ZXJlIGlzIGEgcGVuZGluZyBhZGRpdGlvbiwgY2FuY2VsIGl0LgotICAgICAgICAgICAgbV9wZW5k
aW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKLSAgICAgICAgfQotICAgICAgICAvLyBU
aGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyByZW1vdmFsLgorICAgIFJlZlB0cjxDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVzLnRha2UoZ3JhcGhp
Y3NMYXllcik7CisgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKLSAgICBpZiAoIWxheWVyLT5iYWNraW5nU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBU
aGUgbGF5ZXIgaGFzIG5vIGJhY2tpbmcgc3RvcmUgKGFuZCBubyBwZW5kaW5nIGFkZGl0aW9uKS4K
LQotICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIp
KTsKLSAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5hZGQobGF5ZXIsIDApOworICAgIHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPnNldEJhY2tpbmdTdG9y
ZSgwKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXpl
VG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGdyYXBoaWNz
TGF5ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3Jl
ID0gbV9iYWNraW5nU3RvcmVzLmdldChncmFwaGljc0xheWVyKTsKICAgICBBU1NFUlQoYmFja2lu
Z1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgp
KTsKIH0KQEAgLTQ4NSw3ICs0NDUsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZXNldEJh
Y2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljcwogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwg
dWludDMyX3QgdGlsZUlELCBmbG9hdCBzY2FsZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQobGF5ZXIp
OwogICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+Y3JlYXRlVGls
ZSh0aWxlSUQsIHNjYWxlKTsKICAgICByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShs
YXllcik7CkBAIC00OTQsNyArNDU0LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRl
VGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELAogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwg
dWludDMyX3QgdGlsZUlEKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlE
KGxheWVySUQpOwotICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBn
ZXRCYWNraW5nU3RvcmUobGF5ZXIpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlID0gbV9iYWNraW5nU3RvcmVzLmdldChsYXllcik7CiAgICAgaWYgKCFi
YWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTA2LDcgKzQ2Niw3IEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQs
IHVpbnQzMl90IHRpbGVJRCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUoQ29v
cmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgVGlsZVVwZGF0
ZSYgdXBkYXRlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxheWVy
SUQpOwotICAgIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0g
Z2V0QmFja2luZ1N0b3JlKGxheWVyKTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQobGF5ZXIpOwogICAgIEFTU0VS
VChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSh0aWxlSUQsIHVw
ZGF0ZS5zb3VyY2VSZWN0LCB1cGRhdGUudGlsZVJlY3QsIHVwZGF0ZS5zdXJmYWNlLCB1cGRhdGUu
b2Zmc2V0KTsKICAgICByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShsYXllcik7CkBA
IC01NzcsMTUgKzUzNyw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdC
YWNraW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICAgICAgKCppdCktPmNvbW1pdFRpbGVPcGVyYXRp
b25zKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVu
ZGluZ0J1ZmZlcnMuY2xlYXIoKTsKLQotICAgIHsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjpp
dGVyYXRvciBlbmQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKTsKLSAgICAgICAg
QmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVz
LmJlZ2luKCk7Ci0gICAgICAgIGZvciAoO2l0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGl0
LT5rZXktPnNldEJhY2tpbmdTdG9yZShpdC0+dmFsdWUpOwotCi0gICAgICAgIG1fcGVuZGluZ1N5
bmNCYWNraW5nU3RvcmVzLmNsZWFyKCk7Ci0gICAgfQogfQogCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpmbHVzaExheWVyQ2hhbmdlcygpCkBAIC02NDUsMTIgKzU5Niw4IEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OnN5bmNSZW1vdGVDb250ZW50KCkKIAogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cHVyZ2VHTFJlc291cmNlcygpCiB7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9
IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLQotICAgIGlmIChsYXllcikKLSAg
ICAgICAgbGF5ZXItPmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpOwotCiAgICAgbV9pbWFn
ZUJhY2tpbmdzLmNsZWFyKCk7CisgICAgbV9yZWxlYXNlZEltYWdlQmFja2luZ3MuY2xlYXIoKTsK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNs
ZWFyKCk7CiAjZW5kaWYKQEAgLTY2MCw3ICs2MDcsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpwdXJnZUdMUmVzb3VyY2VzKCkKICAgICBtX2xheWVycy5jbGVhcigpOwogICAgIG1fZml4ZWRM
YXllcnMuY2xlYXIoKTsKICAgICBtX3RleHR1cmVNYXBwZXIuY2xlYXIoKTsKLSAgICBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOworICAgIG1fYmFja2luZ1N0b3Jlcy5jbGVhcigp
OwogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwogCiAgICAg
c2V0QWN0aXZlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IGRi
ZmE2YTg5ZWU3Y2Q4ZDU0OGRlNjdmMGZhOTI5NGU2NDE5ZWQ3ZmYuLjFjZDhiYTNhNTQwN2NjZjYw
ZjQxOWM3ZDQ2YjE5NzQ0OGZjYWIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
aApAQCAtMTUzLDcgKzE1Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIo
KTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CiAKLSAg
ICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKTsKICAgICB2b2lkIHByZXBhcmVDb250ZW50QmFja2luZ1N0b3JlKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIGNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKQEAgLTE3Miw4ICsxNzEsOCBAQCBwcml2YXRl
OgogICAgIEltYWdlQmFja2luZ01hcCBtX2ltYWdlQmFja2luZ3M7CiAgICAgVmVjdG9yPFJlZlB0
cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX3JlbGVhc2VkSW1hZ2VCYWNraW5nczsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBSZWZQdHI8
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOwotICAgIEJhY2tpbmdT
dG9yZU1hcCBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
V2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
PiBCYWNraW5nU3RvcmVNYXA7CisgICAgQmFja2luZ1N0b3JlTWFwIG1fYmFja2luZ1N0b3JlczsK
IAogICAgIEhhc2hTZXQ8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fYmFja2lu
Z1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVyczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185424</attachid>
            <date>2013-01-30 01:04:52 -0800</date>
            <delta_ts>2013-01-30 02:22:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107073-20130130180137.patch</filename>
            <type>text/plain</type>
            <size>44286</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2NGRkM2YwYmQ4YWEy
ZDc3Y2E2MGFkMWE2YTZiNmFlZTA5Nzk1OS4uYzZiZjg1OWM1YTQyNDE5MjU0Yjg4YzU3MWZmZmRl
YmU3MDAzNzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMiBAQAogMjAxMy0wMS0zMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbVGV4TWFw
XSBSZW1vdmUgR3JhcGhpY3NMYXllciBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwNzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVu
Y3kgb2YgVGV4dHVyZU1hcHBlckxheWVyIG9uIEdyYXBoaWNzTGF5ZXIuIEl0IGlzIG5lZWRlZCB0
bworICAgICAgICByZW1vdmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3Jp
bmcgVGV4dHVyZU1hcHBlciB0byB3b3JrIGluIGFuIGFjdG9yCisgICAgICAgIG1vZGVsIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzg1NCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1RleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgICAgIFNldCBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgdG8g
bV9jaGFuZ2VNYXNrIGluc3RlYWQgb2YgQ29udGVudENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjph
ZGRDaGlsZEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDaGls
ZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c09wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VG9NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnBy
ZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVGV4dHVyZU1hcHBlckxheWVyVmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5n
ZXMpOgorICAgICAgICAgICAgRmx1c2ggcGVuZGluZyBjaGFuZ2VzIGludG8gVGV4dHVyZU1hcHBl
ckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFk
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaXhlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuY2hvclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0UHJlc2VydmVz
M0QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlblRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tzVG9C
b3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXREcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250ZW50
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRDb250
ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldERlYnVnVmlz
dWFscyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGFpbnRD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbnRlbnRz
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Rml4ZWRUb1Zp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0QmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJM
YXllcik6CisKKzIwMTMtMDEtMzAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFJlbW92ZSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3JlcyBpbiBMYXllclRyZWVSZW5kZXJlci4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA5OQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5k
ZXggMDMwZDgyMDNhOGI4MWE2ZWM1YTdjMzA5MmZlZmM3N2E2YWJjMDRjMS4uZGRkNDgyNWY3MjVi
MjZmZDFlMjZjNDg0NGZhNGQ3MjMyMDA4YmQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEzLTAxLTMwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVN
YXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAg
ICAgIEluY2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKKwogMjAxMy0wMS0yOSAgR3J6ZWdvcnogQ3phamtvd3Nr
aSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVbmlmaWVkIHRl
eHQgY2hlY2tlciBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4YTZjZDM4ODA2
MWE4YjZkZDgxNzY5YzZjYjIwNTYyYWU0MmNmZmE1Li44YjVkMmY0ZWU2ZmZkMmQ3ODJhZDEwNDMz
NWZjMDI0MWMyMWY2YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MDEtMzAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAg
ICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVyZU1hcHBlckxheWVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MDczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgSW5jbHVkZSBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIHRvIHVzZSB0b1RleHR1cmVNYXBwZXJMYXllcigp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRHTC5jcHA6CisKIDIwMTMtMDEtMjkgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFk
YUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBNaXNzaW5nIGJ1aWxkIGZsYWdzIHdoZW4g
YnVpbGRpbmcgd2l0aCBIYXJmYnV6egpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxZTRjM2NiNTdjZWJkZTA4
MjcxYjk0ODkyZmEwZGQ4MWNmYmUzNTJiLi4yNTZhZWQ2M2MwMDY5OWZjMDg0ZWYxN2QxYWE1YTdk
YzdlOTFhYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTMwICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhN
YXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIEluY2x1ZGUgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDoKKwog
MjAxMy0wMS0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MDk4My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDgwYWVlZTQ4YmU1ZmNhN2MyNDYzNWQy
YzE1NzI2YWEzMDQ1NDBiNjguLjkxNmNmY2U5NTc3OGQxNGFlODBlMTQzMTkwOGU5YWNkYmEwMjQx
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjgs
NiArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitUZXh0dXJlTWFwcGVyTGF5ZXIq
IHRvVGV4dHVyZU1hcHBlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIHJldHVy
biBsYXllciA/IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5sYXllcigpIDog
MDsKK30KKwogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUo
R3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVu
dCkKIHsKICAgICBpZiAoIWZhY3RvcnkpCkBAIC00NSw3ICs1MCw3IEBAIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xp
ZW50KiBjbGllCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbGF5ZXIoYWRv
cHRQdHIobmV3IFRleHR1cmVNYXBwZXJMYXllcigpKSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyKDApCi0gICAgLCBtX2NoYW5nZU1hc2soMCkKKyAgICAsIG1fY2hhbmdlTWFzayhO
b0NoYW5nZXMpCiAgICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1faGFzT3duQmFj
a2luZ1N0b3JlKHRydWUpCiAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKQEAgLTU1LDcg
KzYwLDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKIHsKIH0KIAotdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdl
TWFzayBjaGFuZ2VNYXNrKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6bm90aWZ5
Q2hhbmdlKENoYW5nZU1hc2sgY2hhbmdlTWFzaykKIHsKICAgICBtX2NoYW5nZU1hc2sgfD0gY2hh
bmdlTWFzazsKICAgICBpZiAoIWNsaWVudCgpKQpAQCAtODYsNyArOTEsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX25lZWRzRGlzcGxheSA9IHRydWU7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVN
YXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERpc3BsYXlDaGFu
Z2UpOwogICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSkp
OwogfQogCkBAIC05NCw3ICs5OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldE5lZWRzRGlzcGxheSgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShEaXNwbGF5Q2hhbmdl
KTsKICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKQEAgLTEwOCw3ICsx
MTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChtX25lZWRzRGlzcGxheSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsKLSAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBub3Rp
ZnlDaGFuZ2UoRGlzcGxheUNoYW5nZSk7CiAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAK
QEAgLTExNyw3ICsxMjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9vbCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIq
PiYgY2hpbGRyZW4pCiB7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxk
cmVuKSkgewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJl
bkNoYW5nZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjcsNyArMTMyLDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGQKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdl
KENoaWxkcmVuQ2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXllcik7CiB9
CiAKQEAgLTEzNiwxNSArMTQxLDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQgaW5kZXgp
CiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRleCk7Ci0g
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hpbGRyZW5DaGFuZ2UpOworICAg
IG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NM
YXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQWJv
dmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7Ci0gICAg
IEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcpOwotICAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5nZSk7CisgICAgR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7CisgICAgbm90aWZ5Q2hhbmdl
KENoaWxkcmVuQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0x
NTIsNyArMTU3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQ2hpbGRB
Ym92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXkKIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhs
YXllciwgc2libGluZyk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hp
bGRyZW5DaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8q
IFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMTYwLDcgKzE2NSw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5CiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpyZXBsYWNlQ2hp
bGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKQogewog
ICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0NoaWxkKSkg
ewotICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDaGlsZHJlbkNoYW5n
ZSk7CisgICAgICAgIG5vdGlmeUNoYW5nZShDaGlsZHJlbkNoYW5nZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzMsNyArMTc4LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIq
IHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBtYXNrTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6TWFza0xheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2Uo
TWFza0xheWVyQ2hhbmdlKTsKIAogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKQEAg
LTE4OSw3ICsxOTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBs
aWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcmVw
bGljYUxheWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBs
aWNhdGVkQnlMYXllcih2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6UmVwbGljYUxheWVyQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoUmVwbGljYUxheWVyQ2hh
bmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xOTksNyArMjA0LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IHBvc2l0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbih2YWx1ZSk7Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UG9zaXRpb25DaGFuZ2UpOworICAgIG5vdGlmeUNo
YW5nZShQb3NpdGlvbkNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpA
QCAtMjA5LDcgKzIxNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFu
Y2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IGFu
Y2hvclBvaW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRBbmNo
b3JQb2ludCh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5j
aG9yUG9pbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShBbmNob3JQb2ludENoYW5nZSk7CiB9
CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjIyLDcgKzIyNyw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiB2YWx1
ZSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHZhbHVlKTsKICAgICBpZiAobWFza0xheWVy
KCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5zZXRTaXplKHZhbHVlKTsKLSAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpTaXplQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoU2l6
ZUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjMzLDcgKzIz
OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh2YWx1ZSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1
cmVNYXBwZXJMYXllcjo6VHJhbnNmb3JtQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoVHJhbnNm
b3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0yNDMsNyAr
MjQ4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q2hpbGRyZW5UcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgKICAgICBpZiAodmFsdWUgPT0gY2hpbGRy
ZW5UcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENo
aWxkcmVuVHJhbnNmb3JtKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxh
eWVyOjpDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENoaWxkcmVu
VHJhbnNmb3JtQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0y
NTMsNyArMjU4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UHJlc2Vy
dmVzM0QoYm9vbCB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gcHJlc2VydmVzM0QoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHZhbHVlKTsKLSAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpQcmVzZXJ2ZXMzRENoYW5nZSk7Cisg
ICAgbm90aWZ5Q2hhbmdlKFByZXNlcnZlczNEQ2hhbmdlKTsKIH0KIAogLyogXHJlaW1wIChHcmFw
aGljc0xheWVyLmgpCkBAIC0yNjMsNyArMjY4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBt
YXNrc1RvQm91bmRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRN
YXNrc1RvQm91bmRzKHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpNYXNrc1RvQm91bmRzQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoTWFza3NUb0JvdW5kc0No
YW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMjcyLDcgKzI3Nyw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERyYXdzQ29udGVudChib29s
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRyYXdzQ29udGVudENo
YW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERyYXdzQ29udGVudENoYW5nZSk7CiAgICAgR3JhcGhp
Y3NMYXllcjo6c2V0RHJhd3NDb250ZW50KHZhbHVlKTsKIAogICAgIGlmICh2YWx1ZSAmJiBtX2hh
c093bkJhY2tpbmdTdG9yZSkKQEAgLTI4NSw3ICsyOTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1Zpc2libGUoYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gY29udGVudHNBcmVWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c1Zpc2libGVDaGFuZ2UpOworICAg
IG5vdGlmeUNoYW5nZShDb250ZW50c1Zpc2libGVDaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVmlzaWJsZSh2YWx1ZSk7CiAgICAgaWYgKG1hc2tMYXllcigpKQogICAgICAg
ICBtYXNrTGF5ZXIoKS0+c2V0Q29udGVudHNWaXNpYmxlKHZhbHVlKTsKQEAgLTI5Nyw3ICszMDIs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c09wYXF1ZShi
b29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBjb250ZW50c09wYXF1ZSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudHNP
cGFxdWVDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShDb250ZW50c09wYXF1ZUNoYW5nZSk7CiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUodmFsdWUpOwogfQogCkBAIC0zMDgs
NyArMzEzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2ZhY2VW
aXNpYmlsaXR5KGJvb2wgdmFsdWUpCiAgICAgaWYgKHZhbHVlID09IGJhY2tmYWNlVmlzaWJpbGl0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNp
YmlsaXR5KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpCYWNr
ZmFjZVZpc2liaWxpdHlDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShCYWNrZmFjZVZpc2liaWxp
dHlDaGFuZ2UpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTMxOCw3ICsz
MjMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRPcGFjaXR5KGZsb2F0
IHZhbHVlKQogICAgIGlmICh2YWx1ZSA9PSBvcGFjaXR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KHZhbHVlKTsKLSAgICBub3RpZnlDaGFuZ2UoVGV4
dHVyZU1hcHBlckxheWVyOjpPcGFjaXR5Q2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoT3BhY2l0
eUNoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMzI4LDcgKzMz
Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzUmVjdChj
b25zdCBJbnRSZWN0JiB2YWx1ZSkKICAgICBpZiAodmFsdWUgPT0gY29udGVudHNSZWN0KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1JlY3QodmFsdWUp
OwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzUmVjdENoYW5n
ZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzUmVjdENoYW5nZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKQEAgLTMzNyw3ICszNDIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc29saWRDb2xvciA9IGNvbG9yOwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRDaGFuZ2UpOworICAgIG5vdGlmeUNoYW5nZShC
YWNrZ3JvdW5kQ29sb3JDaGFuZ2UpOwogfQogCiAKQEAgLTM2Niw3ICszNzEsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdl
KQogICAgIH0KIAogICAgIHNldENvbnRlbnRzVG9NZWRpYShtX2NvbXBvc2l0ZWRJbWFnZS5nZXQo
KSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q29udGVudENoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRDaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiB9CiAKQEAgLTM3Niw3ICszODEsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIqCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzVG9NZWRpYShtZWRpYSk7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6Q29udGVudENoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRDaGFuZ2UpOwog
ICAgIG1fY29udGVudHNMYXllciA9IG1lZGlhOwogfQogCkBAIC0zODYsNyArMzkxLDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hv
dykKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9y
ZGVyKHNob3cpOwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlz
dWFsc0NoYW5nZSk7CisgICAgbm90aWZ5Q2hhbmdlKERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihi
b29sIHNob3cpCkBAIC0zOTUsNyArNDAwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3cpOwotICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7CisgICAg
bm90aWZ5Q2hhbmdlKERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhp
Y3NMYXllci5oKQpAQCAtNDAzLDkgKzQwOCw5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkK
IHsKICAgICBwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICBtX2xheWVyLT5mbHVz
aENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOworICAgIGNvbW1pdExheWVy
Q2hhbmdlcygpOworICAgIG1fbGF5ZXItPnN5bmNBbmltYXRpb25zKCk7CiAgICAgdXBkYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKCkKQEAgLTQxNCwxMSArNDE5LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAg
ICBpZiAoIXNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkgewogICAgICAgICBtX2JhY2tpbmdTdG9y
ZS5jbGVhcigpOwotICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpC
YWNraW5nU3RvcmVDaGFuZ2U7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBCYWNraW5nU3RvcmVD
aGFuZ2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkgewogICAg
ICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXll
cjo6QmFja2luZ1N0b3JlQ2hhbmdlOworICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IEJhY2tp
bmdTdG9yZUNoYW5nZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM1LDcgKzQ0MCw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWlu
dENvdW50KCkKICAgICBib29sIG5lZWRzVG9SZXBhaW50ID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9y
ZSgpICYmIChtX25lZWRzRGlzcGxheSB8fCAhbV9uZWVkc0Rpc3BsYXlSZWN0LmlzRW1wdHkoKSk7
CiAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgJiYgbmVlZHNUb1JlcGFpbnQpIHsK
ICAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0gICAgICAgIG1fY2hhbmdlTWFzayB8
PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZTsKKyAgICAgICAgbV9jaGFu
Z2VNYXNrIHw9IFJlcGFpbnRDb3VudENoYW5nZTsKICAgICB9CiB9CiAKQEAgLTQ0Myw3ICs0NDgs
OTkgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKIHsKICAgICBtX2RlYnVnQm9yZGVyQ29sb3Ig
PSBjb2xvcjsKICAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsKLSAgICBtX2NoYW5nZU1h
c2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2U7CisgICAgbV9jaGFu
Z2VNYXNrIHw9IERlYnVnVmlzdWFsc0NoYW5nZTsKK30KKworc3RhdGljIHZvaWQgdG9UZXh0dXJl
TWFwcGVyTGF5ZXJWZWN0b3IoY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbGF5ZXJzLCBW
ZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIHRleG1hcExheWVycykKK3sKKyAgICB0ZXhtYXBM
YXllcnMucmVzZXJ2ZUNhcGFjaXR5KGxheWVycy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICB0ZXhtYXBMYXllcnMuYXBwZW5k
KHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyc1tpXSkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQoreworICAgIGlmIChtX2NoYW5n
ZU1hc2sgPT0gTm9DaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jaGFuZ2VN
YXNrICYgQ2hpbGRyZW5DaGFuZ2UpIHsKKyAgICAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXll
cio+IHRleHR1cmVNYXBwZXJMYXllckNoaWxkcmVuOworICAgICAgICB0b1RleHR1cmVNYXBwZXJM
YXllclZlY3RvcihjaGlsZHJlbigpLCB0ZXh0dXJlTWFwcGVyTGF5ZXJDaGlsZHJlbik7CisgICAg
ICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKHRleHR1cmVNYXBwZXJMYXllckNoaWxkcmVuKTsKKyAg
ICB9CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgTWFza0xheWVyQ2hhbmdlKQorICAgICAgICBt
X2xheWVyLT5zZXRNYXNrTGF5ZXIodG9UZXh0dXJlTWFwcGVyTGF5ZXIobWFza0xheWVyKCkpKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBSZXBsaWNhTGF5ZXJDaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldFJlcGxpY2FMYXllcih0b1RleHR1cmVNYXBwZXJMYXllcihyZXBsaWNhTGF5ZXIo
KSkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFBvc2l0aW9uQ2hhbmdlKQorICAgICAgICBt
X2xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbigpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sg
JiBBbmNob3JQb2ludENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5j
aG9yUG9pbnQoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgU2l6ZUNoYW5nZSkKKyAgICAg
ICAgbV9sYXllci0+c2V0U2l6ZShzaXplKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFRy
YW5zZm9ybUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSgp
KTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZSkKKyAg
ICAgICAgbV9sYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7
CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgUHJlc2VydmVzM0RDaGFuZ2UpCisgICAgICAgIG1f
bGF5ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKCkpOworCisgICAgaWYgKG1fY2hhbmdl
TWFzayAmIENvbnRlbnRzUmVjdENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNS
ZWN0KGNvbnRlbnRzUmVjdCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBNYXNrc1RvQm91
bmRzQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3Vu
ZHMoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRHJhd3NDb250ZW50Q2hhbmdlKQorICAg
ICAgICBtX2xheWVyLT5zZXREcmF3c0NvbnRlbnQoZHJhd3NDb250ZW50KCkpOworCisgICAgaWYg
KG1fY2hhbmdlTWFzayAmIENvbnRlbnRzVmlzaWJsZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+
c2V0Q29udGVudHNWaXNpYmxlKGNvbnRlbnRzQXJlVmlzaWJsZSgpKTsKKworICAgIGlmIChtX2No
YW5nZU1hc2sgJiBDb250ZW50c09wYXF1ZUNoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0Q29u
dGVudHNPcGFxdWUoY29udGVudHNPcGFxdWUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYg
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNrZmFjZVZp
c2liaWxpdHkoYmFja2ZhY2VWaXNpYmlsaXR5KCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAm
IE9wYWNpdHlDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldE9wYWNpdHkob3BhY2l0eSgpKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UpCisgICAgICAg
IG1fbGF5ZXItPnNldFNvbGlkQ29sb3Ioc29saWRDb2xvcigpKTsKKworI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQorICAgICAgICBt
X2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CisjZW5kaWYKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBCYWNraW5nU3RvcmVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tpbmdT
dG9yZShtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRGVidWdWaXN1
YWxzQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXREZWJ1Z1Zpc3VhbHMoaXNTaG93aW5nRGVi
dWdCb3JkZXIoKSwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRoKCksIGlzU2hv
d2luZ1JlcGFpbnRDb3VudGVyKCkpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFJlcGFpbnRD
b3VudENoYW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0UmVwYWludENvdW50KHJlcGFpbnRDb3Vu
dCgpKTsKKworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50Q2hhbmdlKQorICAgICAgICBt
X2xheWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXIoKSk7CisKKyAgICBpZiAobV9j
aGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQorICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRp
b25zKG1fYW5pbWF0aW9ucyk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgRml4ZWRUb1ZpZXdw
b3JDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldEZpeGVkVG9WaWV3cG9ydChmaXhlZFRvVmll
d3BvcnQoKSk7CisKKyAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAKIC8qIFxyZWlt
cCAoR3JhcGhpY3NMYXllci5oKQpAQCAtNDYzLDExICs1NjAsNiBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgICAgICBjaGlsZHJlbigpW2ldLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUocmVjdCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSgpCi17Ci0gICAgbV9jaGFuZ2VNYXNrID0gMDsKLX0KLQogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIGlm
ICghbV9oYXNPd25CYWNraW5nU3RvcmUpCkBAIC01MTksNyArNjExLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QKICAgICAgICAgbGlzdHNNYXRjaCA9IHZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0
aW9ucyh2YWx1ZUxpc3QsIGhhc0JpZ1JvdGF0aW9uKSA+PSAwOwogCiAgICAgbV9hbmltYXRpb25z
LmFkZChHcmFwaGljc0xheWVyQW5pbWF0aW9uKGtleWZyYW1lc05hbWUsIHZhbHVlTGlzdCwgYm94
U2l6ZSwgYW5pbSwgV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZU9mZnNldCwgbGlzdHNNYXRjaCkp
OwotICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkFuaW1hdGlvbkNoYW5nZSk7
CisgICAgbm90aWZ5Q2hhbmdlKEFuaW1hdGlvbkNoYW5nZSk7CiAgICAgbV9hbmltYXRpb25TdGFy
dGVkVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTI3LDcg
KzYxOSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFuaW1hdGlvbihj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRBbmltYXRpb25zKGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBh
bmltYXRpb25zKQogewogICAgIG1fYW5pbWF0aW9ucyA9IGFuaW1hdGlvbnM7Ci0gICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICBub3RpZnlD
aGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKIH0KIAogCkBAIC01NDksNyArNjQxLDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoVGlt
ZXI8R3JhcGhpY3NMYXllclQKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCiB7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RmlsdGVyQ2hh
bmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoRmlsdGVyQ2hhbmdlKTsKICAgICByZXR1cm4gR3JhcGhp
Y3NMYXllcjo6c2V0RmlsdGVycyhmaWx0ZXJzKTsKIH0KICNlbmRpZgpAQCAtNTYxLDEzICs2NTMs
MjIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0QmFja2luZ1N0b3JlKFBh
c3NSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmcKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9i
YWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7Ci0gICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBw
ZXJMYXllcjo6QmFja2luZ1N0b3JlQ2hhbmdlKTsKKyAgICBub3RpZnlDaGFuZ2UoQmFja2luZ1N0
b3JlQ2hhbmdlKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Rml4
ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpCit7CisgICAgaWYgKG1fZml4ZWRUb1ZpZXdwb3J0ID09
IGZpeGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVk
OworICAgIG5vdGlmeUNoYW5nZShGaXhlZFRvVmlld3BvckNoYW5nZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50
KQogewogICAgIG1fcmVwYWludENvdW50ID0gcmVwYWludENvdW50OwotICAgIG5vdGlmeUNoYW5n
ZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZSk7CisgICAgbm90aWZ5Q2hh
bmdlKFJlcGFpbnRDb3VudENoYW5nZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmgKaW5kZXggNjJmNDU4MDNjZmVmMmFjNDcyZmE4OWEyMGMwMjc5OGFhMTMx
YzU1Ni4uOGY3NWY1Zjg2NDNlMzlmMzNmNDViNmE0MTM0ZjY2NmRiMmRjODg2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTI5LDggKzI5LDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgOiBwdWJs
aWMgR3JhcGhpY3NMYXllciB7Ci0gICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsK
LQogcHVibGljOgogICAgIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBo
aWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cigpOwpAQCAtNzMsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIAotICAgIHZvaWQgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6Q2hhbmdlTWFzayk7CiAgICAgaW5saW5lIGlu
dCBjaGFuZ2VNYXNrKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VNYXNrOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50
U2l6ZSYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7CkBAIC05MSw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIp
IHsgbV9oYXNPd25CYWNraW5nU3RvcmUgPSBiOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CiAKLSAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0K
KyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3
cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKICAgICBDb2xvciBk
ZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CkBA
IC0xMDAsMTMgKzk3LDU1IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCk7Ci0gICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsK
KworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzKCk7CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z0Jv
cmRlckFuZFJlcGFpbnRDb3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIGJvb2wg
c2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRl
ZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+Kik7CiAKKyAgICAv
LyBUaGlzIHNldCBvZiBmbGFncyBoZWxwIHVzIGRlZmVyIHdoaWNoIHByb3BlcnRpZXMgb2YgdGhl
IGxheWVyIGhhdmUgYmVlbgorICAgIC8vIG1vZGlmaWVkIGJ5IHRoZSBjb21wb3NpdG9yLCBzbyB3
ZSBjYW4ga25vdyB3aGF0IHRvIGxvb2sgZm9yIGluIHRoZSBuZXh0IGZsdXNoLgorICAgIGVudW0g
Q2hhbmdlTWFzayB7CisgICAgICAgIE5vQ2hhbmdlcyA9ICAgICAgICAgICAgICAgICAwLAorCisg
ICAgICAgIENoaWxkcmVuQ2hhbmdlID0gICAgICAgICAgICAoMUwgPDwgMSksCisgICAgICAgIE1h
c2tMYXllckNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMiksCisgICAgICAgIFJlcGxpY2FMYXll
ckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMyksCisKKyAgICAgICAgQ29udGVudENoYW5nZSA9ICAg
ICAgICAgICAgICgxTCA8PCA0KSwKKyAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlID0gICAgICAg
ICgxTCA8PCA1KSwKKyAgICAgICAgQ29udGVudHNWaXNpYmxlQ2hhbmdlID0gICAgICgxTCA8PCA2
KSwKKyAgICAgICAgQ29udGVudHNPcGFxdWVDaGFuZ2UgPSAgICAgICgxTCA8PCA3KSwKKworICAg
ICAgICBQb3NpdGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDgpLAorICAgICAgICBBbmNo
b3JQb2ludENoYW5nZSA9ICAgICAgICAgKDFMIDw8IDkpLAorICAgICAgICBTaXplQ2hhbmdlID0g
ICAgICAgICAgICAgICAgKDFMIDw8IDEwKSwKKyAgICAgICAgVHJhbnNmb3JtQ2hhbmdlID0gICAg
ICAgICAgICgxTCA8PCAxMSksCisgICAgICAgIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlID0gICAo
MUwgPDwgMTIpLAorICAgICAgICBQcmVzZXJ2ZXMzRENoYW5nZSA9ICAgICAgICAgKDFMIDw8IDEz
KSwKKworICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlID0gICAgICAgKDFMIDw8IDE0KSwKKyAg
ICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAxNSksCisgICAgICAgIE9w
YWNpdHlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTYpLAorICAgICAgICBCYWNrZmFjZVZp
c2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKKworICAgICAgICBCYWNraW5nU3RvcmVDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDE4KSwKKyAgICAgICAgRGlzcGxheUNoYW5nZSA9ICAgICAgICAg
ICAgICgxTCA8PCAxOSksCisgICAgICAgIENvbnRlbnRzRGlzcGxheUNoYW5nZSA9ICAgICAoMUwg
PDwgMjApLAorICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIxKSwK
KworICAgICAgICBBbmltYXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKKyAgICAg
ICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVi
dWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3Vu
dENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAorCisgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hh
bmdlID0gICAgICAoMUwgPDwgMjYpCisgICAgfTsKKyAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFu
Z2VNYXNrKTsKKwogICAgIE93blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fbGF5ZXI7CiAgICAg
UmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7
CiAgICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CkBAIC0xMzIs
NSArMTcxLDcgQEAgaW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0wKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqPihsYXllcik7CiB9CiAKK1RleHR1cmVNYXBw
ZXJMYXllciogdG9UZXh0dXJlTWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciopOworCiB9CiAjZW5k
aWYgLy8gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcAppbmRleCA0YWIyNTA4OWZkYWU0OWM2YTc3OTg5NmNhZDJkYjkxMzc2YTQ0ODM1Li5lZGZl
MzIwNzhkOGYyMWFiNzg4YTRhY2ZlN2Q1YzJiY2YxZjQyOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcApAQCAtMjIsOCArMjIsNiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKQEAg
LTQwLDExICszOCw2IEBAIHB1YmxpYzoKICAgICB7IH0KIH07CiAKLVRleHR1cmVNYXBwZXJMYXll
ciogdG9UZXh0dXJlTWFwcGVyTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgcmV0
dXJuIGxheWVyID8gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmxheWVyKCkg
OiAwOwotfQotCiBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6
cm9vdExheWVyKCkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RUYXJnZXQpCkBAIC0zOTIsOTMg
KzM4NSwxMSBAQCBUZXh0dXJlTWFwcGVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnRleHR1cmVNYXBw
ZXIoKSBjb25zdAogICAgIHJldHVybiByb290TGF5ZXIoKS0+bV90ZXh0dXJlTWFwcGVyOwogfQog
Ci12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3JhcGhpY3NMYXllcikKLXsKLSAg
ICBBU1NFUlQoZ3JhcGhpY3NMYXllcik7Ci0gICAgaW50IGNoYW5nZU1hc2sgPSBncmFwaGljc0xh
eWVyLT5jaGFuZ2VNYXNrKCk7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayA9PSBOb0NoYW5nZXMgJiYg
Z3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkKLSAgICAgICAgc2V0Q2hpbGRy
ZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7Ci0KLSAgICBpZiAoY2hhbmdlTWFzayAmIE1h
c2tMYXllckNoYW5nZSkgewotICAgICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpKQotICAgICAg
ICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwotICAgIH0KLQotICAgIGlmIChjaGFu
Z2VNYXNrICYgUmVwbGljYUxheWVyQ2hhbmdlKSB7Ci0gICAgICAgaWYgKFRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNh
TGF5ZXIoKSkpCi0gICAgICAgICAgIGxheWVyLT5tX2VmZmVjdFRhcmdldCA9IHRoaXM7Ci0gICAg
fQotCi0gICAgaWYgKGNoYW5nZU1hc2sgJiBBbmltYXRpb25DaGFuZ2UpCi0gICAgICAgIG1fYW5p
bWF0aW9ucyA9IGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9uczsKLSAgICAKLSAgICBpZiAoY2hh
bmdlTWFzayAmIFRyYW5zZm9ybUNoYW5nZSkKLSAgICAgICAgbV9zaG91bGRVcGRhdGVDdXJyZW50
VHJhbnNmb3JtRnJvbUdyYXBoaWNzTGF5ZXIgPSB0cnVlOwotCi0gICAgaWYgKGNoYW5nZU1hc2sg
JiBPcGFjaXR5Q2hhbmdlKQotICAgICAgICBtX3Nob3VsZFVwZGF0ZUN1cnJlbnRPcGFjaXR5RnJv
bUdyYXBoaWNzTGF5ZXIgPSB0cnVlOwotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlm
IChjaGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3Nob3VsZFVwZGF0ZUN1cnJl
bnRGaWx0ZXJzRnJvbUdyYXBoaWNzTGF5ZXIgPSB0cnVlOwotI2VuZGlmCi0KLSAgICBpZiAoY2hh
bmdlTWFzayAmIEJhY2tpbmdTdG9yZUNoYW5nZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBn
cmFwaGljc0xheWVyLT5tX2JhY2tpbmdTdG9yZTsKLQotICAgIGlmIChjaGFuZ2VNYXNrICYgUmVw
YWludENvdW50Q2hhbmdlKQotICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNz
TGF5ZXItPnJlcGFpbnRDb3VudCgpOwotCi0gICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5y
ZXBsaWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNh
TGF5ZXIoKSk7Ci0gICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwot
ICAgIG1fc3RhdGUuYW5jaG9yUG9pbnQgPSBncmFwaGljc0xheWVyLT5hbmNob3JQb2ludCgpOwot
ICAgIG1fc3RhdGUuc2l6ZSA9IGdyYXBoaWNzTGF5ZXItPnNpemUoKTsKLSAgICBtX3N0YXRlLnRy
YW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPnRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUuY29udGVu
dHNSZWN0ID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNSZWN0KCk7Ci0gICAgbV9zdGF0ZS5wcmVz
ZXJ2ZXMzRCA9IGdyYXBoaWNzTGF5ZXItPnByZXNlcnZlczNEKCk7Ci0gICAgbV9zdGF0ZS5tYXNr
c1RvQm91bmRzID0gZ3JhcGhpY3NMYXllci0+bWFza3NUb0JvdW5kcygpOwotICAgIG1fc3RhdGUu
ZHJhd3NDb250ZW50ID0gZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCk7Ci0gICAgbV9zdGF0
ZS5jb250ZW50c1Zpc2libGUgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0FyZVZpc2libGUoKTsK
LSAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gZ3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFx
dWUoKTsKLSAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGdyYXBoaWNzTGF5ZXItPmJh
Y2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFw
aGljc0xheWVyLT5jaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIG1fc3RhdGUub3BhY2l0eSA9IGdy
YXBoaWNzTGF5ZXItPm9wYWNpdHkoKTsKLSAgICBtX3N0YXRlLnNvbGlkQ29sb3IgPSBncmFwaGlj
c0xheWVyLT5zb2xpZENvbG9yKCk7Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmIChj
aGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQotICAgICAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFw
aGljc0xheWVyLT5maWx0ZXJzKCk7Ci0jZW5kaWYKLSAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdy
YXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwotCi0gICAgbV9zdGF0ZS5zaG93RGVidWdC
b3JkZXJzID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKLSAgICBtX3N0
YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlckNvbG9yKCk7Ci0gICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldp
ZHRoID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdC
b3JkZXJXaWR0aCgpOwotICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NM
YXllci0+aXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKLQotICAgIG1fY29udGVudHNMYXllciA9
IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQotICAgIG1fY3VycmVudFRyYW5zZm9y
bS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fY3VycmVudFRyYW5zZm9y
bS5zZXRBbmNob3JQb2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX2N1cnJlbnRUcmFu
c2Zvcm0uc2V0U2l6ZShtX3N0YXRlLnNpemUpOwotICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRG
bGF0dGVuaW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX2N1cnJlbnRUcmFuc2Zvcm0u
c2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7Ci0KLSAgICBz
eW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRy
ZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRyZW4pCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXll
cio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4
dHVyZU1hcHBlckxheWVyKiBjaGlsZCA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG5ld0NoaWxkcmVu
W2ldKTsKLSAgICAgICAgQVNTRVJUKGNoaWxkKTsKLSAgICAgICAgYWRkQ2hpbGQoY2hpbGQpOwot
ICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytp
KQorICAgICAgICBhZGRDaGlsZChuZXdDaGlsZHJlbltpXSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjphZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkTGF5ZXIpCkBAIC01
MTYsNiArNDI3LDEzNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRy
ZW4oKQogICAgIH0KIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE1hc2tMYXllcihU
ZXh0dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBpZiAobWFza0xheWVyKQorICAg
ICAgICBtYXNrTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsKKyAgICBtX3N0YXRlLm1hc2tM
YXllciA9IG1hc2tMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFJlcGxp
Y2FMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlcGxpY2FMYXllcikKK3sKKyAgICBpZiAocmVw
bGljYUxheWVyKQorICAgICAgICByZXBsaWNhTGF5ZXItPm1fZWZmZWN0VGFyZ2V0ID0gdGhpczsK
KyAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQor
eworICAgIG1fc3RhdGUucG9zID0gcG9zaXRpb247CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNl
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3N0YXRlLnNpemUg
PSBzaXplOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKHNpemUpOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBh
bmNob3JQb2ludCkKK3sKKyAgICBtX3N0YXRlLmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7Cisg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBvaW50KGFuY2hvclBvaW50KTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0Qp
Cit7CisgICAgbV9zdGF0ZS5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOworICAgIG1fY3VycmVu
dFRyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFwcmVzZXJ2ZXMzRCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBtX2N1
cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0odHJhbnNmb3JtKTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBjaGlsZHJlblRyYW5zZm9ybSkKK3sKKyAgICBtX3N0YXRlLmNoaWxkcmVuVHJh
bnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm07CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldENo
aWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QpCit7
CisgICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKK3sK
KyAgICBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQorewor
ICAgIG1fc3RhdGUuZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNWaXNpYmxlKGJvb2wgY29udGVudHNWaXNpYmxlKQor
eworICAgIG1fc3RhdGUuY29udGVudHNWaXNpYmxlID0gY29udGVudHNWaXNpYmxlOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBjb250ZW50c09w
YXF1ZSkKK3sKKyAgICBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBi
YWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgPSBi
YWNrZmFjZVZpc2liaWxpdHk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgbV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0eTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIG1fc3RhdGUuc29saWRDb2xvciA9IGNvbG9yOworfQorCisjaWYgRU5BQkxF
KENTU19GSUxURVJTKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3N0YXRlLmZpbHRlcnMgPSBmaWx0
ZXJzOworfQorI2VuZGlmCisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3Vh
bHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgZGVidWdCb3JkZXJDb2xvciwg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpCit7CisgICAg
bV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gc2hvd0RlYnVnQm9yZGVyczsKKyAgICBtX3N0YXRl
LmRlYnVnQm9yZGVyQ29sb3IgPSBkZWJ1Z0JvcmRlckNvbG9yOworICAgIG1fc3RhdGUuZGVidWdC
b3JkZXJXaWR0aCA9IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENv
dW50ZXIgPSBzaG93UmVwYWludENvdW50ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBtX3N0YXRlLnJlcGFp
bnRDb3VudCA9IHJlcGFpbnRDb3VudDsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
Cit7CisgICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1MYXllcjsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlv
bnMmIGFuaW1hdGlvbnMpCit7CisgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkVG9W
aWV3cG9ydCkKK3sKKyAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkVG9WaWV3cG9ydDsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKK3sKKyAgICBtX2JhY2tpbmdT
dG9yZSA9IGJhY2tpbmdTdG9yZTsKK30KIAogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2Nl
bmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAppbmRleCA3N2RhMjY5YjM2YTI5ODkyNmZiNzk4NWRmZWE4MTIyZTI0MGMyOWQ1
Li43ZjNmMmM2ZTQxMDJjMjJhZWViNjEzYTJiNzhkNDdjZDE1YzdhMzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtMzQsNTEg
KzMzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwotY2xhc3MgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9w
ZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KLSAgICAvLyBtb2RpZmllZCBieSB0aGUgY29t
cG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVz
aC4KLSAgICBlbnVtIENoYW5nZU1hc2sgewotICAgICAgICBOb0NoYW5nZXMgPSAgICAgICAgICAg
ICAgICAgMCwKLQotICAgICAgICBDaGlsZHJlbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDEp
LAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIpLAotICAgICAg
ICBQb3NpdGlvbkNoYW5nZSA9ICAgICAgICAgICAgKDFMIDw8IDMpLAotCi0gICAgICAgIEFuY2hv
clBvaW50Q2hhbmdlID0gICAgICAgICAoMUwgPDwgNCksCi0gICAgICAgIFNpemVDaGFuZ2UgID0g
ICAgICAgICAgICAgICAoMUwgPDwgNSksCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZSA9ICAgICAg
ICAgICAoMUwgPDwgNiksCi0gICAgICAgIENvbnRlbnRDaGFuZ2UgPSAgICAgICAgICAgICAoMUwg
PDwgNyksCi0KLSAgICAgICAgQ29udGVudHNPcmllbnRhdGlvbkNoYW5nZSA9ICgxTCA8PCA5KSwK
LSAgICAgICAgT3BhY2l0eUNoYW5nZSA9ICAgICAgICAgICAgICgxTCA8PCAxMCksCi0gICAgICAg
IENvbnRlbnRzUmVjdENoYW5nZSA9ICAgICAgICAoMUwgPDwgMTEpLAotCi0gICAgICAgIFByZXNl
cnZlczNEQ2hhbmdlID0gICAgICAgICAoMUwgPDwgMTIpLAotICAgICAgICBNYXNrc1RvQm91bmRz
Q2hhbmdlID0gICAgICAgKDFMIDw8IDEzKSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlID0g
ICAgICAgICgxTCA8PCAxNCksCi0gICAgICAgIENvbnRlbnRzVmlzaWJsZUNoYW5nZSA9ICAgICAo
MUwgPDwgMTUpLAotICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZSA9ICAgICAgKDFMIDw8IDE2
KSwKLQotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2UgPSAgKDFMIDw8IDE3KSwKLSAg
ICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgPSAgICgxTCA8PCAxOCksCi0gICAgICAgIERp
c3BsYXlDaGFuZ2UgPSAgICAgICAgICAgICAoMUwgPDwgMTkpLAotICAgICAgICBCYWNrZ3JvdW5k
Q29sb3JDaGFuZ2UgPSAgICAgKDFMIDw8IDIwKSwKLQotICAgICAgICBSZXBsaWNhTGF5ZXJDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDIxKSwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAg
ICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwg
PDwgMjMpLAotCi0gICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQp
LAotICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKLQotICAg
ICAgICBCYWNraW5nU3RvcmVDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI2KQotICAgIH07Ci0KICAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwg
bV9lZmZlY3RUYXJnZXQoMCkKQEAgLTkxLDEzICs1MCw0MiBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9zaG91bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21HcmFwaGljc0xheWVyKHRydWUpCiAjZW5k
aWYKICAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKKyAgICAgICAgLCBtX2ZpeGVkVG9WaWV3
cG9ydChmYWxzZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJMYXllcigp
OwogCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwotICAgIHZvaWQg
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlciopOwogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXht
YXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CisKKyAgICB2b2lkIHNldENoaWxkcmVu
KGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYpOworICAgIHZvaWQgc2V0TWFza0xh
eWVyKFRleHR1cmVNYXBwZXJMYXllciopOworICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFRleHR1
cmVNYXBwZXJMYXllciopOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYp
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldEFuY2hv
clBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9v
bCk7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
KyAgICB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7CisgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQg
c2V0TWFza3NUb0JvdW5kcyhib29sKTsKKyAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsK
KyAgICB2b2lkIHNldENvbnRlbnRzVmlzaWJsZShib29sKTsKKyAgICB2b2lkIHNldENvbnRlbnRz
T3BhcXVlKGJvb2wpOworICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOworICAg
IHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CisgICAgdm9pZCBzZXRTb2xpZENvbG9yKGNvbnN0IENv
bG9yJik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJik7CisjZW5kaWYKKyAgICB2b2lkIHNldERlYnVnVmlzdWFscyhi
b29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9h
dCBkZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcik7CisgICAgdm9pZCBz
ZXRSZXBhaW50Q291bnQoaW50KTsKKyAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMmKTsKKyAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsK
KyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+KTsKKworICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKICAgICBib29sIGRlc2NlbmRh
bnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50
KCk7CkBAIC0xMTksNyArMTA3LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IGFkanVzdGVk
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25E
ZWx0YTsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0OwogCi0g
ICAgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAg
dm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CkBAIC0xMzYsNyArMTIzLDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdm9pZCBzeW5jQW5pbWF0
aW9ucygpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgZW51bSBDb250ZW50c0xh
eWVyQ291bnQgewogICAgICAgICBOb0xheWVyc1dpdGhDb250ZW50LApAQCAtMjI0LDkgKzIxMCw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKIH07CiAKLQotVGV4dHVy
ZU1hcHBlckxheWVyKiB0b1RleHR1cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKik7Ci0KIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKaW5kZXgg
MDhkZTNlMGQwYzdhMTcwYjhlMzRjOWIwOTU2MWI3YTA5NWU4ZDVjMC4uOGEzYTI0OWJlMjAwYmVm
MzU5MmZjYThjNGJkMDBiNDUzYWMzYmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0RWZsLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQYWdl
Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCmluZGV4IGQxMzBhM2ZiN2IzYjE4OTA2YWVhOWRmODk4
OTM0YjFhNmZmYWYwMDYuLmMyM2RlNjJhMTBhMWMxNDFlNzRhMGQzMjIwM2U0NTkzYmRmODIwNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRR
dC5jcHAKaW5kZXggZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNmNC4uNjZi
OGQwZjk2ZDRhNzI2NmUxNmRiZGNhZTFhOWJmNThmMzE5ODcwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJD
bGllbnRRdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKICNpbmNsdWRl
ICJRV2ViUGFnZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>