<?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>152932</bug_id>
          
          <creation_ts>2016-01-08 15:20:45 -0800</creation_ts>
          <short_desc>Add DisplayList hooks into GraphicsContext</short_desc>
          <delta_ts>2016-01-08 17:52:36 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>152808</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154032</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 15:20:45 -0800</bug_when>
    <thetext>Add DisplayList hooks into GraphicsContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154035</commentid>
    <comment_count>1</comment_count>
      <attachid>268593</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 15:25:20 -0800</bug_when>
    <thetext>Created attachment 268593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154038</commentid>
    <comment_count>2</comment_count>
      <attachid>268594</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 15:28:33 -0800</bug_when>
    <thetext>Created attachment 268594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154080</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-08 17:42:16 -0800</bug_when>
    <thetext>https://trac.webkit.org/r194814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154081</commentid>
    <comment_count>4</comment_count>
      <attachid>268594</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-01-08 17:52:36 -0800</bug_when>
    <thetext>Comment on attachment 268594
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:516
&gt;      clearPlatformShadow();

Instead of changing all the GraphicsContext functions, can&apos;t we change for example clearPlatformShadow() to be like this:

void GraphicsContext::clearPlatformShadow() { return isRecording() ? m_displayListRecorder-&gt;clearShadow() : NativeClearPlatformShadow(); }

void GraphicsContext::NativeClearPlatformShadow()
{
    if (paintingDisabled())
        return;
    CGContextSetShadowWithColor(platformContext(), CGSizeZero, 0, 0);
}</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268593</attachid>
            <date>2016-01-08 15:25:20 -0800</date>
            <delta_ts>2016-01-08 15:28:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152932-20160108152448.patch</filename>
            <type>text/plain</type>
            <size>26251</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyNjU3MzM2ODM3OWE5
MGI2ZmI3ZDEyMDNiODExZjFmMDRlODdhOC4uNDYxNzM0MjlhYTY5MDkwOTY4N2VkYTJhYTIyNjU3
Y2RjMTBmMjBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDE2LTAxLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBEaXNwbGF5
TGlzdCBob29rcyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyOTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBob29rcyBpbnRvIEdyYXBoaWNzQ29udGV4
dCB0aGF0IGNhbGwgaW50byB0aGUgRGlzcGxheUxpc3RSZWNvcmRlciBpZiB0aGVyZQorICAgICAg
ICBpcyBvbmUuCisgICAgICAgIAorICAgICAgICBSZW5hbWUgc2l6ZSgpIHRvIHNvbWV0aGluZyBs
ZXNzIGFtYmlndW91cy4KKyAgICAgICAgCisgICAgICAgIE91dC1vZi1saW5lIHNvbWUgRGlzcGxh
eUxpc3QgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIGhlYWRlciBkb2Vzbid0IG5lZWQgdG8gc2VlCisg
ICAgICAgIERpc3BsYXlMaXN0SXRlbXMuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlv
bkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERy
YXdMdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YXBw
bHlEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmFwcGx5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREaXNwbGF5TGlzdFJl
Y29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNSZWNvcmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5jZU1hc2spOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6cmVtb3ZlSXRlbXNGcm9tSW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVtQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjbGVhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNp
emUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpyZW1vdmVJdGVtc0Zyb21JbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6aXRlbUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCisyMDE2LTAxLTA4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIENvbnNpZGVy
IHBhaW50aW5nIHRvIGJlIGRpc2FibGVkIG9uIGEgR3JhcGhpY3NDb250ZXh0IHdpdGggbm8gcGxh
dGZvcm0gZGF0YSwgYW5kIG1ha2UgdXBkYXRpbmdDb250cm9sVGludHMoKSBpbW11dGFibGUgc3Rh
dGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjky
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCA2MTJlNTYyM2Q2OWFlN2YyMDA3NDhlNjAwMzU5OTkwMTY5MzQxNjg0
Li5jMzcxYjg0YTM4MzhmZjMxODY2NzY5N2Q0NTVkOWU2ZGU2MDE0YjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCkBAIC0zODMsNiArMzg0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
YXZlKCkKIAogICAgIG1fc3RhY2suYXBwZW5kKG1fc3RhdGUpOwogCisgICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zYXZlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBzYXZlUGxhdGZvcm1TdGF0ZSgpOwogfQogCkBAIC00MDMs
NiArNDA5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkKICAgICBpZiAobV9z
dGFjay5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3RhY2suY2xlYXIoKTsKIAorICAgIGlmIChpc1Jl
Y29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+cmVzdG9yZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0K
IApAQCAtNDI5LDEyICs0NDAsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogewogICAg
IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyh0aGlja25l
c3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0eWxlOworICAgIGlmIChp
c1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKHN0eWxlKTsK
IH0KIApAQCAtNDQzLDYgKzQ2MywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBjb2xv
cjsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBudWxscHRyOworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIApAQCAtNDUxLDYgKzQ3NSwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvcgogICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zm
c2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgbV9zdGF0ZS5zaGFkb3dD
b2xvciA9IGNvbG9yOworI2lmIFVTRShDRykKKyAgICBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lS
YWRpdXMgPSBmYWxzZTsKKyNlbmRpZgorICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgc2V0
UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CiB9CiAKQEAgLTQ2Miw2ICs0OTMs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5z
aGFkb3dzVXNlTGVnYWN5UmFkaXVzID0gdHJ1ZTsKICNlbmRpZgorICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CiB9CiAK
QEAgLTQ3MCw2ICs1MDUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
ICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hh
ZG93Qmx1ciA9IDA7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7CisjaWYgVVNF
KENHKQorICAgIG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOworI2VuZGlm
CisKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmNsZWFyU2hhZG93KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2xlYXJQbGF0
Zm9ybVNoYWRvdygpOwogfQogCkBAIC01MDUsMjEgKzU0OCw1MyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX3N0YXRlLmZpbGxD
b2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBt
X3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKKworICAgIGlmIChpc1JlY29yZGluZygpKSB7
CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvcik7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKQoreworICAgIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAg
IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOworCisgICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFz
KHNob3VsZEFudGlhbGlhcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKQogewogICAgIG1fc3RhdGUuc2hvdWxk
U21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhGb250czsKKyAgICAKKyAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250
cyhzaG91bGRTbW9vdGhGb250cyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
Cit7CisgICAgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHM7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiAgICAgbV9zdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKQEAgLTUyNyw0NiAr
NjAyLDc2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBzZXRQbGF0Zm9ybUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQoYm9vbCBhbnRpYWxpYXNlZEZvbnREaWxh
dGlvbkVuYWJsZWQpCiB7CiAgICAgbV9zdGF0ZS5hbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJs
ZWQgPSBhbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQ7CisgICAgaWYgKGlzUmVjb3JkaW5n
KCkpCisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZENoYW5n
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7
CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKKyAgICBpZiAo
aXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBw
YXR0ZXJuKQogewogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0
YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKKyAgICBpZiAoaXNSZWNvcmRpbmco
KSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQog
ewogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBt
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOworICAgIGlmIChpc1JlY29yZGluZygpKQor
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkKK3sKKyAgICBtX3N0YXRl
LmZpbGxSdWxlID0gZmlsbFJ1bGU7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5maWxs
R3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewor
ICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgKyttX3Ry
YW5zcGFyZW5jeUNvdW50OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKQogeworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgQVNTRVJUKG1f
dHJhbnNwYXJlbmN5Q291bnQgPiAwKTsKICAgICAtLW1fdHJhbnNwYXJlbmN5Q291bnQ7CkBAIC01
ODUsNiArNjkwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgY29uc3QgRm9udCYgZm9uCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
KyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGJ1ZmZlciwg
ZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZvbnRDYXNjYWRl
LmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7
CiB9CiAKQEAgLTY1MSw2ICs3NjEsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnMKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRp
b24pOwpAQCAtNjYxLDYgKzc3NiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLAogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChpc1JlY29y
ZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlv
bkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgaW1hZ2UuZHJhd1RpbGVk
KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9i
bGVuZE1vZGUpOwogfQpAQCAtNjcxLDYgKzc5MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlm
IChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCiAgICAgICAgIGRy
YXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwpAQCAtNzY2LDYgKzg5MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdp
bmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUgPSBtb2RlOwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgc2V0UGxhdGZvcm1U
ZXh0RHJhd2luZ01vZGUobW9kZSk7CiB9CiAKQEAgLTc3Myw2ICs5MDMsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdy
YWRpZW50KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
KworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZmlsbFJlY3QocmVjdCwgZ3JhZGllbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0KIApAQCAtNzgxLDYgKzkxNywxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbXBvcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVy
YXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCwgYmxlbmRNb2RlKTsKICAgICBmaWxsUmVjdChyZWN0LCBjb2xvcik7CkBAIC03OTIsNiArOTMz
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5k
TW9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAocmVjdC5pc1JvdW5kZWQo
KSkgewogICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKCks
IGJsZW5kTW9kZSk7CiAgICAgICAgIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9y
KTsKQEAgLTgzMCw2ICs5NzYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBtX3N0YXRlLmFscGhh
ID0gYWxwaGE7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxw
aGFDaGFuZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNldFBsYXRmb3JtQWxwaGEo
YWxwaGEpOwogfQogCkBAIC04MzcsOSArOTg3LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9u
CiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsK
ICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBpZiAoaXNSZWNvcmRpbmco
KSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNvbXBv
c2l0ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spCit7CisgICAgbV9zdGF0
ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOworICAgIGlmIChpc1JlY29y
ZGluZygpKQorICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7Cit9CisK
ICNpZiAhVVNFKENHKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdhbnQgdG8gZ28gcHVzaCB0
aGUgZHJhd2luZyBtb2RlIGludG8geW91ciBuYXRpdmUgY29udGV4dCBpbW1lZGlhdGVseS4KIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncykKQEAgLTkzNCw2ICsxMDk1LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAg
ICBzY2FsZShGbG9hdFNpemUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7
CisKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgcGxhdGZvcm1BcHBseURldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKTsKIH0KIApAQCAtMTAxMyw0ICsxMTgwLDE4IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQo
Y29uc3QgRmxvCiAgICAgcmV0dXJuIEZsb2F0UmVjdChvcmlnaW4ueCgpLCBvcmlnaW4ueSgpLCB3
aWR0aCwgdGhpY2tuZXNzKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQoreworICAgIHNldFBsYXRmb3JtU2hh
ZG93KHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Q29s
b3IpOworICAgIHNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKHN0YXRlLnN0cm9rZVRoaWNrbmVz
cyk7CisgICAgc2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2Rl
KTsKKyAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKHN0YXRlLnN0cm9rZUNvbG9yKTsKKyAgICBz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihzdGF0ZS5maWxsQ29sb3IpOworICAgIHNldFBsYXRmb3JtU3Ry
b2tlU3R5bGUoc3RhdGUuc3Ryb2tlU3R5bGUpOworICAgIHNldFBsYXRmb3JtQWxwaGEoc3RhdGUu
YWxwaGEpOworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKHN0YXRlLmNvbXBvc2l0
ZU9wZXJhdG9yLCBzdGF0ZS5ibGVuZE1vZGUpOworICAgIHNldFBsYXRmb3JtU2hvdWxkQW50aWFs
aWFzKHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhG
b250cyhzdGF0ZS5zaG91bGRTbW9vdGhGb250cyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNTY0MGMyNTBk
Njc5YTFkZjI2YTVkYTYzYjZmMzBhYjRkNDQyYTA4NS4uZTYzNzdiODBkOTdmNGNjZTE5MjNlMzRl
MWYxODdlZjU0ZDBiMWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTExMCw2ICsxMTAsMTAgQEAgZW51bSBJbnRlcnBv
bGF0aW9uUXVhbGl0eSB7CiAgICAgSW50ZXJwb2xhdGlvbkhpZ2gKIH07CiAKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CitjbGFzcyBSZWNvcmRlcjsKK30KKwogc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSgpCiAgICAgICAgIDogc2hvdWxkQW50
aWFsaWFzKHRydWUpCkBAIC0yNDYsNiArMjUwLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQo
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGljc0NvbnRleHQoKSA9IGRlZmF1
bHQ7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dCgpOwogICAgIAogICAgIGVu
dW0gY2xhc3MgTm9uUGFpbnRpbmdSZWFzb25zIHsKQEAgLTI1Niw5ICsyNjEsMTIgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3Jt
Q29udGV4dCgpIGNvbnN0OwogCi0gICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZGF0YTsgfQorICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0
dXJuICFtX2RhdGEgJiYgIWlzUmVjb3JkaW5nKCk7IH0KICAgICBib29sIHVwZGF0aW5nQ29udHJv
bFRpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25QYWludGluZ1JlYXNvbnMgPT0gTm9uUGFpbnRp
bmdSZWFzb25zOjpVcGRhdGluZ0NvbnRyb2xUaW50czsgfQogCisgICAgdm9pZCBzZXREaXNwbGF5
TGlzdFJlY29yZGVyKERpc3BsYXlMaXN0OjpSZWNvcmRlciogcmVjb3JkZXIpIHsgbV9kaXNwbGF5
TGlzdFJlY29yZGVyID0gcmVjb3JkZXI7IH0KKyAgICBib29sIGlzUmVjb3JkaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5TGlzdFJlY29yZGVyOyB9CisKICAgICB2b2lkIHNldFN0cm9rZVRo
aWNrbmVzcyhmbG9hdCk7CiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KIApAQCAtMjc0LDcgKzI4Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJik7CiAgICAgR3Jh
ZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VHcmFk
aWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBtX3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IH0KKyAgICB2b2lkIHNldEZpbGxSdWxlKFdp
bmRSdWxlKTsKICAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
ZmlsbFJ1bGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0
IENvbG9yJik7CkBAIC0yODYsNyArMjk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJik7CiAgICAgR3JhZGllbnQqIGZp
bGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9
CiAKLSAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpIHsgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOyB9CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhi
b29sKTsKICAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCk7CkBAIC0zMDAsNyArMzA4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVj
YXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAg
IC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gt
cXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRl
LnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
czsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wpOwogICAg
IGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0KIAogICAgIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTM5Myw2ICs0
MDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mICwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAgICAgdm9pZCBkcmF3Qmlk
aVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6
RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIAorICAgIHZvaWQgYXBwbHlTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYpOworCiAgICAgZW51bSBSb3VuZGluZ01vZGUgewogICAgICAg
ICBSb3VuZEFsbFNpZGVzLAogICAgICAgICBSb3VuZE9yaWdpbkFuZERpbWVuc2lvbnMKQEAgLTQ1
Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvcjsgfQogICAg
IEJsZW5kTW9kZSBibGVuZE1vZGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmJs
ZW5kTW9kZTsgfQogCi0gICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1p
bmFuY2VNYXNrKSB7IG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFz
azsgfQorICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCk7CiAgICAgYm9vbCBkcmF3
THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7
IH0KIAogICAgIC8vIFRoaXMgY2xpcCBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgYnkgPGNhbnZhcz4g
Y29kZS4gSXQgYWxsb3dzCkBAIC02MDIsNiArNjEyLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJl
Y3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsICBDb2xvciYpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGEgeyBudWxscHRyIH07CisgICAgRGlz
cGxheUxpc3Q6OlJlY29yZGVyKiBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIgeyBudWxscHRyIH07CiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRlOwogICAgIFZlY3RvcjxHcmFwaGljc0Nv
bnRleHRTdGF0ZSwgMT4gbV9zdGFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDc5
YmZkY2Q3MDkzOWY0NjYyNjA3N2Y0OTJhZTZiZmU2ZTA5NWZiNjYuLmZiOWZkMzA5NWNkOTU0MDM2
NWZkODJiYWRlY2NmZjZlMzJkMTEyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAt
NDgsNiArNDgsMTYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgpIGNvbnN0CiB9CiAjZW5kaWYK
IAordm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIoKQoreworICAgIG1fbGlzdC5jbGVhcigpOworfQor
Cit2b2lkIERpc3BsYXlMaXN0OjpyZW1vdmVJdGVtc0Zyb21JbmRleChzaXplX3QgaW5kZXgpCit7
CisgICAgbV9saXN0LnJlc2l6ZShpbmRleCk7Cit9CisKIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAo
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91
cCh0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDY5NTM2ZDI5NzBiMGYxYmM2ZTIzYWI2
ZjU1OWU5ZGExYzA2ZTE0ZjYuLjFlMTgxM2Y5MDczNWNmMWY1ODM3MTBhZjg1Mjg0ODgzZGRhNmUw
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC01OCwxNCArNTgsMTAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9saXN0W2luZGV4XS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBjbGVhcigpIHsgbV9saXN0LmNsZWFyKCk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGlzdC5zaXplKCk7IH0KLQotICAgIHZvaWQgcmVtb3ZlSXRlbXNGcm9tSW5kZXgo
c2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgbV9saXN0LnJlc2l6ZShpbmRleCk7Ci0gICAg
fQorICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHJlbW92ZUl0ZW1zRnJvbUluZGV4KHNpemVf
dCk7CiAKKyAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9saXN0LnNpemUo
KTsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0OwogCiAjaWYgIWRlZmluZWQoTkRF
QlVHKSB8fCAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKaW5kZXggNWFmYzEwMzY1ZGUxMmY4ODk5MjZmNTA3ZGNlOTQxYWUyMzYxZDJmNC4uNzg5
YTg0NmY4ZDkyNjg4OTU2Nzg4NzFhM2VlODA5MTZmNjU1MTQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVjb3Jk
ZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lCiB2b2lkIFJlY29yZGVyOjpzYXZlKCkKIHsKICAgICBhcHBlbmRJdGVtKFNh
dmU6OmNyZWF0ZSgpKTsKLSAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0
KCkuY2xvbmVGb3JTYXZlKG1fZGlzcGxheUxpc3Quc2l6ZSgpIC0gMSkpOworICAgIG1fc3RhdGVT
dGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUobV9kaXNwbGF5TGlz
dC5pdGVtQ291bnQoKSAtIDEpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCkBAIC0x
NjgsNyArMTY4LDcgQEAgdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiAgICAgCiAgICAgaWYgKHNh
dmVJbmRleCkgewogICAgICAgICBTYXZlJiBzYXZlSXRlbSA9IGRvd25jYXN0PFNhdmU+KG1fZGlz
cGxheUxpc3QuaXRlbUF0KHNhdmVJbmRleCkpOwotICAgICAgICBzYXZlSXRlbS5zZXRSZXN0b3Jl
SW5kZXgobV9kaXNwbGF5TGlzdC5zaXplKCkgLSAxKTsKKyAgICAgICAgc2F2ZUl0ZW0uc2V0UmVz
dG9yZUluZGV4KG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCkgLSAxKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGEwYWI4YjlmOTYwMzNjMjAw
OTkyNjYyMjcyZGFhN2ExNDM2OTQzZjIuLjJmMzZhM2Y4MDM1ZWRhNmQ4Y2Q4YzY4YmFjNDk0ZWZk
OTkwODQ3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTIw
LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpOwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlM
aXN0LnNpemUoKTsgfQorICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlMaXN0Lml0ZW1Db3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgSXRlbSYgYXBwZW5kSXRl
bShSZWY8SXRlbT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
aW5kZXggODMwMTdiMDRkMmQzNmMzZDQwYjg2MGZhZjc0MDQ3NzkxOTliNDFiZi4uMjA4MGQ4MTk3
ODc5Yjc5NTBlM2YxMDdjMTk1OTUzZGI0NDQzYjc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFJlcGxheWVyOjpyZXBs
YXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCkKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlz
cGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVwbGF5aW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxD
bGlwKTsKICAgICBVTlVTRURfUEFSQU0oaW5pdGlhbENsaXApOwogCi0gICAgc2l6ZV90IG51bUl0
ZW1zID0gbV9kaXNwbGF5TGlzdC5zaXplKCk7CisgICAgc2l6ZV90IG51bUl0ZW1zID0gbV9kaXNw
bGF5TGlzdC5pdGVtQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUl0ZW1z
OyArK2kpIHsKICAgICAgICAgYXV0byYgaXRlbSA9IG1fZGlzcGxheUxpc3QubGlzdCgpW2ldLmdl
dCgpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImRy
YXdpbmcgICIgPDwgaSA8PCAiICIgPDwgaXRlbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268594</attachid>
            <date>2016-01-08 15:28:33 -0800</date>
            <delta_ts>2016-01-08 15:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152932-20160108152801.patch</filename>
            <type>text/plain</type>
            <size>26246</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Nzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkwY2IzOWJmZjkwMmU5
OGNmMzRkNTU3OTQ5NzcyZGM1MTkzZjdlZi4uNDI2ZGY2MjFjYWVlYzgzZWIxYjc0NWNkZmRkMjUx
ZmY2Y2ZkNDAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDE2LTAxLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBEaXNwbGF5
TGlzdCBob29rcyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyOTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBob29rcyBpbnRvIEdyYXBoaWNzQ29udGV4
dCB0aGF0IGNhbGwgaW50byB0aGUgRGlzcGxheUxpc3RSZWNvcmRlciBpZiB0aGVyZQorICAgICAg
ICBpcyBvbmUuCisgICAgICAgIAorICAgICAgICBSZW5hbWUgc2l6ZSgpIHRvIHNvbWV0aGluZyBs
ZXNzIGFtYmlndW91cy4KKyAgICAgICAgCisgICAgICAgIE91dC1vZi1saW5lIHNvbWUgRGlzcGxh
eUxpc3QgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIGhlYWRlciBkb2Vzbid0IG5lZWQgdG8gc2VlCisg
ICAgICAgIERpc3BsYXlMaXN0SXRlbXMuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlv
bkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldERy
YXdMdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YXBw
bHlEZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmFwcGx5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREaXNwbGF5TGlzdFJl
Y29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNSZWNvcmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5jZU1hc2spOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6cmVtb3ZlSXRlbXNGcm9tSW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVtQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjbGVhcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNp
emUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpyZW1vdmVJdGVtc0Zyb21JbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6aXRlbUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorCisyMDE2LTAxLTA4ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIENvbnNpZGVy
IHBhaW50aW5nIHRvIGJlIGRpc2FibGVkIG9uIGEgR3JhcGhpY3NDb250ZXh0IHdpdGggbm8gcGxh
dGZvcm0gZGF0YSwgYW5kIG1ha2UgdXBkYXRpbmdDb250cm9sVGludHMoKSBpbW11dGFibGUgc3Rh
dGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjky
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCBkOTg4ZWJiNGIwMzhkZTBmZDIxZjk3ZGVjZjM3MWMxNGY1NGQ3MzM3
Li41MjlkNmVmZjdmZTY3NjZlY2FjYzFiNjk2ZWRhZjc1ZTg0NTkyN2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCkBAIC0zODMsNiArMzg0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
YXZlKCkKIAogICAgIG1fc3RhY2suYXBwZW5kKG1fc3RhdGUpOwogCisgICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zYXZlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBzYXZlUGxhdGZvcm1TdGF0ZSgpOwogfQogCkBAIC00MDMs
NiArNDA5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlKCkKICAgICBpZiAobV9z
dGFjay5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3RhY2suY2xlYXIoKTsKIAorICAgIGlmIChpc1Jl
Y29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+cmVzdG9yZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0K
IApAQCAtNDI5LDEyICs0NDAsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQogewogICAg
IG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyh0aGlja25l
c3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0eWxlOworICAgIGlmIChp
c1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3Rh
dGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKHN0eWxlKTsK
IH0KIApAQCAtNDQzLDYgKzQ2MywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3IgPSBjb2xv
cjsKICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBudWxscHRyOworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIApAQCAtNDUxLDYgKzQ3NSwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvcgogICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zm
c2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgbV9zdGF0ZS5zaGFkb3dD
b2xvciA9IGNvbG9yOworI2lmIFVTRShDRykKKyAgICBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lS
YWRpdXMgPSBmYWxzZTsKKyNlbmRpZgorICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgc2V0
UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CiB9CiAKQEAgLTQ2Miw2ICs0OTMs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5z
aGFkb3dzVXNlTGVnYWN5UmFkaXVzID0gdHJ1ZTsKICNlbmRpZgorICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CiB9CiAK
QEAgLTQ3MCw2ICs1MDUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
ICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hh
ZG93Qmx1ciA9IDA7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7CisjaWYgVVNF
KENHKQorICAgIG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOworI2VuZGlm
CisKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmNsZWFyU2hhZG93KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2xlYXJQbGF0
Zm9ybVNoYWRvdygpOwogfQogCkBAIC01MDUsMjEgKzU0OCw1MyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX3N0YXRlLmZpbGxD
b2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBt
X3N0YXRlLmZpbGxQYXR0ZXJuID0gbnVsbHB0cjsKKworICAgIGlmIChpc1JlY29yZGluZygpKSB7
CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvcik7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKQoreworICAgIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOworfQorCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAg
IG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOworCisgICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFz
KHNob3VsZEFudGlhbGlhcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKQogewogICAgIG1fc3RhdGUuc2hvdWxk
U21vb3RoRm9udHMgPSBzaG91bGRTbW9vdGhGb250czsKKyAgICAKKyAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250
cyhzaG91bGRTbW9vdGhGb250cyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
Cit7CisgICAgbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHM7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSk7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiAgICAgbV9zdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKQEAgLTUyNyw0NiAr
NjAyLDc2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAg
ICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBzZXRQbGF0Zm9ybUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQoYm9vbCBhbnRpYWxpYXNlZEZvbnREaWxh
dGlvbkVuYWJsZWQpCiB7CiAgICAgbV9zdGF0ZS5hbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJs
ZWQgPSBhbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQ7CisgICAgaWYgKGlzUmVjb3JkaW5n
KCkpCisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OkFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZENoYW5n
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9IG51bGxwdHI7
CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKKyAgICBpZiAo
aXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBw
YXR0ZXJuKQogewogICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0
YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZShwYXR0ZXJuKTsKKyAgICBpZiAoaXNSZWNvcmRpbmco
KSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQog
ewogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBt
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOworICAgIGlmIChpc1JlY29yZGluZygpKQor
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkKK3sKKyAgICBtX3N0YXRl
LmZpbGxSdWxlID0gZmlsbFJ1bGU7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkZpbGxSdWxlQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZp
bGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5maWxs
R3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdy
YWRpZW50Q2hhbmdlKTsgLy8gRklYTUU6IGFsc28gZmlsbCBwYXR0ZXJuPwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewor
ICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgKyttX3Ry
YW5zcGFyZW5jeUNvdW50OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKQogeworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgQVNTRVJUKG1f
dHJhbnNwYXJlbmN5Q291bnQgPiAwKTsKICAgICAtLW1fdHJhbnNwYXJlbmN5Q291bnQ7CkBAIC01
ODUsNiArNjkwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgY29uc3QgRm9udCYgZm9uCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
KyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGJ1ZmZlciwg
ZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZvbnRDYXNjYWRl
LmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7
CiB9CiAKQEAgLTY1MSw2ICs3NjEsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnMKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRp
b24pOwpAQCAtNjYxLDYgKzc3NiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLAogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChpc1JlY29y
ZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlv
bkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgaW1hZ2UuZHJhd1RpbGVk
KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9i
bGVuZE1vZGUpOwogfQpAQCAtNjcxLDYgKzc5MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlm
IChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCiAgICAgICAgIGRy
YXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwpAQCAtNzY2LDYgKzg5MSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdp
bmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgbV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUgPSBtb2RlOwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgc2V0UGxhdGZvcm1U
ZXh0RHJhd2luZ01vZGUobW9kZSk7CiB9CiAKQEAgLTc3Myw2ICs5MDMsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdy
YWRpZW50KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
KworICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZmlsbFJlY3QocmVjdCwgZ3JhZGllbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0KIApAQCAtNzgxLDYgKzkxNywxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbXBvcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgICAgIG1fZGlzcGxh
eUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVy
YXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbigpOwogICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCwgYmxlbmRNb2RlKTsKICAgICBmaWxsUmVjdChyZWN0LCBjb2xvcik7CkBAIC03OTIsNiArOTMz
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5maWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5k
TW9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAocmVjdC5pc1JvdW5kZWQo
KSkgewogICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKCks
IGJsZW5kTW9kZSk7CiAgICAgICAgIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9y
KTsKQEAgLTgzMCw2ICs5NzYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBtX3N0YXRlLmFscGhh
ID0gYWxwaGE7CisgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6QWxw
aGFDaGFuZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIHNldFBsYXRmb3JtQWxwaGEo
YWxwaGEpOwogfQogCkBAIC04MzcsOSArOTg3LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9u
CiB7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsK
ICAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBpZiAoaXNSZWNvcmRpbmco
KSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNvbXBv
c2l0ZU9wZXJhdGlvbiwgYmxlbmRNb2RlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spCit7CisgICAgbV9zdGF0
ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFuY2VNYXNrOworICAgIGlmIChpc1JlY29y
ZGluZygpKQorICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVtaW5hbmNlTWFza0NoYW5nZSk7Cit9CisK
ICNpZiAhVVNFKENHKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdhbnQgdG8gZ28gcHVzaCB0
aGUgZHJhd2luZyBtb2RlIGludG8geW91ciBuYXRpdmUgY29udGV4dCBpbW1lZGlhdGVseS4KIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncykKQEAgLTkzNCw2ICsxMDk1LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAg
ICBzY2FsZShGbG9hdFNpemUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7
CisKKyAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgcGxhdGZvcm1BcHBseURldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKTsKIH0KIApAQCAtMTAxMyw0ICsxMTgwLDE4IEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQo
Y29uc3QgRmxvCiAgICAgcmV0dXJuIEZsb2F0UmVjdChvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwg
dGhpY2tuZXNzKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKK3sKKyAgICBzZXRQbGF0Zm9ybVNoYWRvdyhz
dGF0ZS5zaGFkb3dPZmZzZXQsIHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0NvbG9yKTsK
KyAgICBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhzdGF0ZS5zdHJva2VUaGlja25lc3MpOwor
ICAgIHNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSk7Cisg
ICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdGF0ZS5zdHJva2VDb2xvcik7CisgICAgc2V0UGxh
dGZvcm1GaWxsQ29sb3Ioc3RhdGUuZmlsbENvbG9yKTsKKyAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0
eWxlKHN0YXRlLnN0cm9rZVN0eWxlKTsKKyAgICBzZXRQbGF0Zm9ybUFscGhhKHN0YXRlLmFscGhh
KTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihzdGF0ZS5jb21wb3NpdGVPcGVy
YXRvciwgc3RhdGUuYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhz
dGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgIHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMo
c3RhdGUuc2hvdWxkU21vb3RoRm9udHMpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDU2NDBjMjUwZDY3OWEx
ZGYyNmE1ZGE2M2I2ZjMwYWI0ZDQ0MmEwODUuLmU2Mzc3YjgwZDk3ZjRjY2UxOTIzZTM0ZTFmMTg3
ZWY1NGQwYjFjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xMTAsNiArMTEwLDEwIEBAIGVudW0gSW50ZXJwb2xhdGlv
blF1YWxpdHkgewogICAgIEludGVycG9sYXRpb25IaWdoCiB9OwogCituYW1lc3BhY2UgRGlzcGxh
eUxpc3QgeworY2xhc3MgUmVjb3JkZXI7Cit9CisKIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoKQogICAgICAgICA6IHNob3VsZEFudGlhbGlh
cyh0cnVlKQpAQCAtMjQ2LDYgKzI1MCw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0Kik7CisgICAgR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHQoKTsKICAgICAKICAgICBlbnVtIGNs
YXNzIE5vblBhaW50aW5nUmVhc29ucyB7CkBAIC0yNTYsOSArMjYxLDEyIEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdDsKIAotICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2RhdGE7IH0KKyAgICBib29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiAh
bV9kYXRhICYmICFpc1JlY29yZGluZygpOyB9CiAgICAgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uUGFpbnRpbmdSZWFzb25zID09IE5vblBhaW50aW5nUmVh
c29uczo6VXBkYXRpbmdDb250cm9sVGludHM7IH0KIAorICAgIHZvaWQgc2V0RGlzcGxheUxpc3RS
ZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXIqIHJlY29yZGVyKSB7IG1fZGlzcGxheUxpc3RS
ZWNvcmRlciA9IHJlY29yZGVyOyB9CisgICAgYm9vbCBpc1JlY29yZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheUxpc3RSZWNvcmRlcjsgfQorCiAgICAgdm9pZCBzZXRTdHJva2VUaGlja25l
c3MoZmxvYXQpOwogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CiAKQEAgLTI3NCw3ICsyODIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAgIEdyYWRpZW50
KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQu
Z2V0KCk7IH0KIAotICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpIHsgbV9z
dGF0ZS5maWxsUnVsZSA9IGZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVs
ZSk7CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxS
dWxlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xv
ciYpOwpAQCAtMjg2LDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAgIEdyYWRpZW50KiBmaWxsR3Jh
ZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxHcmFkaWVudC5nZXQoKTsgfQogCi0g
ICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKSB7IG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCk7
CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wpOwpAQCAtMzAwLDcgKzMwOCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIE5vcm1hbGx5IENHIGVuYWJsZXMgc3VicGl4ZWwtcXVhbnRpemF0aW9uIGJlY2F1c2Ug
aXQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGFsaWduaW5nIGdseXBocy4KICAgICAvLyBJ
biBzb21lIGNhc2VzIHdlIGhhdmUgdG8gZGlzYWJsZSB0byB0byBlbnN1cmUgYSBoaWdoLXF1YWxp
dHkgb3V0cHV0IG9mIHRoZSBnbHlwaHMuCi0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMgPSBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0K
KyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sKTsKICAgICBib29s
IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CiAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CkBAIC0zOTMsNiArNDAxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBUZXh0UnVuJiAsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBG
b250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKKyAgICB2b2lkIGFwcGx5U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmKTsKKwogICAgIGVudW0gUm91bmRpbmdNb2RlIHsKICAgICAgICAgUm91
bmRBbGxTaWRlcywKICAgICAgICAgUm91bmRPcmlnaW5BbmREaW1lbnNpb25zCkBAIC00NTIsNyAr
NDYyLDcgQEAgcHVibGljOgogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7IH0KICAgICBCbGVu
ZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5ibGVuZE1v
ZGU7IH0KIAotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7IH0K
KyAgICB2b2lkIHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wpOwogICAgIGJvb2wgZHJhd0x1bWlu
YW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9CiAK
ICAgICAvLyBUaGlzIGNsaXAgZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGJ5IDxjYW52YXM+IGNvZGUu
IEl0IGFsbG93cwpAQCAtNjAyLDYgKzYxMiw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IGNv
bXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRQb2lu
dCYsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCAgQ29sb3ImKTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZSogbV9kYXRhIHsgbnVsbHB0ciB9OworICAgIERpc3BsYXlM
aXN0OjpSZWNvcmRlciogbV9kaXNwbGF5TGlzdFJlY29yZGVyIHsgbnVsbHB0ciB9OwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUgbV9zdGF0ZTsKICAgICBWZWN0b3I8R3JhcGhpY3NDb250ZXh0
U3RhdGUsIDE+IG1fc3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCA3OWJmZGNk
NzA5MzlmNDY2MjYwNzdmNDkyYWU2YmZlNmUwOTVmYjY2Li5mYjlmZDMwOTVjZDk1NDAzNjVmZDgy
YmFkZWNjZmY2ZTMyZDExMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTQ4LDYg
KzQ4LDE2IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoKSBjb25zdAogfQogI2VuZGlmCiAKK3Zv
aWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKK3sKKyAgICBtX2xpc3QuY2xlYXIoKTsKK30KKwordm9p
ZCBEaXNwbGF5TGlzdDo6cmVtb3ZlSXRlbXNGcm9tSW5kZXgoc2l6ZV90IGluZGV4KQoreworICAg
IG1fbGlzdC5yZXNpemUoaW5kZXgpOworfQorCiB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRT
dHJlYW0mIHRzKSBjb25zdAogewogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA2OTUzNmQyOTcwYjBmMWJjNmUyM2FiNmY1NTll
OWRhMWMwNmUxNGY2Li4xZTE4MTNmOTA3MzVjZjFmNTgzNzEwYWY4NTI4NDg4M2RkYTZlMGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTgsMTQgKzU4LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY2xl
YXIoKSB7IG1fbGlzdC5jbGVhcigpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2xpc3Quc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIHJlbW92ZUl0ZW1zRnJvbUluZGV4KHNpemVf
dCBpbmRleCkKLSAgICB7Ci0gICAgICAgIG1fbGlzdC5yZXNpemUoaW5kZXgpOwotICAgIH0KKyAg
ICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCByZW1vdmVJdGVtc0Zyb21JbmRleChzaXplX3QpOwog
CisgICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdC5zaXplKCk7IH0K
ICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogI2lmICFkZWZpbmVkKE5ERUJVRykg
fHwgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IDVhZmMxMDM2NWRlMTJmODg5OTI2ZjUwN2RjZTk0MWFlMjM2MWQyZjQuLjc4OWE4NDZm
OGQ5MjY4ODk1Njc4ODcxYTNlZTgwOTE2ZjY1NTE0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlY29yZGVyOjpk
cmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZQogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCiB7CiAgICAgYXBwZW5kSXRlbShTYXZlOjpj
cmVhdGUoKSk7Ci0gICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNs
b25lRm9yU2F2ZShtX2Rpc3BsYXlMaXN0LnNpemUoKSAtIDEpKTsKKyAgICBtX3N0YXRlU3RhY2su
YXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JTYXZlKG1fZGlzcGxheUxpc3QuaXRl
bUNvdW50KCkgLSAxKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQpAQCAtMTY4LDcg
KzE2OCw3IEBAIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogICAgIAogICAgIGlmIChzYXZlSW5k
ZXgpIHsKICAgICAgICAgU2F2ZSYgc2F2ZUl0ZW0gPSBkb3duY2FzdDxTYXZlPihtX2Rpc3BsYXlM
aXN0Lml0ZW1BdChzYXZlSW5kZXgpKTsKLSAgICAgICAgc2F2ZUl0ZW0uc2V0UmVzdG9yZUluZGV4
KG1fZGlzcGxheUxpc3Quc2l6ZSgpIC0gMSk7CisgICAgICAgIHNhdmVJdGVtLnNldFJlc3RvcmVJ
bmRleChtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIC0gMSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhMGFiOGI5Zjk2MDMzYzIwMDk5MjY2
MjI3MmRhYTdhMTQzNjk0M2YyLi4yZjM2YTNmODAzNWVkYTZkOGNkOGM2OGJhYzQ5NGVmZDk5MDg0
NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEyMCw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZs
b2F0KTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5z
aXplKCk7IH0KKyAgICBzaXplX3QgaXRlbUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TGlzdC5pdGVtQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIEl0ZW0mIGFwcGVuZEl0ZW0oUmVm
PEl0ZW0+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4
IDgzMDE3YjA0ZDJkMzZjM2Q0MGI4NjBmYWY3NDA0Nzc5MTk5YjQxYmYuLjIwODBkODE5Nzg3OWI3
OTUwZTNmMTA3YzE5NTk1M2RiNDQ0M2I3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXApCiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJcblJlcGxheWluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7
CiAgICAgVU5VU0VEX1BBUkFNKGluaXRpYWxDbGlwKTsKIAotICAgIHNpemVfdCBudW1JdGVtcyA9
IG1fZGlzcGxheUxpc3Quc2l6ZSgpOworICAgIHNpemVfdCBudW1JdGVtcyA9IG1fZGlzcGxheUxp
c3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JdGVtczsgKytp
KSB7CiAgICAgICAgIGF1dG8mIGl0ZW0gPSBtX2Rpc3BsYXlMaXN0Lmxpc3QoKVtpXS5nZXQoKTsK
ICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJkcmF3aW5n
ICAiIDw8IGkgPDwgIiAiIDw8IGl0ZW0pOwo=
</data>
<flag name="review"
          id="293568"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>