<?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>128516</bug_id>
          
          <creation_ts>2014-02-09 21:02:00 -0800</creation_ts>
          <short_desc>[WebGL] Remove state restorer code</short_desc>
          <delta_ts>2014-02-09 21:37:37 -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>WebGL</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978710</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-02-09 21:02:00 -0800</bug_when>
    <thetext>I&apos;m not sure what the point of the WebGLStateRestorer class was. It&apos;s always constructed with a false parameter, and then isn&apos;t even assigned to a local variable so wouldn&apos;t have worked anyway. Meanwhile there are also LOTS of calls to cleanupAfterGraphicsCall, the majority of which pass in false, making them a no-op. I replaced the handful of cleanupAfterGraphicsCall(true) with the call to markContextChanged().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978711</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-09 21:02:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/16022970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978712</commentid>
    <comment_count>2</comment_count>
      <attachid>223673</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-02-09 21:08:32 -0800</bug_when>
    <thetext>Created attachment 223673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978723</commentid>
    <comment_count>3</comment_count>
      <attachid>223673</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-02-09 21:26:07 -0800</bug_when>
    <thetext>Comment on attachment 223673
Patch

Looks reasonable and definitely cleaner. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978727</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-02-09 21:37:37 -0800</bug_when>
    <thetext>Committed r163763: &lt;http://trac.webkit.org/changeset/163763&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223673</attachid>
            <date>2014-02-09 21:08:32 -0800</date>
            <delta_ts>2014-02-09 21:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128516-20140209210831.patch</filename>
            <type>text/plain</type>
            <size>55507</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA3ZDYyNjFiNTY3Yjc4
Y2E4ZDNjZmQ2YWJmZWI5M2I1YTJiYmVmOS4uOTkzZjcxY2YwNDI4MzA0OGU0NmNkNWViNDRiZjI5
ZTAwZDA1MDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyOSBAQAogMjAxNC0wMi0wOSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYkdMXSBSZW1vdmUgc3Rh
dGUgcmVzdG9yZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSSdtIG5vdCBzdXJlIHdoYXQgdGhlIHBvaW50IG9mIHRoZSBXZWJHTFN0YXRlUmVz
dG9yZXIgY2xhc3Mgd2FzLiBJdCB3YXMKKyAgICAgICAgYWx3YXlzIGNvbnN0cnVjdGVkIHdpdGgg
YSBmYWxzZSBwYXJhbWV0ZXIsIGFuZCB0aGVuIHdhc24ndCBldmVuIHJldGFpbmVkCisgICAgICAg
IGluIGxvY2FsIHNjb3BlIChzbyB3b3VsZG4ndCBoYXZlIHdvcmtlZCBhbnl3YXkpLiBNZWFud2hp
bGUgdGhlcmUgd2VyZQorICAgICAgICBhbHNvIExPVFMgb2YgY2FsbHMgdG8gY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsLCB0aGUgbWFqb3JpdHkgb2Ygd2hpY2gKKyAgICAgICAgd2VyZSBhIG5vLW9w
LiBJIHJlcGxhY2VkIHRoZSBoYW5kZnVsIG9mIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVl
KQorICAgICAgICB3aXRoIHRoZSBjYWxsIHRvIG1hcmtDb250ZXh0Q2hhbmdlZCgpLgorCisgICAg
ICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRFcXVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuYyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuY1NlcGFy
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhckNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJEZXB0
aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyU3RlbmNp
bCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbG9yTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBpbGVTaGFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2VkVGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmN1bGxGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZURyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmFsaWRhdGVEcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGluZVdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwaXhlbFN0b3JlaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBvbHlnb25PZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVNoYWRlckNvbXBp
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVm
ZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNh
bXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c2Npc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNoYWRl
clNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5j
aWxGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3RlbmNp
bEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4SW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQ
b2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmlld3Bv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWJmSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oOgorCisyMDE0LTAyLTA5ICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdW51c2VkIGxheWVyIG93bmVyIGZyb20gV2Vi
R0xMYXllcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI4NTEyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmNwcAppbmRleCAzNmFiODMyZDk3YjExMDk0ZWJhYTBhYjRlMzgxMjIzYTRjNzJk
NDlhLi43NzIwMTJiMTk2OWVhYWFjNDhlY2UzMjMzOWRhY2E4YTlmOGQ2YTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCkBA
IC0xMDYsOCArMTA2LDYgQEAgdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFy
cmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2IKICAgICAgICAgZXh0ZW5z
aW9ucy0+YmluZFZlcnRleEFycmF5T0VTKDApOwogICAgICAgICBtX2NvbnRleHQtPnNldEJvdW5k
VmVydGV4QXJyYXlPYmplY3QoMCk7CiAgICAgfQotICAgIAotICAgIG1fY29udGV4dC0+Y2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggYTdmZWZiOTdlNjlkYWQ5ZjAxOWIyMzg3ZGZmN2M1MjQ0NTk0ZGE0Yi4uZTdj
MTRiNWQ3NzE1YmYzNzU3MTBkYzhlZDc0YmZmNGJlMjNjMTkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zNjEs
MjUgKzM2MSw2IEBAIG5hbWVzcGFjZSB7CiAgICAgfQogfSAvLyBuYW1lc3BhY2UgYW5vbnltb3Vz
CiAKLWNsYXNzIFdlYkdMU3RhdGVSZXN0b3JlciB7Ci1wdWJsaWM6Ci0gICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjaGFuZ2VkKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICAsIG1fY2hhbmdlZChjaGFuZ2VkKQotICAgIHsKLSAgICB9Ci0KLSAgICB+V2ViR0xTdGF0ZVJl
c3RvcmVyKCkKLSAgICB7Ci0gICAgICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKG1fY2hhbmdlZCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogbV9jb250ZXh0OwotICAgIGJvb2wgbV9jaGFuZ2VkOwotfTsKLQogY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrIDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpD
b250ZXh0TG9zdENhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKQEAgLTg3MCw4ICs4NTEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZl
VGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIGlmICht
X2RyYXdpbmdCdWZmZXIpCiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0QWN0aXZlVGV4dHVy
ZVVuaXQodGV4dHVyZSk7Ci0KLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04
ODUsNyArODY0LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFjaFNoYWRlcihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGEKICAgICB9CiAgICAgbV9jb250
ZXh0LT5hdHRhY2hTaGFkZXIob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBvYmplY3RPclplcm8oc2hh
ZGVyKSk7CiAgICAgc2hhZGVyLT5vbkF0dGFjaGVkKCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRy
aWJMb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtOTA2LDcgKzg4NCw2IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBHQzNEdWludCBpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0
LT5iaW5kQXR0cmliTG9jYXRpb24ob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBpbmRleCwgbmFtZSk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmNoZWNrT2JqZWN0VG9CZUJvdW5kKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgV2ViR0xPYmplY3QqIG9iamVjdCwgYm9vbCYgZGVsZXRlZCkKQEAgLTk0OCw3ICs5MjUs
NiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJn
ZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4YwogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0
YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBi
dWZmZXItPnNldFRhcmdldCh0YXJnZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpAQCAtOTc0LDcgKzk1MCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5k
RnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBiCiAgICAgaWYg
KGJ1ZmZlcikKICAgICAgICAgYnVmZmVyLT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7CiAgICAgYXBw
bHlTdGVuY2lsVGVzdCgpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC05OTMsNyArOTY4LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRS
ZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZmZlcioKICAgICBtX2Nv
bnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBvYmplY3RPclplcm8ocmVuZGVyQnVmZmVy
KSk7CiAgICAgaWYgKHJlbmRlckJ1ZmZlcikKICAgICAgICAgcmVuZGVyQnVmZmVyLT5zZXRIYXNF
dmVyQmVlbkJvdW5kKCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdl
dCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEwMzUsOCAr
MTAwOSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZShHQzNEZW51
bSB0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwKICAgICAvLyBwbGF0Zm9ybXMgaXMgZmFp
cmx5IGludm9sdmVkICh3aWxsIHJlcXVpcmUgYSBIYXNoTWFwIGZyb20gdGV4dHVyZSBJRAogICAg
IC8vIGluIGFsbCBwb3J0cyksIGFuZCB3ZSBoYXZlIG5vdCBoYWQgYW55IGNvbXBsYWludHMsIHNv
IHRoZSBsb2dpYyBoYXMKICAgICAvLyBiZWVuIHJlbW92ZWQuCi0KLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Ymxl
bmRDb2xvcihHQzNEZmxvYXQgcmVkLCBHQzNEZmxvYXQgZ3JlZW4sIEdDM0RmbG9hdCBibHVlLCBH
QzNEZmxvYXQgYWxwaGEpCkBAIC0xMDQ0LDcgKzEwMTYsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6YmxlbmRDb2xvcihHQzNEZmxvYXQgcmVkLCBHQzNEZmxvYXQgZ3JlZW4sIEdDM0Rm
bG9hdAogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nv
bnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCkBAIC0xMDUyLDcgKzEwMjMsNiBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQogICAg
IGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlQmxlbmRFcXVhdGlvbigiYmxlbmRFcXVh
dGlvbiIsIG1vZGUpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5ibGVuZEVxdWF0
aW9uKG1vZGUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0g
bW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQpAQCAtMTA2MCw3ICsxMDMwLDYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2Rl
UkdCLCBHQzNEZW51bSBtb2QKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZUJs
ZW5kRXF1YXRpb24oImJsZW5kRXF1YXRpb24iLCBtb2RlUkdCKSB8fCAhdmFsaWRhdGVCbGVuZEVx
dWF0aW9uKCJibGVuZEVxdWF0aW9uIiwgbW9kZUFscGhhKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogCkBAIC0xMDY5LDcgKzEw
MzgsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNm
YWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFs
aWRhdGVCbGVuZEZ1bmNGYWN0b3JzKCJibGVuZEZ1bmMiLCBzZmFjdG9yLCBkZmFjdG9yKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0Rl
bnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQpAQCAtMTA3
OCw3ICsxMDQ2LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuY1NlcGFy
YXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLAogICAgIGlmIChpc0NvbnRleHRM
b3N0KCkgfHwgIXZhbGlkYXRlQmxlbmRGdW5jRmFjdG9ycygiYmxlbmRGdW5jIiwgc3JjUkdCLCBk
c3RSR0IpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0
ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2FnZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMTA1LDcgKzEwNzIsNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBH
QzNEZW51bQogICAgIH0KIAogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHN0YXRp
Y19jYXN0PEdDM0RzaXplaXB0cj4oc2l6ZSksIHVzYWdlKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVy
RGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBHQzNEZW51bSB1c2FnZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMTI4LDcgKzEwOTQsNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRh
LCBHQzNEZQogICAgIH0KIAogICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEt
PmJ5dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpLCB1c2FnZSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIEdDM0RlbnVtIHVz
YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTExNTEsNyArMTExNiw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgQXJyYXlCdWZmZXJW
aWV3KiBkYXRhLCBHCiAgICAgfQogCiAgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKHRhcmdldCwg
ZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpLCB1c2FnZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBB
cnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMTc2LDcgKzExNDAsNiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJn
ZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEFycgogICAgIH0KIAogICAgIG1fY29udGV4dC0+YnVmZmVy
U3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIGRhdGEtPmJ5
dGVMZW5ndGgoKSwgZGF0YS0+ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShH
QzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjAxLDcgKzExNjQsNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZz
ZXQsIEFycgogICAgIH0KIAogICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0
YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+
YmFzZUFkZHJlc3MoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogR0MzRGVudW0gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDM0RlbnVtIHRhcmdldCkKQEAgLTEyMjEsNyArMTE4Myw2IEBAIEdDM0RlbnVtIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHJlc3VsdCA9IG1fY29udGV4dC0+Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI0MCw3ICsxMjAxLDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogICAg
IH0KICAgICBpZiAoIWNsZWFySWZDb21wb3NpdGVkKG1hc2spKQogICAgICAgICBtX2NvbnRleHQt
PmNsZWFyKG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKKyAgICBt
YXJrQ29udGV4dENoYW5nZWQoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNs
ZWFyQ29sb3IoR0MzRGZsb2F0IHIsIEdDM0RmbG9hdCBnLCBHQzNEZmxvYXQgYiwgR0MzRGZsb2F0
IGEpCkBAIC0xMjYwLDcgKzEyMjEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xl
YXJDb2xvcihHQzNEZmxvYXQgciwgR0MzRGZsb2F0IGcsIEdDM0RmbG9hdCBiLCBHQwogICAgIG1f
Y2xlYXJDb2xvclsyXSA9IGI7CiAgICAgbV9jbGVhckNvbG9yWzNdID0gYTsKICAgICBtX2NvbnRl
eHQtPmNsZWFyQ29sb3IociwgZywgYiwgYSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyRGVwdGgoR0Mz
RGZsb2F0IGRlcHRoKQpAQCAtMTI2OSw3ICsxMjI5LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmNsZWFyRGVwdGgoR0MzRGZsb2F0IGRlcHRoKQogICAgICAgICByZXR1cm47CiAgICAg
bV9jbGVhckRlcHRoID0gZGVwdGg7CiAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKGRlcHRoKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Y2xlYXJTdGVuY2lsKEdDM0RpbnQgcykKQEAgLTEyNzgsNyArMTIzNyw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhclN0ZW5jaWwoR0MzRGludCBzKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9jbGVhclN0ZW5jaWwgPSBzOwogICAgIG1fY29udGV4dC0+
Y2xlYXJTdGVuY2lsKHMpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVk
LCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEp
CkBAIC0xMjkwLDcgKzEyNDgsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JN
YXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0RibwogICAgIG1fY29s
b3JNYXNrWzJdID0gYmx1ZTsKICAgICBtX2NvbG9yTWFza1szXSA9IGFscGhhOwogICAgIG1fY29u
dGV4dC0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTEzMDIsNyArMTI1OSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb21waWxlU2hh
ZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgR0MzRGludCB2
YWx1ZTsKICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KG9iamVjdE9yWmVybyhzaGFkZXIpLCBH
cmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFUVVMsICZ2YWx1ZSk7CiAgICAgc2hhZGVyLT5z
ZXRWYWxpZCh2YWx1ZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rz
aXplaSB3aWR0aCwKQEAgLTEzMzksNyArMTI5NSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBk
YXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOwogICAgIHRleC0+c2V0TGV2
ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CiAgICAgdGV4LT5zZXRDb21wcmVzc2VkKCk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCkBAIC0xMzcx
LDcgKzEzMjYsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldgogICAgIGdyYXBoaWNzQ29udGV4
dDNEKCktPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRy
ZXNzKCkpOwogICAgIHRleC0+c2V0Q29tcHJlc3NlZCgpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0
ZVNldHRhYmxlVGV4Rm9ybWF0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gZm9y
bWF0KQpAQCAtMTQyNyw3ICsxMzgxLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNv
cHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICB9
CiAgICAgLy8gRklYTUU6IGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBub3QgY29tcGxldGUsIG5vbmUg
b2YgdGhlIGJlbG93IHNob3VsZCBiZSBleGVjdXRlZC4KICAgICB0ZXgtPnNldExldmVsSW5mbyh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQpAQCAtMTQ5OCw3ICsxNDUxLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJH
TEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVCdWZmZXIoKQpAQCAtMTU2Niw3
ICsxNTE4LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmN1bGxGYWNlKEdDM0RlbnVt
IG1vZGUpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
Y29udGV4dC0+Y3VsbEZhY2UobW9kZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZU9iamVjdChXZWJH
TE9iamVjdCogb2JqZWN0KQpAQCAtMTY1MCw3ICsxNjAxLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmRlcHRoRnVuYyhHQzNEZW51bSBmdW5jKQogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPmRlcHRoRnVuYyhmdW5jKTsKLSAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpCkBAIC0xNjU5LDcgKzE2MDks
NiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZs
YWcpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RlcHRoTWFzayA9IGZsYWc7CiAgICAgbV9jb250
ZXh0LT5kZXB0aE1hc2soZmxhZyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRoUmFuZ2UoR0MzRGZsb2F0
IHpOZWFyLCBHQzNEZmxvYXQgekZhcikKQEAgLTE2NzEsNyArMTYyMCw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkZXB0aFJhbmdlKEdDM0RmbG9hdCB6TmVhciwgR0MzRGZsb2F0IHpG
YXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5kZXB0aFJhbmdlKHpO
ZWFyLCB6RmFyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNjg1LDcg
KzE2MzMsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoU2hhZGVyKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgV2ViR0xTaGFkZXIqIHNoYQogICAgIH0KICAgICBtX2NvbnRleHQt
PmRldGFjaFNoYWRlcihvYmplY3RPclplcm8ocHJvZ3JhbSksIG9iamVjdE9yWmVybyhzaGFkZXIp
KTsKICAgICBzaGFkZXItPm9uRGV0YWNoZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRpc2FibGUoR0MzRGVudW0gY2FwKQpAQCAtMTY5NSw3ICsxNjQyLDYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogICAgIGlmIChjYXAg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVEVTVCkgewogICAgICAgICBtX3N0ZW5jaWxF
bmFibGVkID0gZmFsc2U7CiAgICAgICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKLSAgICAgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpIHsKQEAgLTE3MDQs
NyArMTY1MCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKEdDM0RlbnVt
IGNhcCkKICAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0U2Npc3NvckVuYWJsZWQobV9z
Y2lzc29yRW5hYmxlZCk7CiAgICAgfQogICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTcyMCwxMCArMTY2NSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlv
bkNvCiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VmVydGV4QXR0cmliU3RhdGUmIHN0
YXRlID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRl
eCk7CiAgICAgc3RhdGUuZW5hYmxlZCA9IGZhbHNlOwogCi0gICAgaWYgKGluZGV4ID4gMCB8fCBp
c0dMRVMyQ29tcGxpYW50KCkpIHsKKyAgICBpZiAoaW5kZXggPiAwIHx8IGlzR0xFUzJDb21wbGlh
bnQoKSkKICAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
OwotICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIH0KIH0KIAog
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShHQzNE
c2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQpAQCAtMTk1NSw3
ICsxODk4LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRHJhd0FycmF5
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnUKICAgICB9CiAKICAgICBpZiAoIWNv
dW50KSB7Ci0gICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKKyAgICAgICAg
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIwMDksNyArMTk1Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjCiAgICAgICAgIHJlc3Rv
cmVTdGF0ZXNBZnRlclZlcnRleEF0dHJpYjBTaW11bGF0aW9uKCk7CiAgICAgaWYgKCFpc0dMRVMy
TlBPVFN0cmljdCgpKQogICAgICAgICBjaGVja1RleHR1cmVDb21wbGV0ZW5lc3MoImRyYXdBcnJh
eXMiLCBmYWxzZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKHRydWUpOworICAgIG1h
cmtDb250ZXh0Q2hhbmdlZCgpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFs
aWRhdGVEcmF3RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBtb2Rl
LCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIHVuc2ln
bmVkJiBudW1FbGVtZW50cykKQEAgLTIwNDAsNyArMTk4Myw3IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IEdDM0RlCiAgICAgfQogCiAgICAgaWYgKCFjb3VudCkgewotICAgICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwodHJ1ZSk7CisgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMTAyLDcgKzIwNDUsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBj
b3VudCwgR0MzRGVudQogICAgICAgICByZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIwU2lt
dWxhdGlvbigpOwogICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgY2hlY2tU
ZXh0dXJlQ29tcGxldGVuZXNzKCJkcmF3RWxlbWVudHMiLCBmYWxzZSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKHRydWUpOworICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTIxMTIs
NyArMjA1NSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUoR0MzRGVudW0g
Y2FwKQogICAgIGlmIChjYXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVEVTVCkgewog
ICAgICAgICBtX3N0ZW5jaWxFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYXBwbHlTdGVuY2lsVGVz
dCgpOwotICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChjYXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1Jf
VEVTVCkgewpAQCAtMjEyMSw3ICsyMDYzLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmVuYWJsZShHQzNEZW51bSBjYXApCiAgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldFNj
aXNzb3JFbmFibGVkKG1fc2Npc3NvckVuYWJsZWQpOwogICAgIH0KICAgICBtX2NvbnRleHQtPmVu
YWJsZShjYXApOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWlu
dCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTM4LDcgKzIwNzksNiBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZAogICAgIHN0YXRlLmVuYWJsZWQgPSB0cnVlOwogCiAgICAgbV9jb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmlz
aCgpCkBAIC0yMTQ2LDcgKzIwODYsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Zmlu
aXNoKCkKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9j
b250ZXh0LT5maW5pc2goKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Zmx1c2goKQpAQCAtMjE1NCw3ICsyMDkz
LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZsdXNoKCkKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5mbHVzaCgpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJi
dWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMTg4LDcgKzIxMjYsNiBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBhdAogICAgIH0KICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+
c2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoYXR0YWNobWVudCwgYnVmZmVyKTsKICAg
ICBhcHBseVN0ZW5jaWxUZXN0KCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0
LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMjIyOCw3ICsyMTY1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWMKICAgICB9CiAg
ICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPnNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVy
KGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogICAgIGFwcGx5U3RlbmNp
bFRlc3QoKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC0yMjM2
LDcgKzIxNzIsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJvbnRGYWNlKEdDM0Rl
bnVtIG1vZGUpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZW5lcmF0ZU1pcG1h
cChHQzNEZW51bSB0YXJnZXQpCkBAIC0yMjczLDcgKzIyMDgsNiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogICAgICAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
SU5fRklMVEVSLCB0ZXgtPmdldE1pbkZpbHRlcigpKTsKICNlbmRpZgogICAgIHRleC0+Z2VuZXJh
dGVNaXBtYXBMZXZlbEluZm8oKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCiBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMzU4LDcgKzIyOTIsNiBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bQogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogCi0gICAgV2Vi
R0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBHQzNEaW50IHZhbHVlID0gMDsKICAg
ICBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7
CiAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfU0laRSkKQEAgLTI1
NTUsNyArMjQ4OCw2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQzNEZW51bSB0CiAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0NVQkVfTUFQX0ZBQ0U6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViR0xT
dGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBHQzNEaW50IHZhbHVl
ID0gMDsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7CkBAIC0yNTgzLDcgKzI1MTUsNiBA
QCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNvbnN0IGludCBpbnRaZXJvID0gMDsKLSAg
ICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIHN3aXRjaCAocG5hbWUpIHsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVEVYVFVSRToKICAgICAgICAgcmV0
dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKHBuYW1lKTsKQEAgLTI4MjIsNyArMjc1Myw2IEBA
IFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFs
aWRhdGVXZWJHTE9iamVjdCgiZ2V0UHJvZ3JhbVBhcmFtZXRlciIsIHByb2dyYW0pKQogICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAKLSAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywg
ZmFsc2UpOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgpAQCAtMjg1Miw3ICsyNzgy
LDYgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2coV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb24KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIGlmICghdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0UHJvZ3JhbUluZm9Mb2ciLCBwcm9ncmFt
KSkKICAgICAgICAgcmV0dXJuICIiOwotICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIGVuc3VyZU5vdE51bGwobV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xv
ZyhvYmplY3RPclplcm8ocHJvZ3JhbSkpKTsKIH0KIApAQCAtMjkwMiw3ICsyODMxLDYgQEAgV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KEdDM0RlbnVtIHRhcmdldCwgR0MKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7
CiAgICAgfQogCi0gICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBHQzNE
aW50IHZhbHVlID0gMDsKICAgICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSX1dJRFRIOgpAQCAtMjkyOCw3ICsyODU2LDYgQEAgV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdMU2hh
ZGVyKiBzaGFkZXIsIEdDM0QKICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRl
eHRMb3N0KCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldFNoYWRlclBhcmFtZXRlciIsIHNo
YWRlcikpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAgICBXZWJHTFN0YXRlUmVz
dG9yZXIodGhpcywgZmFsc2UpOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwogICAgIHN3aXRjaCAo
cG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgpAQCAt
Mjk1Miw3ICsyODc5LDYgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
SW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2QKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIGlmICghdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0U2hhZGVySW5mb0xv
ZyIsIHNoYWRlcikpCiAgICAgICAgIHJldHVybiAiIjsKLSAgICBXZWJHTFN0YXRlUmVzdG9yZXIo
dGhpcywgZmFsc2UpOwogICAgIHJldHVybiBlbnN1cmVOb3ROdWxsKG1fY29udGV4dC0+Z2V0U2hh
ZGVySW5mb0xvZyhvYmplY3RPclplcm8oc2hhZGVyKSkpOwogfQogCkBAIC0zMDQ4LDcgKzI5NzQs
NiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbgogICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gdmFs
aWRhdGVUZXh0dXJlQmluZGluZygiZ2V0VGV4UGFyYW1ldGVyIiwgdGFyZ2V0LCBmYWxzZSk7CiAg
ICAgaWYgKCF0ZXgpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAgICBXZWJHTFN0
YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwogICAgIHN3
aXRjaCAocG5hbWUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVI6CkBAIC0zMDgxLDcgKzMwMDYsNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAg
IH0KICAgICBHQzNEaW50IGxvY2F0aW9uID0gdW5pZm9ybUxvY2F0aW9uLT5sb2NhdGlvbigpOwog
Ci0gICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICBHQzNEZW51bSBiYXNl
VHlwZTsKICAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAgc3dpdGNoICh1bmlmb3JtTG9jYXRpb24t
PnR5cGUoKSkgewpAQCAtMzIxNCw3ICszMTM4LDYgQEAgUGFzc1JlZlB0cjxXZWJHTFVuaWZvcm1M
b2NhdGlvbj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0wK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCAiZ2V0VW5pZm9ybUxvY2F0aW9uIiwgInByb2dyYW0gbm90IGxpbmtlZCIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMs
IGZhbHNlKTsKICAgICBHQzNEaW50IHVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbmFtZSk7CiAgICAgaWYgKHVuaWZv
cm1Mb2NhdGlvbiA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMjQ2LDggKzMx
NjksNiBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRy
aWIoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYQogICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIAotICAgIFdlYkdMU3RhdGVSZXN0b3Jl
cih0aGlzLCBmYWxzZSk7Ci0KICAgICBpZiAoaW5kZXggPj0gbV9tYXhWZXJ0ZXhBdHRyaWJzKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCAiZ2V0VmVydGV4QXR0cmliIiwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBAIC0zMjg4LDcgKzMyMDksNiBAQCBsb25nIGxvbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgR0MzRHNpemVpcHRyIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXN1bHQpOwogfQogCkBAIC0zMzExLDcg
KzMyMzEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGludChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIG1vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0
LT5oaW50KHRhcmdldCwgbW9kZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogR0MzRGJvb2xlYW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc0J1ZmZlcihXZWJH
TEJ1ZmZlciogYnVmZmVyKQpAQCAtMzM5Myw3ICszMzEyLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmxpbmVXaWR0aChHQzNEZmxvYXQgd2lkdGgpCiAgICAgaWYgKGlzQ29udGV4dExv
c3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+bGluZVdpZHRoKHdpZHRoKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTM0MTIsNyArMzMzMCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVj
CiAKICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG9iamVjdE9yWmVybyhwcm9ncmFtKSk7CiAg
ICAgcHJvZ3JhbS0+aW5jcmVhc2VMaW5rQ291bnQoKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9y
ZWkoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pCkBAIC0zNDQyLDcgKzMzNTksNiBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQgcGFyYW0pCiAgICAgICAgICAgICBlbHNlIC8vIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBB
Q0tfQUxJR05NRU5UOgogICAgICAgICAgICAgICAgIG1fdW5wYWNrQWxpZ25tZW50ID0gcGFyYW07
CiAgICAgICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7Ci0gICAg
ICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUsICJwaXhlbFN0b3JlaSIsICJpbnZhbGlkIHBhcmFtZXRlciBmb3IgYWxpZ25tZW50
Iik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDU5LDcgKzMzNzUsNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6cG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxv
YXQgdW5pdHMpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmll
dyogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikKQEAgLTM1NTAsNyArMzQ2NSw2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKQEAgLTM1NTgsNyArMzQ3Miw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQogICAgIGlmIChpc0NvbnRl
eHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnJlbGVhc2VTaGFkZXJD
b21waWxlcigpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCkKQEAgLTM1ODUsMTIgKzM0OTgsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm4K
ICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRJbnRlcm5hbEZvcm1hdChpbnRlcm5h
bGZvcm1hdCk7CiAgICAgICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZy0+c2V0SXNWYWxpZCh0cnVl
KTsKICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRTaXplKHdpZHRoLCBoZWlnaHQp
OwotICAgICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5y
ZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgRXh0ZW5zaW9uczNEOjpERVBUSDI0X1NURU5DSUw4
LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRTaXpl
KHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmctPnNldElzVmFs
aWQoaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSk7CkBAIC0zNjA4LDcgKzM1MTksNiBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGZsb2F0IHZhbHVlLCBH
QzNEYm9vbGVhbiBpbnZlcnQpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCkKQEAgLTM2MTgsNyArMzUyOCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzCiAgICAgaWYgKCF2YWxpZGF0ZVNpemUoInNjaXNzb3IiLCB3aWR0aCwgaGVpZ2h0KSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM2MzEsNyArMzU0MCw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
IHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgICAgIHJldHVybjsKICAgICBzaGFkZXIt
PnNldFNvdXJjZShzdHJpbmcpOwogICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKG9iamVjdE9y
WmVybyhzaGFkZXIpLCBzdHJpbmdXaXRob3V0Q29tbWVudHMpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVu
Y2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKQEAgLTM2
NDUsNyArMzU1Myw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsRnVuYyhH
QzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzCiAgICAgbV9zdGVuY2lsRnVu
Y01hc2sgPSBtYXNrOwogICAgIG1fc3RlbmNpbEZ1bmNNYXNrQmFjayA9IG1hc2s7CiAgICAgbV9j
b250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVu
Y2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVm
LCBHQzNEdWludCBtYXNrKQpAQCAtMzY3NCw3ICszNTgxLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVu
YywgR0MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbnRleHQtPnN0ZW5jaWxGdW5j
U2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3RlbmNpbE1h
c2soR0MzRHVpbnQgbWFzaykKQEAgLTM2ODQsNyArMzU5MCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogICAgIG1fc3RlbmNpbE1hc2sg
PSBtYXNrOwogICAgIG1fc3RlbmNpbE1hc2tCYWNrID0gbWFzazsKICAgICBtX2NvbnRleHQtPnN0
ZW5jaWxNYXNrKG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0Rl
bnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCkBAIC0zNzA3LDcgKzM2MTIsNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNE
dWludCBtYXNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fY29udGV4dC0+c3RlbmNp
bE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3RlbmNpbE9wKEdDM0Rl
bnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKQEAgLTM3MTUsNyArMzYx
OSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFp
bCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6
cGFzcyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdD
M0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKQEAgLTM3MjMsMTIg
KzM2MjYsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxPcFNlcGFyYXRl
KEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0QKICAgICBpZiAoaXNDb250ZXh0TG9z
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShm
YWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEQmFzZShH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0
dXJuZWQKKyAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5l
ZC4KICAgICBlYyA9IDA7CiAgICAgV2ViR0xUZXh0dXJlKiB0ZXggPSB2YWxpZGF0ZVRleHR1cmVC
aW5kaW5nKCJ0ZXhJbWFnZTJEIiwgdGFyZ2V0LCB0cnVlKTsKICAgICBBU1NFUlQodmFsaWRhdGVU
ZXhGdW5jUGFyYW1ldGVycygidGV4SW1hZ2UyRCIsIE5vdFRleFN1YkltYWdlMkQsIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSkpOwpAQCAtMzc1Myw3ICszNjU1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eEltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwog
ICAgIH0KICAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgdHlwZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRJbXBsKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
M0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VIdG1sRG9tU291cmNlIGRvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM5MzMsNyArMzgzNCw2IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0KICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZh
cy0+YnVmZmVyKCk7CiAgICAgICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5jb3B5VG9QbGF0Zm9y
bVRleHR1cmUoKm1fY29udGV4dC5nZXQoKSwgdGV4dHVyZS0+b2JqZWN0KCksIGludGVybmFsZm9y
bWF0LCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIG1fdW5wYWNrRmxpcFkpKSB7CiAgICAgICAg
ICAgICB0ZXh0dXJlLT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgdHlwZSk7Ci0gICAgICAgICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzk4MCw3ICszODgwLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bQogICAgICAgICAmJiAhbGV2ZWwpIHsKICAgICAgICAgaWYgKHZpZGVvLT5jb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlLT5vYmplY3QoKSwg
bGV2ZWwsIHR5cGUsIGludGVybmFsZm9ybWF0LCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEsIG1f
dW5wYWNrRmxpcFkpKSB7CiAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRMZXZlbEluZm8odGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRl
b0hlaWdodCgpLCB0eXBlKTsKLSAgICAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00MDI5LDcg
KzM5MjgsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4UGFyYW1ldGVyKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbAogICAgICAgICB0ZXgtPnNldFBhcmFt
ZXRlcmkocG5hbWUsIHBhcmFtaSk7CiAgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lLCBwYXJhbWkpOwogICAgIH0KLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4UGFyYW1ldGVy
ZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pCkBAIC00
MDYyLDcgKzM5NjAsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2Uy
REJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQwogICAgIEFTU0VSVCh0ZXgt
PmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpID09IGZvcm1hdCk7CiAgICAgQVNTRVJU
KHRleC0+Z2V0VHlwZSh0YXJnZXQsIGxldmVsKSA9PSB0eXBlKTsKICAgICBtX2NvbnRleHQtPnRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJESW1w
bChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGlu
dCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlKiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSBkb21Tb3VyY2UsIGJvb2wgZmxp
cFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MjA4LDcg
KzQxMDUsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRAogICAgIH0KIAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTFmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4KTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJh
eSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MjE4LDcgKzQxMTQsNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEZsbwogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0x
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0aCgpLCB2LT5kYXRhKCkpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
R0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MjI4
LDcgKzQxMjMsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDMwogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUsIHYp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBHQzNEaW50IHgsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDI0OCw3ICs0MTQyLDYg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaShjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0QKICAgICB9CiAKICAgICBtX2NvbnRleHQtPnVuaWZv
cm0xaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNl
cHRpb25Db2RlJiBlYykKQEAgLTQyNjcsNyArNDE2MCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
SW50CiAgICAgICAgIH0KIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdi0+bGVuZ3RoKCksIHYtPmRhdGEoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEaW50KiB2LCBHQzNE
c2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00Mjg1LDcgKzQxNzcsNiBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDMwogICAgICAgICB9CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0x
aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUsIHYpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0Mz
RGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDMwMCw3ICs0MTkxLDYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDM0QKICAgICB9CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgeCwgeSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtNDMxMCw3ICs0MjAwLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG8K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDIsIHYtPmRhdGEoKSk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEZmxvYXQq
IHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQzMjAsNyArNDIwOSw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDIsIHYpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MzM1LDcgKzQy
MjMsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpKGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRAogICAgIH0KIAogICAgIG1fY29udGV4dC0+
dW5pZm9ybTJpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5KTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkq
IHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDM0NSw3ICs0MjMyLDYgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBJbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5ndGgoKSAvIDIsIHYtPmRhdGEoKSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQzNEaW50KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MzU1
LDcgKzQyNDEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDMwogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyAy
LCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC00MzcwLDcgKzQyNTUsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0Mz
RAogICAgIH0KIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB4LCB5LCB6KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC00MzgwLDcgKzQyNjQsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsbwogICAgICAgICByZXR1
cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYt
Pmxlbmd0aCgpIC8gMywgdi0+ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RmbG9hdCogdiwgR0MzRHNpemVp
IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDM5MCw3ICs0MjczLDYgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQzMKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8gMywgdik7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEaW50IHosIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDQwNSw3ICs0Mjg3
LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaShjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0QKICAgICB9CiAKICAgICBtX2NvbnRleHQtPnVu
aWZvcm0zaShsb2NhdGlvbi0+bG9jYXRpb24oKSwgeCwgeSwgeik7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5
KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ0MTUsNyArNDI5Niw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgSW50CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyAzLCB2LT5kYXRhKCkpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0MzRGludCogdiwgR0MzRHNpemVpIHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDQy
NSw3ICs0MzA1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzMKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBzaXplIC8g
Mywgdik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0Rm
bG9hdCB3LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ0NDAsNyArNDMxOSw2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQzNECiAgICAgfQogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHgsIHksIHosIHcpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNl
cHRpb25Db2RlJiBlYykKQEAgLTQ0NTAsNyArNDMyOCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdi0+bGVuZ3RoKCkgLyA0LCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGZs
b2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NDYwLDcgKzQz
MzcsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDMwogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHNpemUgLyA0LCB2KTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3LCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTQ0NzUsNyArNDM1MSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNE
CiAgICAgfQogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24tPmxvY2F0aW9uKCks
IHgsIHksIHosIHcpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC00NDg1LDcgKzQzNjAsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRp
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludAogICAgICAgICByZXR1
cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYt
Pmxlbmd0aCgpIC8gNCwgdi0+ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0RpbnQqIHYsIEdDM0RzaXplaSBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ0OTUsNyArNDM2OSw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0MzCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRp
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgc2l6ZSAvIDQsIHYpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
NDUwNCw3ICs0Mzc3LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW8KICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0
cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxl
bmd0aCgpIC8gNCwgdHJhbnNwb3NlLCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHYsIEdDM0RzaXplaSBzaXplLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTQ1MTMsNyArNDM4NSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvCiAgICAg
aWYgKGlzQ29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUsIDQpKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLT5s
b2NhdGlvbigpLCBzaXplIC8gNCwgdHJhbnNwb3NlLCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ1
MjIsNyArNDM5Myw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvCiAgICAgaWYgKGlzQ29udGV4
dExvc3QoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJp
eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDkpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2LT5sZW5n
dGgoKSAvIDksIHRyYW5zcG9zZSwgdi0+ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC00NTMxLDcgKzQ0MDEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpbwogICAgIGlm
IChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplLCA5KSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgc2l6ZSAvIDksIHRyYW5zcG9zZSwgdik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NTQw
LDcgKzQ0MDksNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRm
dihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpbwogICAgIGlmIChpc0NvbnRleHRM
b3N0KCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNikpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYtPmxlbmd0
aCgpIC8gMTYsIHRyYW5zcG9zZSwgdi0+ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2LCBHQzNEc2l6ZWkgc2l6ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC00NTQ5LDcgKzQ0MTcsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpbwogICAgIGlm
IChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplLCAxNikpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxv
Y2F0aW9uKCksIHNpemUgLyAxNiwgdHJhbnNwb3NlLCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJv
Z3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDU2Miw3
ICs0NDI5LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcHJvZ3JhbSA9IDA7
CiAgICAgaWYgKHByb2dyYW0gJiYgIXByb2dyYW0tPmdldExpbmtTdGF0dXMoKSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04s
ICJ1c2VQcm9ncmFtIiwgInByb2dyYW0gbm90IHZhbGlkIik7Ci0gICAgICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1f
Y3VycmVudFByb2dyYW0gIT0gcHJvZ3JhbSkgewpAQCAtNDU3Myw3ICs0NDM5LDYgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgaWYgKHByb2dyYW0pCiAgICAgICAgICAgICBwcm9n
cmFtLT5vbkF0dGFjaGVkKCk7CiAgICAgfQotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0o
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ1ODIsNyArNDQ0
Nyw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dyYW0oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8
fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgidmFsaWRhdGVQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShvYmplY3RPclplcm8o
cHJvZ3JhbSkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHYwKQpAQCAtNDY4Nyw3ICs0NTUxLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwg
R0MKIAogICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdC0+c2V0VmVydGV4QXR0cmliU3RhdGUo
aW5kZXgsIGJ5dGVzUGVyRWxlbWVudCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBz
dGF0aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpLCBtX2JvdW5kQXJyYXlCdWZmZXIpOwogICAg
IG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFs
aXplZCwgc3RyaWRlLCBzdGF0aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCkKQEAgLTQ2OTcsNyArNDU2MCw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNECiAgICAgaWYgKCF2YWxpZGF0ZVNpemUoInZpZXdwb3J0Iiwgd2lkdGgsIGhlaWdodCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpmb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6TG9zdENvbnRleHRNb2RlIG1vZGUpCkBAIC01NzUxLDcgKzU2MTMsNiBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliZkltcGwoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBHQzNEdWludAogICAgICAgICAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRl
eCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKICAgICB9CiAgICAgVmVydGV4QXR0
cmliVmFsdWUmIGF0dHJpYlZhbHVlID0gbV92ZXJ0ZXhBdHRyaWJWYWx1ZVtpbmRleF07CiAgICAg
YXR0cmliVmFsdWUudmFsdWVbMF0gPSB2MDsKQEAgLTU4MDMsNyArNTY2NCw2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJmdkltcGwoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEdWluCiAgICAgICAgICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihp
bmRleCwgdik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogICAgIH0KICAgICBWZXJ0ZXhBdHRyaWJWYWx1ZSYg
YXR0cmliVmFsdWUgPSBtX3ZlcnRleEF0dHJpYlZhbHVlW2luZGV4XTsKICAgICBhdHRyaWJWYWx1
ZS5pbml0VmFsdWUoKTsKQEAgLTYxNTEsNyArNjAxMSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3Qs
IEdDCiAgICAgfQogCiAgICAgaWYgKCFwcmltY291bnQpIHsKLSAgICAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKHRydWUpOworICAgICAgICBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjE2OCw3ICs2MDI4LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0MzRGVudW0gbW9kZSwgR0MzRGludCBm
aXJzdCwgR0MKICAgICAgICAgcmVzdG9yZVN0YXRlc0FmdGVyVmVydGV4QXR0cmliMFNpbXVsYXRp
b24oKTsKICAgICBpZiAoIWlzR0xFUzJOUE9UU3RyaWN0KCkpCiAgICAgICAgIGNoZWNrVGV4dHVy
ZUNvbXBsZXRlbmVzcygiZHJhd0FycmF5c0luc3RhbmNlZCIsIGZhbHNlKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CisgICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0MzRGVu
dW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQpAQCAtNjE4Myw3ICs2MDQzLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNE
c2l6ZWkgY291bnQKICAgICB9CiAKICAgICBpZiAoIXByaW1jb3VudCkgewotICAgICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CisgICAgICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MjAyLDcgKzYwNjIsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUs
IEdDM0RzaXplaSBjb3VudAogICAgICAgICByZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIw
U2ltdWxhdGlvbigpOwogICAgIGlmICghaXNHTEVTMk5QT1RTdHJpY3QoKSkKICAgICAgICAgY2hl
Y2tUZXh0dXJlQ29tcGxldGVuZXNzKCJkcmF3RWxlbWVudHNJbnN0YW5jZWQiLCBmYWxzZSk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKHRydWUpOworICAgIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliRGl2aXNv
cihHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNmFkYWMwZWZlOTIy
ZjQxNGFmZjY1ZDkyZDAyNTJmY2MwZGY4NmZkYS4uMmNlZjlmN2JkMjY0NzI2M2E5MDEzYzIxOTFl
MTMxYjJhYjgzNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM1MywxMSArMzUzLDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgdm9pZCBtYXJrQ29udGV4dENo
YW5nZWQoKTsKLSAgICB2b2lkIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChib29sIGNoYW5nZWQp
Ci0gICAgewotICAgICAgICBpZiAoY2hhbmdlZCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0Q2hh
bmdlZCgpOwotICAgIH0KIAogICAgIC8vIFF1ZXJ5IHdoZXRoZXIgaXQgaXMgYnVpbHQgb24gdG9w
IG9mIGNvbXBsaWFudCBHTEVTMiBpbXBsZW1lbnRhdGlvbi4KICAgICBib29sIGlzR0xFUzJDb21w
bGlhbnQoKSB7IHJldHVybiBtX2lzR0xFUzJDb21wbGlhbnQ7IH0KQEAgLTc5Myw4ICs3ODgsNiBA
QCBwcml2YXRlOgogCiAgICAgLy8gQ2hlY2sgaWYgRVhUX2RyYXdfYnVmZmVycyBleHRlbnNpb24g
aXMgc3VwcG9ydGVkIGFuZCBpZiBpdCBzYXRpc2ZpZXMgdGhlIFdlYkdMIHJlcXVpcmVtZW50cy4K
ICAgICBib29sIHN1cHBvcnRzRHJhd0J1ZmZlcnMoKTsKLQotICAgIGZyaWVuZCBjbGFzcyBXZWJH
TFN0YXRlUmVzdG9yZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="247729"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>