<?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>157193</bug_id>
          
          <creation_ts>2016-04-29 11:16:47 -0700</creation_ts>
          <short_desc>Clean up GraphicsContext use in RenderLayer::paintLayerContents()</short_desc>
          <delta_ts>2016-04-29 19:55:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1188719</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-29 11:16:47 -0700</bug_when>
    <thetext>Clean up GraphicsContext use in RenderLayer::paintLayerContents()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188723</commentid>
    <comment_count>1</comment_count>
      <attachid>277721</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-29 11:21:31 -0700</bug_when>
    <thetext>Created attachment 277721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188724</commentid>
    <comment_count>2</comment_count>
      <attachid>277722</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-29 11:21:58 -0700</bug_when>
    <thetext>Created attachment 277722
diff -w for easier review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188965</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-29 19:55:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/200279</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277721</attachid>
            <date>2016-04-29 11:21:31 -0700</date>
            <delta_ts>2016-04-29 11:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157193-20160429112203.patch</filename>
            <type>text/plain</type>
            <size>23318</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE4ODY2ZmRhOTVjMzQ0
YjM3MDA4YzE2Mjc0N2Y1NjIxNjMyZWQ1YS4uNWE4OTgyMTcxY2JhODQyMjA1ODJkZDRhOTU5ZmNl
NWJmNjVjNzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA0LTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIEdy
YXBoaWNzQ29udGV4dCB1c2UgaW4gUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcxOTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBs
aWZldGltZSBvZiB0aGUgdGVtcG9yYXJ5IEdyYXBoaWNzQ29udGV4dCB1c2VkIHRvIHBhaW50IGZp
bHRlcnMgbW9yZSBleHBsaWNpdAorICAgICAgICBieSBwdXR0aW5nIGl0IGluIGFuIGlubmVyIHNj
b3BlLgorICAgICAgICAKKyAgICAgICAgTWFrZSBjdXJyZW50Q29udGV4dCBhIHJlZmVyZW5jZS4K
KyAgICAgICAgCisgICAgICAgIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCB3YXMgYSBjb25mdXNp
bmcgbmFtZSAoaXQgZG9lbnMndCBtZWFuIHdlJ3ZlIHN0YXJ0ZWQgYQorICAgICAgICB0cmFuc3Bh
cmVuY3kgbGF5ZXIpLCBzbyBqdXN0IHVzZSAiY29udGV4dCIgdG8gcmVmZXIgdG8gdGhlIG9yaWdp
bmFsIGNvbnRleHQuIFdoZW4KKyAgICAgICAgcGFzc2VkIHRvIG90aGVyIGZ1bmN0aW9ucywgdGhp
cyBpcyBjYWxsZWQgImNvbnRleHRGb3JUcmFuc3BhcmVuY3lMYXllciIuCisgICAgICAgIAorICAg
ICAgICBObyBsb25nZXIgbGVhdmVzICJjb250ZXh0IiBhcyBhIG51bGwgcG9pbnRlciBpZiBmaWx0
ZXJQYWludGVyLT5maWx0ZXJDb250ZXh0KCkgcmV0dXJucworICAgICAgICBhIG51bGwgcG9pbnRl
ci4gSXQncyB1bmNsZWFyIGlmIHRoaXMgZXZlciBoYXBwZW5lZC4KKworICAgICAgICAqIHJlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlcjo6ZmlsdGVyQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRy
YW5zcGFyZW5jeUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZy
YWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAx
Ni0wNC0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIg
SURMXSBEcm9wICdhbnknIHR5cGUgaGFuZGxpbmcgZnJvbSBDYW5Vc2VXVEZPcHRpb25hbEZvclBh
cmFtZXRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcAppbmRleCAxMmM2OWVkNDBiNDM3Yzc2ODY2ZDg4YWQ1ZTFkNzM0M2RiMzcyOGVk
Li5mNGZlOWUyNjU3OWRhODMyYThmZGJkZWVhNzUzNzIwNDk3YjdmMDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTM4Nyw3
ICszODcsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpwcmVwYXJlRmlsdGVy
RWZmZWN0KFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgYwogR3JhcGhpY3NDb250ZXh0KiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6ZmlsdGVyQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2hhdmVGaWx0ZXJFZmZlY3QpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSBtX3JlbmRlckxh
eWVyLT5maWx0ZXJSZW5kZXJlcigpOwogICAgIHJldHVybiBmaWx0ZXItPmlucHV0Q29udGV4dCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMTk4Zjk4NWUw
NGJjNzkzYzUxNDdiYjJiYTZkNTk3ZjM5NzRlODk0NC4uYzQ3MjI5NTJhMTViNzc1ODNkNzQ2MjNh
MDViNDNkMmRiMTE1YmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0xODE5LDggKzE4MTksOCBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFy
ZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUAogI2VuZGlm
CiAKICNpZmRlZiBSRVZFQUxfVFJBTlNQQVJFTkNZX0xBWUVSUwotICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC41ZiwgMC4yZikpOwotICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRDbGlwUmVjdCk7CisgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpKTsKKyAgICAgICAgY29udGV4
dC5maWxsUmVjdChwaXhlbFNuYXBwZWRDbGlwUmVjdCk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC00
MTk2LDcgKzQxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDbwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1HcmFwaGljc0NvbnRleHQmIFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYg
b3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZy
YWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCit2b2lkIFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMo
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4
dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXll
ckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCiB7CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXIt
Pmhhc1N0YXJ0ZWRGaWx0ZXJFZmZlY3QoKSk7CiAgICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xp
cHBpbmcgKGllLiBvdmVyZmxvdzogaGlkZGVuKS4KQEAgLTQyMDUsNyArNDIwNSw2IEBAIEdyYXBo
aWNzQ29udGV4dCYgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJl
ckhlbHBlciogZmlsdGVyUGFpCiAgICAgY2xpcFRvUmVjdChwYWludGluZ0luZm8sIG9yaWdpbmFs
Q29udGV4dCwgYmFja2dyb3VuZFJlY3QpOwogICAgIGZpbHRlclBhaW50ZXItPmFwcGx5RmlsdGVy
RWZmZWN0KG9yaWdpbmFsQ29udGV4dCk7CiAgICAgcmVzdG9yZUNsaXAob3JpZ2luYWxDb250ZXh0
LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGJhY2tncm91bmRSZWN0KTsKLSAgICByZXR1
cm4gb3JpZ2luYWxDb250ZXh0OwogfQogCiAvLyBIZWxwZXIgZm9yIHRoZSBzb3J0aW5nIG9mIGxh
eWVycyBieSB6LWluZGV4LgpAQCAtNDIzOSw3ICs0MjM4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEwKICAgICAgICAgZml4ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0lu
Zm8sIHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50
RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFp
bnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTQyODEsMTQzICs0MjgwLDE0MiBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5h
bENvbnRleHQsIGNvbnN0IExheQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBk
aXNhYmxlIHN1YnBpeGVsIHF1YW50aXphdGlvbiBmb3Igb3ZlcmZsb3cgY2xpcHMgb3Igc3ViZnJh
bWVzIG9uY2Ugd2Ugc2Nyb2xsIHRob3NlCiAgICAgLy8gdGhpbmdzIG9uIHRoZSBzY3JvbGxpbmcg
dGhyZWFkLgogICAgIGJvb2wgZGlkUXVhbnRpemVGb250cyA9IHRydWU7Ci0gICAgYm9vbCBuZWVk
VG9BZGp1c3RTdWJwaXhlbFF1YW50aXphdGlvbiA9IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0
aW9uKG9yaWdpbmFsQ29udGV4dCwgZGlkUXVhbnRpemVGb250cyk7CisgICAgYm9vbCBuZWVkVG9B
ZGp1c3RTdWJwaXhlbFF1YW50aXphdGlvbiA9IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9u
KGNvbnRleHQsIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRv
IGNvbnRleHQuCiAgICAgTGF5b3V0U2l6ZSBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gb2Zm
c2V0RnJvbVJvb3Q7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9j
aygpICYmIChyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRp
bmcob3JpZ2luYWxDb250ZXh0LCBwYWludEZsYWdzKSkpCisgICAgaWYgKHJlbmRlcmVyKCkuZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmIChyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwg
aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoY29udGV4dCwgcGFpbnRGbGFncykpKQogICAgICAgICBj
b2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29v
cmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVt
bnMpKTsKIAogICAgIGJvb2wgaGFzQ2xpcFBhdGggPSBmYWxzZTsKICAgICBpZiAoc2hvdWxkQXBw
bHlDbGlwUGF0aChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkK
LSAgICAgICAgaGFzQ2xpcFBhdGggPSBzZXR1cENsaXBQYXRoKG9yaWdpbmFsQ29udGV4dCwgcGFp
bnRpbmdJbmZvLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMs
IHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICAgICAgaGFzQ2xpcFBhdGggPSBzZXR1
cENsaXBQYXRoKGNvbnRleHQsIHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9v
dCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKICAg
ICBMYXllclBhaW50aW5nSW5mbyBsb2NhbFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gJm9yaWdpbmFsQ29udGV4dDsKLSAgICBHcmFw
aGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9IG9yaWdpbmFsQ29udGV4dDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBh
aW50ZXIgPSBzZXR1cEZpbHRlcnMoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEZs
YWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RS
ZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAgICBpZiAoZmlsdGVyUGFpbnRlcikgewotICAgICAg
ICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpOwotICAgICAgICBpZiAo
Y29udGV4dCAhPSAmdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kp
IHsKLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIgYW5kIHRyYW5zcGFyZW5jeSwg
d2UgaGF2ZSB0byBlYWdlcmx5IHN0YXJ0IGEgdHJhbnNwYXJlbmN5IGxheWVyIGhlcmUsIHJhdGhl
ciB0aGFuIHJpc2sgYSBjaGlsZCBsYXllciBsYXppbHkgc3RhcnRzIG9uZSB3aXRoIHRoZSB3cm9u
ZyBjb250ZXh0LgotICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJl
bmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoaXMgbGF5ZXIncyByZW5k
ZXJlciBpcyBhIGNoaWxkIG9mIHRoZSBzdWJ0cmVlUGFpbnRSb290LCB3ZSByZW5kZXIgdW5jb25k
aXRpb25hbGx5LCB3aGljaAotICAgIC8vIGlzIGRvbmUgYnkgcGFzc2luZyBhIG5pbCBzdWJ0cmVl
UGFpbnRSb290IGRvd24gdG8gb3VyIHJlbmRlcmVyIChhcyBpZiBubyBzdWJ0cmVlUGFpbnRSb290
IHdhcyBldmVyIHNldCkuCi0gICAgLy8gT3RoZXJ3aXNlLCBvdXIgcmVuZGVyZXIgdHJlZSBtYXkg
b3IgbWF5IG5vdCBjb250YWluIHRoZSBzdWJ0cmVlUGFpbnRSb290IHJvb3QsIHNvIHdlIHBhc3Mg
dGhhdCByb290IGFsb25nCi0gICAgLy8gc28gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCBhcyB3
ZSBkZXNjZW5kIHRocm91Z2ggdGhlIHJlbmRlcmVycy4KLSAgICBSZW5kZXJPYmplY3QqIHN1YnRy
ZWVQYWludFJvb3RGb3JSZW5kZXJlciA9IG51bGxwdHI7Ci0gICAgaWYgKGxvY2FsUGFpbnRpbmdJ
bmZvLnN1YnRyZWVQYWludFJvb3QgJiYgIXJlbmRlcmVyKCkuaXNEZXNjZW5kYW50T2YobG9jYWxQ
YWludGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCkpCi0gICAgICAgIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlciA9IGxvY2FsUGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3Q7Ci0KLSAgICBp
ZiAobG9jYWxQYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyAmJiBpc1NlbGZQYWludGlu
Z0xheWVyKQotICAgICAgICBwZXJmb3JtT3ZlcmxhcFRlc3RzKCpsb2NhbFBhaW50aW5nSW5mby5v
dmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIHRoaXMpOwot
CiAgICAgYm9vbCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSBsb2NhbFBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25s
eTsKICAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yICYgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHk7Ci0gICAgCi0gICAgUGFpbnRCZWhhdmlv
ciBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICBpZiAobG9jYWxQYWlu
dEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nU2tpcFJvb3RCYWNrZ3JvdW5kKQotICAgICAgICBw
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTa2lwUm9vdEJhY2tncm91bmQ7Ci0gICAgZWxz
ZSBpZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRP
bmx5KQotICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JSb290QmFja2dyb3Vu
ZE9ubHk7Ci0KICAgICBMYXllckZyYWdtZW50cyBsYXllckZyYWdtZW50czsKLSAgICBMYXlvdXRS
ZWN0IHBhaW50RGlydHlSZWN0ID0gbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7Ci0g
ICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWlu
dGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7Ci0gICAgICAgIC8vIENvbGxlY3QgdGhlIGZyYWdtZW50
cy4gVGhpcyB3aWxsIGNvbXB1dGUgdGhlIGNsaXAgcmVjdGFuZ2xlcyBhbmQgcGFpbnQgb2Zmc2V0
cyBmb3IgZWFjaCBsYXllciBmcmFnbWVudCwgYXMgd2VsbCBhcyB3aGV0aGVyIG9yIG5vdCB0aGUg
Y29udGVudCBvZiBlYWNoCi0gICAgICAgIC8vIGZyYWdtZW50IHNob3VsZCBwYWludC4gSWYgdGhl
IHBhcmVudCdzIGZpbHRlciBkaWN0YXRlcyBmdWxsIHJlcGFpbnQgdG8gZW5zdXJlIHByb3BlciBm
aWx0ZXIgZWZmZWN0LAotICAgICAgICAvLyB1c2UgdGhlIG92ZXJmbG93IGNsaXAgYXMgZGlydHkg
cmVjdCwgaW5zdGVhZCBvZiBubyBjbGlwcGluZy4gSXQgbWFpbnRhaW5zIHByb3BlciBjbGlwcGlu
ZyBmb3Igb3ZlcmZsb3c6OnNjcm9sbC4KLSAgICAgICAgaWYgKCFwYWludGluZ0luZm8uY2xpcFRv
RGlydHlSZWN0ICYmIHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgICAg
IC8vIFdlIGNhbiB0dXJuIGNsaXBwaW5nIGJhY2sgYnkgcmVxdWVzdGluZyBmdWxsIHJlcGFpbnQg
Zm9yIHRoZSBvdmVyZmxvdyBhcmVhLgotICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8uY2xp
cFRvRGlydHlSZWN0ID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhaW50RGlydHlSZWN0ID0gc2VsZkNs
aXBSZWN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgY29sbGVjdEZyYWdtZW50cyhsYXllckZyYWdt
ZW50cywgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgRXhjbHVk
ZUNvbXBvc2l0ZWRQYWdpbmF0ZWRMYXllcnMsCi0gICAgICAgICAgICAobG9jYWxQYWludEZsYWdz
ICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQ
YWludGluZ0NsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsCi0gICAgICAgICAg
ICAoaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpID8gSWdub3JlT3ZlcmZsb3dDbGlwIDogUmVz
cGVjdE92ZXJmbG93Q2xpcCwgb2Zmc2V0RnJvbVJvb3QpOwotICAgICAgICB1cGRhdGVQYWludGlu
Z0luZm9Gb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2Nh
bFBhaW50RmxhZ3MsIHNob3VsZFBhaW50Q29udGVudCwgb2Zmc2V0RnJvbVJvb3QpOwotICAgIH0K
LSAgICAKLSAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSB7Ci0gICAgICAg
IC8vIFBhaW50IG9ubHkgdGhlIGJhY2tncm91bmRzIGZvciBhbGwgb2YgdGhlIGZyYWdtZW50cyBv
ZiB0aGUgbGF5ZXIuCi0gICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIXNlbGVjdGlv
bk9ubHkpCi0gICAgICAgICAgICBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFn
bWVudHMsICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKLSAgICAgICAgICAgICAgICBsb2NhbFBh
aW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsK
LSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIgPSBu
dWxscHRyOwogCi0gICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdp
dGggbmVnYXRpdmUgei1pbmRpY2VzLgotICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRl
bnQgJiYgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGlu
Z0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFp
bnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2Nh
bFBhaW50RmxhZ3MpOwotICAgIAotICAgIGlmIChpc1BhaW50aW5nQ29tcG9zaXRlZEZvcmVncm91
bmQpIHsKLSAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIHRyYW5zcGFy
ZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNw
YXJlbmN5LAotICAgICAgICAgICAgICAgIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9y
LCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIHNlbGVjdGlvbk9ubHkgfHwgc2VsZWN0aW9u
QW5kQmFja2dyb3VuZHNPbmx5KTsKLSAgICB9CisgICAgeyAvLyBTY29wZSBmb3IgY3VycmVudENv
bnRleHQuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
cj4gZmlsdGVyUGFpbnRlciA9IHNldHVwRmlsdGVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgcGFpbnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91
bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVyUGFpbnRlciA/IGZpbHRlclBhaW50ZXItPmZpbHRl
ckNvbnRleHQoKSA6IG51bGxwdHI7CisgICAgICAgIGlmIChmaWx0ZXJDb250ZXh0ICYmIGhhdmVU
cmFuc3BhcmVuY3kpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0ZXIgYW5kIHRy
YW5zcGFyZW5jeSwgd2UgaGF2ZSB0byBlYWdlcmx5IHN0YXJ0IGEgdHJhbnNwYXJlbmN5IGxheWVy
IGhlcmUsIHJhdGhlciB0aGFuIHJpc2sgYSBjaGlsZCBsYXllciBsYXppbHkgc3RhcnRzIG9uZSB3
aXRoIHRoZSB3cm9uZyBjb250ZXh0LgorICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cnMoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCk7CisgICAgICAgIH0KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBjdXJyZW50Q29udGV4dCA9
IGZpbHRlckNvbnRleHQgPyAqZmlsdGVyQ29udGV4dCA6IGNvbnRleHQ7CisKKyAgICAgICAgLy8g
SWYgdGhpcyBsYXllcidzIHJlbmRlcmVyIGlzIGEgY2hpbGQgb2YgdGhlIHN1YnRyZWVQYWludFJv
b3QsIHdlIHJlbmRlciB1bmNvbmRpdGlvbmFsbHksIHdoaWNoCisgICAgICAgIC8vIGlzIGRvbmUg
YnkgcGFzc2luZyBhIG5pbCBzdWJ0cmVlUGFpbnRSb290IGRvd24gdG8gb3VyIHJlbmRlcmVyIChh
cyBpZiBubyBzdWJ0cmVlUGFpbnRSb290IHdhcyBldmVyIHNldCkuCisgICAgICAgIC8vIE90aGVy
d2lzZSwgb3VyIHJlbmRlcmVyIHRyZWUgbWF5IG9yIG1heSBub3QgY29udGFpbiB0aGUgc3VidHJl
ZVBhaW50Um9vdCByb290LCBzbyB3ZSBwYXNzIHRoYXQgcm9vdCBhbG9uZworICAgICAgICAvLyBz
byBpdCB3aWxsIGJlIHRlc3RlZCBhZ2FpbnN0IGFzIHdlIGRlc2NlbmQgdGhyb3VnaCB0aGUgcmVu
ZGVyZXJzLgorICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCAm
JiAhcmVuZGVyZXIoKS5pc0Rlc2NlbmRhbnRPZihsb2NhbFBhaW50aW5nSW5mby5zdWJ0cmVlUGFp
bnRSb290KSkKKyAgICAgICAgICAgIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciA9IGxvY2Fs
UGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3Q7CisKKyAgICAgICAgaWYgKGxvY2FsUGFpbnRp
bmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgJiYgaXNTZWxmUGFpbnRpbmdMYXllcikKKyAgICAg
ICAgICAgIHBlcmZvcm1PdmVybGFwVGVzdHMoKmxvY2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0
UmVxdWVzdHMsIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgdGhpcyk7CisKKyAgICAgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKKyAgICAg
ICAgaWYgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1NraXBSb290QmFja2dy
b3VuZCkKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNraXBSb290
QmFja2dyb3VuZDsKKyAgICAgICAgZWxzZSBpZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXll
clBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQorICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRPbmx5OworCisgICAgICAgIExheW91dFJlY3Qg
cGFpbnREaXJ0eVJlY3QgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKKyAgICAg
ICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWlu
dGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7CisgICAgICAgICAgICAvLyBDb2xsZWN0IHRoZSBmcmFn
bWVudHMuIFRoaXMgd2lsbCBjb21wdXRlIHRoZSBjbGlwIHJlY3RhbmdsZXMgYW5kIHBhaW50IG9m
ZnNldHMgZm9yIGVhY2ggbGF5ZXIgZnJhZ21lbnQsIGFzIHdlbGwgYXMgd2hldGhlciBvciBub3Qg
dGhlIGNvbnRlbnQgb2YgZWFjaAorICAgICAgICAgICAgLy8gZnJhZ21lbnQgc2hvdWxkIHBhaW50
LiBJZiB0aGUgcGFyZW50J3MgZmlsdGVyIGRpY3RhdGVzIGZ1bGwgcmVwYWludCB0byBlbnN1cmUg
cHJvcGVyIGZpbHRlciBlZmZlY3QsCisgICAgICAgICAgICAvLyB1c2UgdGhlIG92ZXJmbG93IGNs
aXAgYXMgZGlydHkgcmVjdCwgaW5zdGVhZCBvZiBubyBjbGlwcGluZy4gSXQgbWFpbnRhaW5zIHBy
b3BlciBjbGlwcGluZyBmb3Igb3ZlcmZsb3c6OnNjcm9sbC4KKyAgICAgICAgICAgIGlmICghcGFp
bnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCAmJiByZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
KSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHR1cm4gY2xpcHBpbmcgYmFjayBieSByZXF1
ZXN0aW5nIGZ1bGwgcmVwYWludCBmb3IgdGhlIG92ZXJmbG93IGFyZWEuCisgICAgICAgICAgICAg
ICAgbG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBwYWludERpcnR5UmVjdCA9IHNlbGZDbGlwUmVjdCgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29sbGVjdEZyYWdtZW50cyhsYXllckZyYWdtZW50cywgbG9jYWxQYWludGluZ0lu
Zm8ucm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgRXhjbHVkZUNvbXBvc2l0ZWRQYWdpbmF0ZWRM
YXllcnMsCisgICAgICAgICAgICAgICAgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1w
b3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMs
IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLAorICAgICAgICAgICAgICAgIChpc1BhaW50aW5n
T3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dD
bGlwLCBvZmZzZXRGcm9tUm9vdCk7CisgICAgICAgICAgICB1cGRhdGVQYWludGluZ0luZm9Gb3JG
cmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50Rmxh
Z3MsIHNob3VsZFBhaW50Q29udGVudCwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSB7CisgICAg
ICAgICAgICAvLyBQYWludCBvbmx5IHRoZSBiYWNrZ3JvdW5kcyBmb3IgYWxsIG9mIHRoZSBmcmFn
bWVudHMgb2YgdGhlIGxheWVyLgorICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAm
JiAhc2VsZWN0aW9uT25seSkgeworICAgICAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZEZvckZy
YWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQsIGNvbnRleHQsIHBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKKyAgICAgICAgICAgICAgICAg
ICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgIGlmIChzaG91bGRQYWlu
dE91dGxpbmUpCi0gICAgICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50
cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFp
bnRSb290Rm9yUmVuZGVyZXIpOworICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qg
b2YgY2hpbGRyZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMuCisgICAgICAgIGlmICgoaXNQYWlu
dGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICgh
aXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3Jv
dW5kKSkKKyAgICAgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0KCksIGN1cnJlbnRDb250
ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChpc1BhaW50aW5nQ29tcG9zaXRlZEZvcmVncm91bmQpIHsKKyAgICAgICAgICAgIGlm
IChzaG91bGRQYWludENvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICBwYWludEZvcmVncm91bmRG
b3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBjb250ZXh0LCBwYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCisgICAgICAgICAgICAg
ICAgICAgIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIHNlbGVjdGlvbk9ubHkgfHwgc2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgaWYgKGlzUGFpbnRpbmdDb21wb3Np
dGVkRm9yZWdyb3VuZCkgewotICAgICAgICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQg
aGF2ZSBvdmVyZmxvdy4KLSAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCks
ICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKLSAgICAKLSAg
ICAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggcG9zaXRp
dmUgei1pbmRpY2VzLgotICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4
dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIGlmIChzaG91
bGRQYWludE91dGxpbmUpCisgICAgICAgICAgICBwYWludE91dGxpbmVGb3JGcmFnbWVudHMobGF5
ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhh
dmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKIAotICAgICAgICAvLyBQYWludCB0
aGUgZml4ZWQgZWxlbWVudHMgZnJvbSBmbG93IHRocmVhZHMuCi0gICAgICAgIHBhaW50Rml4ZWRM
YXllcnNJbk5hbWVkRmxvd3MoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50
RmxhZ3MpOworICAgICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7Cisg
ICAgICAgICAgICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4K
KyAgICAgICAgICAgIHBhaW50TGlzdChtX25vcm1hbEZsb3dMaXN0LmdldCgpLCBjdXJyZW50Q29u
dGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgICAgIAotICAg
ICAgICAvLyBJZiB0aGlzIGlzIGEgcmVnaW9uLCBwYWludCBpdHMgY29udGVudHMgdmlhIHRoZSBm
bG93IHRocmVhZCdzIGxheWVyLgotICAgICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50KQotICAg
ICAgICAgICAgcGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKLSAgICB9
CisgICAgICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0
aCBwb3NpdGl2ZSB6LWluZGljZXMuCisgICAgICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlz
dCgpLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7
CisKKyAgICAgICAgICAgIC8vIFBhaW50IHRoZSBmaXhlZCBlbGVtZW50cyBmcm9tIGZsb3cgdGhy
ZWFkcy4KKyAgICAgICAgICAgIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoY3VycmVudENv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcmVnaW9uLCBwYWludCBpdHMgY29udGVudHMg
dmlhIHRoZSBmbG93IHRocmVhZCdzIGxheWVyLgorICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50
Q29udGVudCkKKyAgICAgICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdt
ZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBs
b2NhbFBhaW50RmxhZ3MpOworICAgICAgICB9CiAKLSAgICBpZiAoaXNQYWludGluZ092ZXJsYXlT
Y3JvbGxiYXJzICYmIGhhc1Njcm9sbGJhcnMoKSkKLSAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRy
b2xzRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8pOworICAgICAgICBpZiAoaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzICYmIGhhc1Njcm9s
bGJhcnMoKSkKKyAgICAgICAgICAgIHBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhs
YXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvKTsKIAotICAg
IGlmIChmaWx0ZXJQYWludGVyKSB7Ci0gICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0ZXJzKGZp
bHRlclBhaW50ZXIuZ2V0KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIGxheWVyRnJhZ21lbnRzKTsKLSAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxwdHI7
CisgICAgICAgIGlmIChmaWx0ZXJDb250ZXh0KSB7CisgICAgICAgICAgICBhcHBseUZpbHRlcnMo
ZmlsdGVyUGFpbnRlci5nZXQoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVyRnJh
Z21lbnRzKTsKKyAgICAgICAgICAgIGZpbHRlclBhaW50ZXIgPSBudWxscHRyOworICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhlIG9yaWdp
bmFsIHRyYW5zcGFyZW5jeSBjb250ZXh0LgotICAgIEFTU0VSVCgmdHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0ID09IGNvbnRleHQpOwotCiAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhKHNl
bGVjdGlvbk9ubHkgfHwgc2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkgewogICAgICAgICBp
ZiAoc2hvdWxkUGFpbnRNYXNrKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBsb2NhbFBhaW50
RmxhZ3MpKSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUgbWFzayBmb3IgdGhlIGZyYWdtZW50
cy4KLSAgICAgICAgICAgIHBhaW50TWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwor
ICAgICAgICAgICAgcGFpbnRNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0
LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghKHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDb21w
b3NpdGluZ01hc2tQaGFzZSkgJiYgKHBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDb21w
b3NpdGluZ0NsaXBQYXRoUGhhc2UpKSB7CiAgICAgICAgICAgICAvLyBSZS11c2UgcGFpbnRDaGls
ZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyB0byBwYWludCBibGFjayBmb3IgdGhlIGNvbXBvc2l0
aW5nIGNsaXBwaW5nIG1hc2suCi0gICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBp
bmdNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKChsb2NhbFBhaW50RmxhZ3MgJiBQYWludExheWVyUGFpbnRpbmdDaGlsZENs
aXBwaW5nTWFza1BoYXNlKSkgewogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIGJvcmRlciByYWRp
dXMgbWFzayBmb3IgdGhlIGZyYWdtZW50cy4KLSAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGlu
Z01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50Q2hp
bGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gRW5kIG91ciB0cmFuc3BhcmVuY3kgbGF5ZXIKICAgICBpZiAoaGF2ZVRy
YW5zcGFyZW5jeSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kgJiYgIW1fcGFpbnRpbmdJbnNpZGVSZWZs
ZWN0aW9uKSB7Ci0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Ci0gICAg
ICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOworICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgbV91c2VkVHJhbnNw
YXJlbmN5ID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUmUtc2V0IHRoaXMgdG8gd2hhdGV2ZXIg
aXQgd2FzIGJlZm9yZSB3ZSBwYWludGVkIHRoZSBsYXllci4KICAgICBpZiAobmVlZFRvQWRqdXN0
U3VicGl4ZWxRdWFudGl6YXRpb24pCi0gICAgICAgIGNvbnRleHQtPnNldFNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyhkaWRRdWFudGl6ZUZvbnRzKTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoZGlkUXVhbnRpemVGb250cyk7CiAKICAgICBpZiAoaGFz
Q2xpcFBhdGgpCi0gICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJh
bnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IExheW91dFNp
emUmIHRyYW5zbGF0aW9uT2Zmc2V0KQpAQCAtNDY2Myw3ICs0NjYxLDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGMKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3Vu
ZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNv
bnRleHQsCit2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dEZvclRyYW5zcGFyZW5jeUxheWVyLAogICAgIGNv
bnN0IExheW91dFJlY3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFu
c3BhcmVuY3ksIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywgUGFp
bnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyKQogewpAQCAtNDY3Myw3ICs0NjcxLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXll
ckZyYWdtZW4KIAogICAgICAgICAvLyBCZWdpbiB0cmFuc3BhcmVuY3kgbGF5ZXJzIGxhemlseSBu
b3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29tZXRoaW5nLgogICAgICAgICBpZiAo
aGF2ZVRyYW5zcGFyZW5jeSkKLSAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHRyYW5zcGFyZW5jeVBh
aW50RGlydHlSZWN0KTsKKyAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKGNvbnRl
eHRGb3JUcmFuc3BhcmVuY3lMYXllciwgbG9jYWxQYWludGluZ0luZm8sIHRyYW5zcGFyZW5jeVBh
aW50RGlydHlSZWN0KTsKICAgICAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBU
b0RpcnR5UmVjdCkgewogICAgICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmlyc3Qs
IGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgpAQCAtNDY5MSw3ICs0Njg5LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3Bh
cmVuY3lMYXllckNvbnRleHQsCit2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dEZvclRyYW5zcGFyZW5jeUxh
eWVyLAogICAgIGNvbnN0IExheW91dFJlY3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBi
b29sIGhhdmVUcmFuc3BhcmVuY3ksIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50
aW5nSW5mbywgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAogICAgIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBib29sIHNlbGVjdGlvbk9ubHkpCiB7CkBAIC00
Njk5LDcgKzQ2OTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFn
bWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIGlmIChoYXZlVHJh
bnNwYXJlbmN5KSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZy
YWdtZW50cykgewogICAgICAgICAgICAgaWYgKGZyYWdtZW50LnNob3VsZFBhaW50Q29udGVudCAm
JiAhZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
YmVnaW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QpOworICAgICAgICAgICAgICAg
IGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKGNvbnRleHRGb3JUcmFuc3BhcmVuY3lMYXllciwgbG9j
YWxQYWludGluZ0luZm8sIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAppbmRleCBhZTIyYzU2MDUxMDkzYjE2YmU1ODA3MjQzN2E1ZTJkMzNj
NjI4NWU3Li5iZDA1NGQzMzcwMzZlYzNjNjgyMWQ3ZGJiZDczOTBhOWY4MTMzMTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNzg2LDcgKzc4Niw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYs
IFBhaW50TGF5ZXJGbGFncykgY29uc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVySGVscGVyPiBzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiwgTGF5ZXJQYWlu
dGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21S
b290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJv
dW5kc0NvbXB1dGVkKTsKLSAgICBHcmFwaGljc0NvbnRleHQmIGFwcGx5RmlsdGVycyhGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBM
YXllclBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRzJik7CisgICAgdm9pZCBhcHBseUZpbHRl
cnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFs
Q29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdtZW50cyYpOwogCiAgICAgdm9p
ZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UGFpbnRMYXllckZsYWdzKTsKICAgICB2b2lkIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3Mo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MpOwo=
</data>
<flag name="review"
          id="301866"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277722</attachid>
            <date>2016-04-29 11:21:58 -0700</date>
            <delta_ts>2016-04-29 11:21:58 -0700</delta_ts>
            <desc>diff -w for easier review</desc>
            <filename>textmate stdin LCiM9E.txt</filename>
            <type>text/plain</type>
            <size>16891</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CmluZGV4IDEyYzY5ZWQuLmY0ZmU5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIGJvb2wgRmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OnByZXBhcmVGaWx0ZXJFZmZlY3QoUmVuZGVyTGF5ZXIq
IHJlbmRlckxheWVyLCBjCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVySGVs
cGVyOjpmaWx0ZXJDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1faGF2ZUZpbHRlckVmZmVj
dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRmls
dGVyRWZmZWN0UmVuZGVyZXIqIGZpbHRlciA9IG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVy
KCk7CiAgICAgcmV0dXJuIGZpbHRlci0+aW5wdXRDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxOThmOTg1Li5mMGM1MzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE4MTksOCArMTgxOSw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5ZXJQCiAjZW5kaWYKIAogI2lmZGVmIFJFVkVBTF9UUkFOU1BBUkVO
Q1lfTEFZRVJTCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBm
LCAwLjVmLCAwLjJmKSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZENs
aXBSZWN0KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC41ZiwgMC4yZikpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZENsaXBS
ZWN0KTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTQxOTYsNyArNDE5Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVy
cyhHcmFwaGljc0NvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCYg
UmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciogZmls
dGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKK3Zv
aWQgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciog
ZmlsdGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFp
bnRpbmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykK
IHsKICAgICBBU1NFUlQoZmlsdGVyUGFpbnRlci0+aGFzU3RhcnRlZEZpbHRlckVmZmVjdCgpKTsK
ICAgICAvLyBBcHBseSB0aGUgY29ycmVjdCBjbGlwcGluZyAoaWUuIG92ZXJmbG93OiBoaWRkZW4p
LgpAQCAtNDIwNSw3ICs0MjA1LDYgQEAgR3JhcGhpY3NDb250ZXh0JiBSZW5kZXJMYXllcjo6YXBw
bHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiBmaWx0ZXJQYWkKICAgICBjbGlw
VG9SZWN0KHBhaW50aW5nSW5mbywgb3JpZ2luYWxDb250ZXh0LCBiYWNrZ3JvdW5kUmVjdCk7CiAg
ICAgZmlsdGVyUGFpbnRlci0+YXBwbHlGaWx0ZXJFZmZlY3Qob3JpZ2luYWxDb250ZXh0KTsKICAg
ICByZXN0b3JlQ2xpcChvcmlnaW5hbENvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCwgYmFja2dyb3VuZFJlY3QpOwotICAgIHJldHVybiBvcmlnaW5hbENvbnRleHQ7CiB9CiAKIC8v
IEhlbHBlciBmb3IgdGhlIHNvcnRpbmcgb2YgbGF5ZXJzIGJ5IHotaW5kZXguCkBAIC00MjM5LDcg
KzQyMzgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTAogICAgICAgICBmaXhlZExheWVyLT5w
YWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFs
Q29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBBU1NFUlQoaXNTZWxm
UGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKTsKIApA
QCAtNDI4MSw1MSArNDI4MCw1MCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIGNvbnN0IExheQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkaXNhYmxlIHN1YnBpeGVsIHF1YW50aXphdGlvbiBm
b3Igb3ZlcmZsb3cgY2xpcHMgb3Igc3ViZnJhbWVzIG9uY2Ugd2Ugc2Nyb2xsIHRob3NlCiAgICAg
Ly8gdGhpbmdzIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgogICAgIGJvb2wgZGlkUXVhbnRpemVG
b250cyA9IHRydWU7Ci0gICAgYm9vbCBuZWVkVG9BZGp1c3RTdWJwaXhlbFF1YW50aXphdGlvbiA9
IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKG9yaWdpbmFsQ29udGV4dCwgZGlkUXVhbnRp
emVGb250cyk7CisgICAgYm9vbCBuZWVkVG9BZGp1c3RTdWJwaXhlbFF1YW50aXphdGlvbiA9IHNl
dHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQsIGRpZFF1YW50aXplRm9udHMpOwog
CiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRleHQuCiAgICAgTGF5b3V0U2l6ZSBjb2x1
bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbVJvb3Q7Ci0gICAgaWYgKHJlbmRlcmVy
KCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmIChyZW5kZXJlcigpLmhhc0NsaXBQYXRo
KCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcob3JpZ2luYWxDb250ZXh0LCBwYWludEZsYWdz
KSkpCisgICAgaWYgKHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmIChy
ZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoY29udGV4
dCwgcGFpbnRGbGFncykpKQogICAgICAgICBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gdG9M
YXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIExh
eW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsKIAogICAgIGJvb2wgaGFzQ2xpcFBhdGgg
PSBmYWxzZTsKICAgICBpZiAoc2hvdWxkQXBwbHlDbGlwUGF0aChwYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkKLSAgICAgICAgaGFzQ2xpcFBhdGggPSBzZXR1cENs
aXBQYXRoKG9yaWdpbmFsQ29udGV4dCwgcGFpbnRpbmdJbmZvLCBjb2x1bW5Bd2FyZU9mZnNldEZy
b21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsK
KyAgICAgICAgaGFzQ2xpcFBhdGggPSBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHBhaW50aW5nSW5m
bywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVs
YXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKICAgICBMYXllclBhaW50aW5nSW5mbyBsb2NhbFBhaW50
aW5nSW5mbyhwYWludGluZ0luZm8pOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
Jm9yaWdpbmFsQ29udGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVy
Q29udGV4dCA9IG9yaWdpbmFsQ29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoKmNvbnRleHQs
IGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290
LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAgICBp
ZiAoZmlsdGVyUGFpbnRlcikgewotICAgICAgICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+Zmls
dGVyQ29udGV4dCgpOwotICAgICAgICBpZiAoY29udGV4dCAhPSAmdHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kpIHsKKyAgICBib29sIHNlbGVjdGlvbkFuZEJhY2tn
cm91bmRzT25seSA9IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5OworICAgIGJvb2wgc2VsZWN0aW9uT25seSA9
IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9u
T25seTsKKyAgICBMYXllckZyYWdtZW50cyBsYXllckZyYWdtZW50czsKKyAgICBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciA9IG51bGxwdHI7CisKKyAgICB7IC8vIFNj
b3BlIGZvciBjdXJyZW50Q29udGV4dC4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVm
ZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKGNvbnRleHQs
IGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290
LCByb290UmVsYXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKworICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBmaWx0ZXJQYWludGVyID8gZmls
dGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKGZpbHRl
ckNvbnRleHQgJiYgaGF2ZVRyYW5zcGFyZW5jeSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhIGZpbHRlciBhbmQgdHJhbnNwYXJlbmN5LCB3ZSBoYXZlIHRvIGVhZ2VybHkgc3RhcnQgYSB0
cmFuc3BhcmVuY3kgbGF5ZXIgaGVyZSwgcmF0aGVyIHRoYW4gcmlzayBhIGNoaWxkIGxheWVyIGxh
emlseSBzdGFydHMgb25lIHdpdGggdGhlIHdyb25nIGNvbnRleHQuCi0gICAgICAgICAgICBiZWdp
blRyYW5zcGFyZW5jeUxheWVycyh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpOwotICAgICAgICB9CisgICAgICAg
ICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KTsKICAgICAgICAgfQorICAgICAgICBHcmFwaGlj
c0NvbnRleHQmIGN1cnJlbnRDb250ZXh0ID0gZmlsdGVyQ29udGV4dCA/ICpmaWx0ZXJDb250ZXh0
IDogY29udGV4dDsKIAogICAgICAgICAvLyBJZiB0aGlzIGxheWVyJ3MgcmVuZGVyZXIgaXMgYSBj
aGlsZCBvZiB0aGUgc3VidHJlZVBhaW50Um9vdCwgd2UgcmVuZGVyIHVuY29uZGl0aW9uYWxseSwg
d2hpY2gKICAgICAgICAgLy8gaXMgZG9uZSBieSBwYXNzaW5nIGEgbmlsIHN1YnRyZWVQYWludFJv
b3QgZG93biB0byBvdXIgcmVuZGVyZXIgKGFzIGlmIG5vIHN1YnRyZWVQYWludFJvb3Qgd2FzIGV2
ZXIgc2V0KS4KICAgICAgICAgLy8gT3RoZXJ3aXNlLCBvdXIgcmVuZGVyZXIgdHJlZSBtYXkgb3Ig
bWF5IG5vdCBjb250YWluIHRoZSBzdWJ0cmVlUGFpbnRSb290IHJvb3QsIHNvIHdlIHBhc3MgdGhh
dCByb290IGFsb25nCiAgICAgICAgIC8vIHNvIGl0IHdpbGwgYmUgdGVzdGVkIGFnYWluc3QgYXMg
d2UgZGVzY2VuZCB0aHJvdWdoIHRoZSByZW5kZXJlcnMuCi0gICAgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIgPSBudWxscHRyOwogICAgICAgICBpZiAobG9jYWxQYWlu
dGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCAmJiAhcmVuZGVyZXIoKS5pc0Rlc2NlbmRhbnRPZihs
b2NhbFBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290KSkKICAgICAgICAgICAgIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlciA9IGxvY2FsUGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3Q7
CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgJiYg
aXNTZWxmUGFpbnRpbmdMYXllcikKICAgICAgICAgICAgIHBlcmZvcm1PdmVybGFwVGVzdHMoKmxv
Y2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRpbmdJbmZvLnJv
b3RMYXllciwgdGhpcyk7CiAKLSAgICBib29sIHNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSA9
IGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9u
QW5kQmFja2dyb3VuZHNPbmx5OwotICAgIGJvb2wgc2VsZWN0aW9uT25seSA9IGxvY2FsUGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seTsKLSAgICAK
ICAgICAgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1h
bDsKICAgICAgICAgaWYgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ1NraXBS
b290QmFja2dyb3VuZCkKICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
clNraXBSb290QmFja2dyb3VuZDsKICAgICAgICAgZWxzZSBpZiAobG9jYWxQYWludEZsYWdzICYg
UGFpbnRMYXllclBhaW50aW5nUm9vdEJhY2tncm91bmRPbmx5KQogICAgICAgICAgICAgcGFpbnRC
ZWhhdmlvciB8PSBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRPbmx5OwogCi0gICAgTGF5ZXJG
cmFnbWVudHMgbGF5ZXJGcmFnbWVudHM7CiAgICAgICAgIExheW91dFJlY3QgcGFpbnREaXJ0eVJl
Y3QgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHNob3Vs
ZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwgaXNQYWludGluZ092ZXJsYXlT
Y3JvbGxiYXJzKSB7CiAgICAgICAgICAgICAvLyBDb2xsZWN0IHRoZSBmcmFnbWVudHMuIFRoaXMg
d2lsbCBjb21wdXRlIHRoZSBjbGlwIHJlY3RhbmdsZXMgYW5kIHBhaW50IG9mZnNldHMgZm9yIGVh
Y2ggbGF5ZXIgZnJhZ21lbnQsIGFzIHdlbGwgYXMgd2hldGhlciBvciBub3QgdGhlIGNvbnRlbnQg
b2YgZWFjaApAQCAtNDM0NSw3OSArNDM0Myw3NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIGNvbnN0IExheQog
ICAgICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAg
ICAvLyBQYWludCBvbmx5IHRoZSBiYWNrZ3JvdW5kcyBmb3IgYWxsIG9mIHRoZSBmcmFnbWVudHMg
b2YgdGhlIGxheWVyLgogICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhc2Vs
ZWN0aW9uT25seSkKLSAgICAgICAgICAgIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgKmNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgICAgIHBh
aW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQs
IGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwK
ICAgICAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3cg
d2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMu
CiAgICAgICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ092
ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWlu
dGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxp
c3QoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAg
ICAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgY3VycmVudENvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKICAgICAgICAgaWYgKGlz
UGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewogICAgICAgICAgICAgaWYgKHNob3VsZFBh
aW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgKmNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgICAgIHBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY3VycmVudENvbnRleHQs
IGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwK
ICAgICAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRC
YWNrZ3JvdW5kc09ubHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFBhaW50T3V0
bGluZSkKLSAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAq
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludE91dGxpbmVGb3JGcmFnbWVudHMobGF5
ZXJGcmFnbWVudHMsIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhh
dmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKIAogICAgICAgICBpZiAoaXNQYWlu
dGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgICAgICAvLyBQYWludCBhbnkgY2hp
bGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4KLSAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFs
Rmxvd0xpc3QuZ2V0KCksICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZs
YWdzKTsKKyAgICAgICAgICAgIHBhaW50TGlzdChtX25vcm1hbEZsb3dMaXN0LmdldCgpLCBjdXJy
ZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgICAg
IAogICAgICAgICAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdp
dGggcG9zaXRpdmUgei1pbmRpY2VzLgotICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgp
LCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAg
ICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWlu
dGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBm
aXhlZCBlbGVtZW50cyBmcm9tIGZsb3cgdGhyZWFkcy4KLSAgICAgICAgcGFpbnRGaXhlZExheWVy
c0luTmFtZWRGbG93cygqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKGN1cnJlbnRDb250
ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJlZ2lvbiwgcGFpbnQgaXRzIGNvbnRlbnRzIHZp
YSB0aGUgZmxvdyB0aHJlYWQncyBsYXllci4KICAgICAgICAgICAgIGlmIChzaG91bGRQYWludENv
bnRlbnQpCi0gICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhs
YXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50Rmxh
Z3MpOworICAgICAgICAgICAgICAgIHBhaW50Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRz
KGxheWVyRnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2Fs
UGFpbnRGbGFncyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNQYWludGluZ092ZXJsYXlT
Y3JvbGxiYXJzICYmIGhhc1Njcm9sbGJhcnMoKSkKLSAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRy
b2xzRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8pOworICAgICAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGxheWVy
RnJhZ21lbnRzLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwogCi0gICAgaWYg
KGZpbHRlclBhaW50ZXIpIHsKLSAgICAgICAgY29udGV4dCA9ICZhcHBseUZpbHRlcnMoZmlsdGVy
UGFpbnRlci5nZXQoKSwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgbGF5ZXJGcmFnbWVudHMpOworICAgICAgICBpZiAoZmlsdGVyQ29udGV4dCkgeworICAgICAg
ICAgICAgYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIuZ2V0KCksIGNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBsYXllckZyYWdtZW50cyk7CiAgICAgICAgICAgICBmaWx0ZXJQYWludGVyID0g
bnVsbHB0cjsKICAgICAgICAgfQotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1
c2UgdGhlIG9yaWdpbmFsIHRyYW5zcGFyZW5jeSBjb250ZXh0LgotICAgIEFTU0VSVCgmdHJhbnNw
YXJlbmN5TGF5ZXJDb250ZXh0ID09IGNvbnRleHQpOworICAgIH0KICAgICAKICAgICBpZiAoc2hv
dWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3Jv
dW5kc09ubHkpKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRo
ZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRNYXNrRm9yRnJhZ21l
bnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludE1hc2tGb3JGcmFnbWVudHMo
bGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRS
b290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEocGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlKSAmJiAocGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSkpIHsKICAgICAgICAg
ICAgIC8vIFJlLXVzZSBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzIHRvIHBhaW50
IGJsYWNrIGZvciB0aGUgY29tcG9zaXRpbmcgY2xpcHBpbmcgbWFzay4KLSAgICAgICAgICAgIHBh
aW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0
LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAg
ICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMs
IGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoKGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpKSB7CiAgICAgICAgICAgICAv
LyBQYWludCB0aGUgYm9yZGVyIHJhZGl1cyBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAg
ICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywg
KmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIp
OworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXllckZy
YWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBFbmQgb3VyIHRyYW5zcGFyZW5j
eSBsYXllcgogICAgIGlmIChoYXZlVHJhbnNwYXJlbmN5ICYmIG1fdXNlZFRyYW5zcGFyZW5jeSAm
JiAhbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24pIHsKLSAgICAgICAgY29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBj
b250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgp
OwogICAgICAgICBtX3VzZWRUcmFuc3BhcmVuY3kgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBS
ZS1zZXQgdGhpcyB0byB3aGF0ZXZlciBpdCB3YXMgYmVmb3JlIHdlIHBhaW50ZWQgdGhlIGxheWVy
LgogICAgIGlmIChuZWVkVG9BZGp1c3RTdWJwaXhlbFF1YW50aXphdGlvbikKLSAgICAgICAgY29u
dGV4dC0+c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGRpZFF1YW50aXplRm9udHMpOwor
ICAgICAgICBjb250ZXh0LnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhkaWRRdWFudGl6
ZUZvbnRzKTsKIAogICAgIGlmIChoYXNDbGlwUGF0aCkKLSAgICAgICAgY29udGV4dC0+cmVzdG9y
ZSgpOworICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJhbnNsYXRpb25PZmZzZXQpCkBAIC00NjYzLDcg
KzQ2NTksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJh
Z21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYwogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRl
eHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFj
a2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0Rm9yVHJh
bnNwYXJlbmN5TGF5ZXIsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnRE
aXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IGxvY2FsUGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CkBAIC00NjczLDcgKzQ2
NjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogCiAgICAgICAgIC8vIEJlZ2luIHRyYW5z
cGFyZW5jeSBsYXllcnMgbGF6aWx5IG5vdyB0aGF0IHdlIGtub3cgd2UgaGF2ZSB0byBwYWludCBz
b21ldGhpbmcuCiAgICAgICAgIGlmIChoYXZlVHJhbnNwYXJlbmN5KQotICAgICAgICAgICAgYmVn
aW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50
aW5nSW5mbywgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QpOworICAgICAgICAgICAgYmVnaW5U
cmFuc3BhcmVuY3lMYXllcnMoY29udGV4dEZvclRyYW5zcGFyZW5jeUxheWVyLCBsb2NhbFBhaW50
aW5nSW5mbywgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QpOwogICAgIAogICAgICAgICBpZiAo
bG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KSB7CiAgICAgICAgICAgICAvLyBQYWlu
dCBvdXIgYmFja2dyb3VuZCBmaXJzdCwgYmVmb3JlIHBhaW50aW5nIGFueSBjaGlsZCBsYXllcnMu
CkBAIC00NjkxLDcgKzQ2ODcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRG
b3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0Rm9yVHJhbnNwYXJlbmN5TGF5ZXIsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNw
YXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
b3IsCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wg
c2VsZWN0aW9uT25seSkKIHsKQEAgLTQ2OTksNyArNDY5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJG
cmFnbWVuCiAgICAgaWYgKGhhdmVUcmFuc3BhcmVuY3kpIHsKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgICAgICBpZiAoZnJhZ21l
bnQuc2hvdWxkUGFpbnRDb250ZW50ICYmICFmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyh0cmFuc3BhcmVu
Y3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCB0cmFuc3BhcmVuY3lQYWludERpcnR5
UmVjdCk7CisgICAgICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoY29udGV4dEZv
clRyYW5zcGFyZW5jeUxheWVyLCBsb2NhbFBhaW50aW5nSW5mbywgdHJhbnNwYXJlbmN5UGFpbnRE
aXJ0eVJlY3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGFlMjJjNTYuLmJk
MDU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03ODYsNyAr
Nzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3Jh
cGhpY3NDb250ZXh0JiwgUGFpbnRMYXllckZsYWdzKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IHNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRl
eHQmLCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYg
cm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwotICAgIEdyYXBoaWNzQ29udGV4dCYgYXBwbHlG
aWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiwgR3JhcGhpY3NDb250ZXh0JiBvcmln
aW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiwgTGF5ZXJGcmFnbWVudHMmKTsKKyAgICB2
b2lkIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29u
dGV4dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRz
Jik7CiAKICAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogICAgIHZvaWQgcGFpbnRGaXhlZExheWVy
c0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50TGF5ZXJGbGFncyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>