<?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>118251</bug_id>
          
          <creation_ts>2013-07-01 09:13:19 -0700</creation_ts>
          <short_desc>[Qt][WK1] Support WebGL with EGL on Linux</short_desc>
          <delta_ts>2013-07-02 06:53:53 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>118302</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>abecsi</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jturcotte</cc>
    
    <cc>noam</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>905055</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-07-01 09:13:19 -0700</bug_when>
    <thetext>Currently we only use EGL on Windows, on Linux we only support GLX for GraphicsSurface and WebGL. Since EGL is commonly used for embedded devices on Linux, and getting more wide-spread we should have support for that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905060</commentid>
    <comment_count>1</comment_count>
      <attachid>205816</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-07-01 09:21:45 -0700</bug_when>
    <thetext>Created attachment 205816
Patch

WIP works with offscreen buffers, but graphicsSurface still has issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905301</commentid>
    <comment_count>2</comment_count>
      <attachid>205881</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-07-02 02:54:07 -0700</bug_when>
    <thetext>Created attachment 205881
Patch

Clean working patch without GraphicsSurface support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905310</commentid>
    <comment_count>3</comment_count>
      <attachid>205884</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-07-02 03:10:49 -0700</bug_when>
    <thetext>Created attachment 205884
Patch

Fix minor typos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905319</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-07-02 04:05:35 -0700</bug_when>
    <thetext>Committed r152282: &lt;http://trac.webkit.org/changeset/152282&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205816</attachid>
            <date>2013-07-01 09:21:45 -0700</date>
            <delta_ts>2013-07-02 02:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118251-20130701181941.patch</filename>
            <type>text/plain</type>
            <size>48515</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyMjNjN2NhYzMzNWRm
MGZiMmMyOTQ0ODhlNWJmMmI4NDU1N2UzNC4uNmFmYmZhNjYyZjRmM2QwMTQ5YWM4OGRhYjE0NDRk
Yjk4NTQ4ZjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDEzLTA3LTAxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCisgICAgICAgIFN1
cHBvcnQgV2ViR0wgd2l0aCBFR0wgb24gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdGhlIEVHTCBncmFwaGljcyBzdXJmYWNlIGltcGxl
bWVudGF0aW9uIGZvciBXaW5kb3dzIG1vcmUgZ2VuZXJpYy4KKworICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpHcmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0dyYXBoaWNzU3VyZmFjZUVHTC5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRl
Ojp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpjb3B5RnJvbVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZTo6dG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJUZXh0dXJlSUQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZTo6aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZnJvbnRCdWZmZXJTaGFyZUhh
bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpiYWNrQnVm
ZmVyU2hhcmVIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0
ZTo6cmVsZWFzZUZyb250QnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c1N1cmZhY2VQcml2YXRlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6OmluaXRpYWxpemVTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2VGcm9tU2hhcmVIYW5kbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZHJhd1RleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5VG9HTFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlGcm9tVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bUZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1Td2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSk6CisKKzIwMTMtMDct
MDEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKICAg
ICAgICAgW1F0XSBBdm9pZCBjcmVhdGluZyBhIFFXaW5kb3cgZm9yIG9mZnNjcmVlbiBHcmFwaGlj
c0NvbnRleHQzRAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4MjQ0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YjEyNDZhYjY4ZTQ5ZDRkYjczZDAzMjk5MWFkYTU1
ZGNiNGU5MWJmLi5mNDdlMTQzOThkYzlkNzRhNjU5ODRkNWE2ZjY3MzA4Njc4M2M4N2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDctMDEgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBXZWJHTCB3aXRo
IEVHTCBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBkZWNvZGluZyBFR0wgb3IgR0xYIHN1cmZhY2VzIGRlcGVuZCBvbiB3aGF0IFdl
YktpdCB1c2VzIG5vdCB0aGUgT1MuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorCiAyMDEzLTA3
LTAxICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBBZG9w
dCB0b0hUTUxUZXh0QXJlYUVsZW1lbnQgZm9yIGNvZGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
NWZhNjI3MWRmZWM1NGRhNDViN2JkN2RiYjdmNjJkNDNhNTg3M2M3My4uNTg1MGQ0YmIzNzg1OWFl
MDBmMDYwMzJkYzU1ODBmMjgzZDkzMzI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00MjQ0LDEwICs0MjQ0
LDEwIEBAIHVzZT8oR1JBUEhJQ1NfU1VSRkFDRSkgewogICAgICAgICBTT1VSQ0VTICs9IHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCiAgICAgICAg
IElOQ0xVREVQQVRIICs9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9u
LmZyYW1ld29yay9IZWFkZXJzCiAgICAgfQotICAgIHdpbjMyIHsKLSAgICAgICAgU09VUkNFUyAr
PSBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcAor
ICAgIHVzZT8oZWdsKSB7CisgICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZWdsL0dyYXBoaWNzU3VyZmFjZUVHTC5jcHAKICAgICB9Ci0gICAgaGF2ZT8oWENPTVBP
U0lURSkgeworICAgIHVzZT8oZ2x4KSB7CiAgICAgICAgIEhFQURFUlMgKz0gXAogICAgICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5oIFwKICAgICAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKaW5k
ZXggZGU3YmViZDI0M2UzODk1ZWQyMDY5OGU5ZWEyMGI0NzAyYjRlOGQyMy4uMzAxMDVmNmZlYTg5
YzgxNTgwMzA1NDA5ZTgyYTg3YWY4MDFjNDk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApAQCAtNDAsNyArNDAsOSBAQCBPcGVuR0xG
dW5jdGlvblRhYmxlKiBvcGVuR0xGdW5jdGlvblRhYmxlKCkKICNpZiBQTEFURk9STShRVCkKIHN0
YXRpYyB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFtZSkKIHsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250
ZXh0KCktPmdldFByb2NBZGRyZXNzKHByb2NOYW1lKSk7CisgICAgaWYgKFFPcGVuR0xDb250ZXh0
KiBjb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCkpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT5nZXRQcm9jQWRkcmVzcyhwcm9j
TmFtZSkpOworICAgIHJldHVybiAwOwogfQogI2Vsc2UKIHR5cGVkZWYgdm9pZCogKCpnbEdldFBy
b2NBZGRyZXNzVHlwZSkgKGNvbnN0IGNoYXIqIHByb2NOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHAKaW5kZXggZjJhNjU0MzE3ZDJlY2E0NWY0MTQwOGJkOWI5YzgyZmFmY2IxNzNjOC4uZGY2N2E0
NTgyMmU2NjdiYmFmMWNiY2YwZjViNzY2ZjQ2NjUyNGQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIG1fY29u
dGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgIGJsaXRNdWx0aXNhbXBsZUZyYW1lYnVm
ZmVyQW5kUmVzdG9yZUNvbnRleHQoKTsKIAotICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5hY2NlbGVy
YXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkgeworICAgIGlmICh0ZXh0
dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9k
ZSAmJiBtX2dyYXBoaWNzU3VyZmFjZSkgewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAg
ICAgICAvLyBDR0wgb25seSBwcm92aWRlcyB1cyB0aGUgY29udGV4dCwgYnV0IG5vdCB0aGUgdmll
dyB0aGUgY29udGV4dCBpcyBjdXJyZW50bHkgYm91bmQgdG8uCiAgICAgICAgIC8vIFRvIG1ha2Ug
c3VyZSB0aGUgY29udGV4dCBpcyBib3VuZCB0aGUgdGhlIHJpZ2h0IHN1cmZhY2Ugd2UgaGF2ZSB0
byBkbyBhIG1ha2VDdXJyZW50IHRocm91Z2ggUU9wZW5HTCBhZ2Fpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmgKaW5kZXggNzMxYWYyYjZkNjVjM2RhOWFkNDcyOWJiNzYyNTVmMzhkYmVmNGQwNC4uZTNl
ZDA1Mzg3YTNiZWY4Y2FmYzZjZGY1ZmI0M2Y4ZmE5ZDYyZmY0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmgKQEAgLTMyLDE3ICszMiwxNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lm
IE9TKERBUldJTikKLXR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1cmZhY2VSZWY7Ci10
eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsKKyAgICB0eXBlZGVm
IHN0cnVjdCBfX0lPU3VyZmFjZSogSU9TdXJmYWNlUmVmOworICAgIHR5cGVkZWYgSU9TdXJmYWNl
UmVmIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlOworI2VsaWYgT1MoV0lORE9XUykKKyAgICB0eXBl
ZGVmIEhBTkRMRSBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsKKyNlbGlmIFVTRShHTFgpCisgICAg
dHlwZWRlZiB1aW50MzJfdCBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsKKyNlbGlmIFVTRShFR0wp
CisgICAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsKICNlbmRpZgogCi0j
aWYgT1MoTElOVVgpCi10eXBlZGVmIHVpbnQzMl90IFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlOwot
I2VuZGlmCi0KLSNpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBIQU5ETEUgUGxhdGZvcm1HcmFwaGlj
c1N1cmZhY2U7Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VU
b2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhp
Y3NTdXJmYWNlVG9rZW4uaAppbmRleCBjOTdmMzY4YmQ3NjJiYzNkNzg0YzcwZmNlYTFhMmI5ZDNj
NmRlNWE3Li5kMWZjNGQ2OTQ0MjU2YmRhZGExYzMzNzM5YjQzYTA5NDVhYzFmZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2VUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmgKQEAgLTM1LDEzICszNSwxNSBAQCBzdHJ1Y3QgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4gewogCiAjaWYgT1MoREFSV0lOKQogICAgIHR5cGVkZWYgbWFjaF9w
b3J0X3QgQnVmZmVySGFuZGxlOwotI2VsaWYgT1MoTElOVVgpCi0gICAgdHlwZWRlZiB1aW50MzJf
dCBCdWZmZXJIYW5kbGU7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExFIEJ1
ZmZlckhhbmRsZTsKKyNlbGlmIFVTRShHTFgpCisgICAgdHlwZWRlZiB1aW50MzJfdCBCdWZmZXJI
YW5kbGU7CisjZWxpZiBVU0UoRUdMKQorICAgIHR5cGVkZWYgdm9pZCogQnVmZmVySGFuZGxlOwog
I2VuZGlmCiAKLSNpZiBIQVZFKEdMWCkKKyNpZiBVU0UoR0xYKQogICAgIEdyYXBoaWNzU3VyZmFj
ZVRva2VuKHVpbnQzMl90IHdpbmRvd0lEID0gMCkKICAgICAgICAgOiBmcm9udEJ1ZmZlckhhbmRs
ZSh3aW5kb3dJRCkKICAgICB7IH0KQEAgLTU2LDEyICs1OCwxMCBAQCBzdHJ1Y3QgR3JhcGhpY3NT
dXJmYWNlVG9rZW4gewogICAgICAgICByZXR1cm4gZnJvbnRCdWZmZXJIYW5kbGU7CiAgICAgfQog
Ci0jZW5kaWYKLQotI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyNlbHNlCiAgICAgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4oQnVmZmVySGFuZGxlIGZyb250QnVmZmVyID0gMCwgQnVmZmVySGFu
ZGxlIGJhY2tCdWZmZXIgPSAwKQotICAgICAgICA6IGZyb250QnVmZmVySGFuZGxlKGZyb250QnVm
ZmVyKQotICAgICAgICAsIGJhY2tCdWZmZXJIYW5kbGUoYmFja0J1ZmZlcikKKyAgICAgICAgOiBi
YWNrQnVmZmVySGFuZGxlKGJhY2tCdWZmZXIpCisgICAgICAgICwgZnJvbnRCdWZmZXJIYW5kbGUo
ZnJvbnRCdWZmZXIpCiAgICAgeyB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhp
Y3NTdXJmYWNlVG9rZW4gJnJocykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9HcmFwaGljc1N1cmZhY2VFR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0dyYXBoaWNzU3VyZmFj
ZUVHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3NDFiYTczOGIxMGIzZGJmZDNiYzRhNzk0ODhlZWUzYTlm
MGJkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9HcmFwaGljc1N1cmZhY2VFR0wuY3BwCkBAIC0wLDAgKzEsNTAyIEBACisv
KgorCisgQ29weXJpZ2h0IChDKSAyMDEyIFplbm8gQWxiaXNzZXIgPHplbm9Ad2Via2l0Lm9yZz4K
KworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdMLmgiCisKKyNpZiBQTEFURk9STShRVCkKKy8vIFF0IGhlYWRlcnMg
bXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgZWdsIGhlYWRlcnMuCisjaW5jbHVkZSA8UUd1aUFwcGxp
Y2F0aW9uPgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPHFwYS9xcGxhdGZv
cm1uYXRpdmVpbnRlcmZhY2UuaD4KKyNlbmRpZgorCisjZGVmaW5lIEVHTF9FR0xFWFRfUFJPVE9U
WVBFUyAvLyBUaGlzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgaW5jbHVkaW5nIGVnbC5oIGFuZCBl
Z2xleHQuaC4KKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgU1RSSU5HSUZZKC4uLikgI19fVkFfQVJH
U19fCisKK3N0YXRpYyBHTHVpbnQgbG9hZFNoYWRlcihHTGVudW0gdHlwZSwgY29uc3QgR0xjaGFy
ICpzaGFkZXJTcmMpCit7CisgICAgR0x1aW50IHNoYWRlcjsKKyAgICBHTGludCBjb21waWxlZDsK
KworICAgIHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHR5cGUpOworICAgIGlmICghc2hhZGVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNoYWRl
clNyYywgMCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29tcGls
ZWQpIHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBzaGFkZXI7Cit9CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VQ
cml2YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKQorICAgICAgICA6IG1fdG9rZW4o
dG9rZW4pCisgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKKyAgICAgICAgLCBtX2RldGFj
aGVkUmVhZFN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2RldGFjaGVkRHJhd1N1cmZhY2UoMCkKKyAg
ICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2VnbERpc3BsYXkoMCkKKyAgICAgICAg
LCBtX2VnbENvbnRleHQoMCkKKyAgICAgICAgLCBtX2VnbENvbmZpZygwKQorICAgICAgICAsIG1f
ZWdsRnJvbnRCdWZmZXJTdXJmYWNlKDApCisgICAgICAgICwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFj
ZSgwKQorICAgICAgICAsIG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUodG9rZW4uZnJv
bnRCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKHRva2Vu
LmZyb250QnVmZmVySGFuZGxlKQorICAgICAgICAsIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlKHRv
a2VuLmJhY2tCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkK
KyAgICAgICAgLCBtX3NoYWRlclByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVT
aGFkZXJQcm9ncmFtKCk7CisgICAgfQorCisKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNv
bnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdzKQorICAgICAgICA6IG1fZGV0YWNo
ZWRDb250ZXh0KDApCisgICAgICAgICwgbV9kZXRhY2hlZFJlYWRTdXJmYWNlKDApCisgICAgICAg
ICwgbV9kZXRhY2hlZERyYXdTdXJmYWNlKDApCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAg
ICAgICwgbV9lZ2xEaXNwbGF5KDApCisgICAgICAgICwgbV9lZ2xDb250ZXh0KDApCisgICAgICAg
ICwgbV9lZ2xDb25maWcoMCkKKyAgICAgICAgLCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSgwKQor
ICAgICAgICAsIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2luaXRpYWxG
cm9udEJ1ZmZlclNoYXJlSGFuZGxlKDApCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFu
ZGxlKDApCisgICAgICAgICwgbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGUoMCkKKyAgICAgICAgLCBt
X2Zyb250QnVmZmVyVGV4dHVyZSgwKQorICAgICAgICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQorICAg
IHsKKyAgICAgICAgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKTsKKworICAgICAgICBzdGF0aWMg
UEZORUdMUVVFUllTVVJGQUNFUE9JTlRFUkFOR0xFUFJPQyBlZ2xRdWVyeVN1cmZhY2VQb2ludGVy
QU5HTEUgPSAwOworICAgICAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSkgewor
ICAgICAgICAgICAgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5FR0xRVUVSWVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygi
ZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFIikpOworICAgICAgICAgICAgaWYgKCFlZ2xRdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFtX2VnbERpc3BsYXkgfHwgIW1fZWdsQ29udGV4dCB8fCAhbV9lZ2xD
b25maWcpIHsKKyAgICAgICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldEN1cnJlbnREaXNwbGF5
KCk7CisKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgIFFQbGF0Zm9ybU5hdGl2ZUludGVy
ZmFjZSogbmF0aXZlSW50ZXJmYWNlID0gUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUlu
dGVyZmFjZSgpOworICAgICAgICAgICAgbV9lZ2xDb25maWcgPSBzdGF0aWNfY2FzdDxFR0xDb25m
aWc+KG5hdGl2ZUludGVyZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlM
aXRlcmFsKCJlZ2xDb25maWciKSwgc2hhcmVDb250ZXh0KSk7CisgICAgICAgICAgICBFR0xDb250
ZXh0IGVnbFNoYXJlQ29udGV4dCA9IHN0YXRpY19jYXN0PEVHTENvbnRleHQ+KG5hdGl2ZUludGVy
ZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJlZ2xDb250
ZXh0IiksIHNoYXJlQ29udGV4dCkpOworI2VuZGlmCisgICAgICAgICAgICBFR0xpbnQgY29udGV4
dEF0dHJpYnV0ZXNbXSA9IHsgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05F
IH07CisgICAgICAgICAgICBtX2VnbENvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZWdsRGlz
cGxheSwgbV9lZ2xDb25maWcsIGVnbFNoYXJlQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOwor
ICAgICAgICB9CisKKyAgICAgICAgRUdMaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAg
IEVHTF9XSURUSCwgc2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5o
ZWlnaHQoKSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdC
LAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwKKyAgICAg
ICAgICAgIEVHTF9OT05FCisgICAgICAgIH07CisKKyAgICAgICAgbV9lZ2xGcm9udEJ1ZmZlclN1
cmZhY2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShtX2VnbERpc3BsYXksIG1fZWdsQ29uZmln
LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0
ZVBidWZmZXJTdXJmYWNlKG1fZWdsRGlzcGxheSwgbV9lZ2xDb25maWcsIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBpZiAobV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UgfHwg
bV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUobV9lZ2xEaXNwbGF5
LCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRM
RV9BTkdMRSwgJm1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk7CisgICAgICAgIGVnbFF1ZXJ5U3Vy
ZmFjZVBvaW50ZXJBTkdMRShtX2VnbERpc3BsYXksIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UsIEVH
TF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsICZtX2JhY2tCdWZmZXJTaGFyZUhh
bmRsZSk7CisKKyAgICAgICAgbV9pbml0aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRsZSA9IG1fZnJv
bnRCdWZmZXJTaGFyZUhhbmRsZTsKKworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNl
VG9rZW4obV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlLCBtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZSk7
CisgICAgfQorCisgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQorICAgIHsKKyAgICAgICAg
cmVsZWFzZUZyb250QnVmZmVyVGV4dHVyZSgpOworCisgICAgICAgIGlmIChtX2VnbEJhY2tCdWZm
ZXJTdXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5LCBt
X2VnbEJhY2tCdWZmZXJTdXJmYWNlKTsKKworICAgICAgICBpZiAobV9zaGFkZXJQcm9ncmFtKQor
ICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAgICAgIG1f
c2hhZGVyUHJvZ3JhbSA9IDA7CisKKyAgICAgICAgaWYgKG1fZWdsRGlzcGxheSAmJiBtX2VnbENv
bnRleHQpCisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2VnbERpc3BsYXksIG1fZWds
Q29udGV4dCk7CisgICAgfQorCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKKyAgICB7CisgICAgICAgIGlmICghbWFr
ZUN1cnJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlKTsKKyAg
ICAgICAgZ2xGaW5pc2goKTsKKyAgICAgICAgZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKKyAgICBi
b29sIG1ha2VDdXJyZW50KCkKKyAgICB7CisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gZWds
R2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgbV9kZXRhY2hlZFJlYWRTdXJmYWNlID0gZWds
R2V0Q3VycmVudFN1cmZhY2UoRUdMX1JFQUQpOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1cmZh
Y2UgPSBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xfRFJBVyk7CisKKyAgICAgICAgcmV0dXJuIGVn
bE1ha2VDdXJyZW50KG1fZWdsRGlzcGxheSwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSwgbV9lZ2xC
YWNrQnVmZmVyU3VyZmFjZSwgbV9lZ2xDb250ZXh0KTsKKyAgICB9CisKKyAgICBib29sIGRvbmVD
dXJyZW50KCkKKyAgICB7CisgICAgICAgIGlmICghbV9kZXRhY2hlZENvbnRleHQgfHwgIW1fZGV0
YWNoZWREcmF3U3VyZmFjZSB8fCAhbV9kZXRhY2hlZFJlYWRTdXJmYWNlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGVnbE1ha2VDdXJyZW50KG1f
ZWdsRGlzcGxheSwgbV9kZXRhY2hlZERyYXdTdXJmYWNlLCBtX2RldGFjaGVkUmVhZFN1cmZhY2Us
IG1fZGV0YWNoZWRDb250ZXh0KTsKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAwOworICAg
ICAgICBtX2RldGFjaGVkUmVhZFN1cmZhY2UgPSAwOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1
cmZhY2UgPSAwOworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBQbGF0Zm9y
bUdyYXBoaWNzU3VyZmFjZSBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICBpZiAobV9mcm9u
dEJ1ZmZlclRleHR1cmUpCisgICAgICAgICAgICByZWxlYXNlRnJvbnRCdWZmZXJUZXh0dXJlKCk7
CisgICAgICAgIHN0ZDo6c3dhcChtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgbV9lZ2xCYWNrQnVm
ZmVyU3VyZmFjZSk7CisgICAgICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyU2hhcmVIYW5kbGUs
IG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlKTsKKworICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZl
clNoYXJlSGFuZGxlOworICAgIH0KKworICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworICAgIHVpbnQz
Ml90IGZyb250QnVmZmVyVGV4dHVyZUlEKCkKKyAgICB7CisgICAgICAgIGlmICghbV9lZ2xGcm9u
dEJ1ZmZlclN1cmZhY2UpIHsKKyAgICAgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlID0g
Y3JlYXRlU3VyZmFjZUZyb21TaGFyZUhhbmRsZShtX3NpemUsIG1fZnJvbnRCdWZmZXJTaGFyZUhh
bmRsZSk7CisKKyAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0
dXJlKTsKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKTsK
KyAgICAgICAgICAgIGVnbEJpbmRUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZm
ZXJTdXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworCisgICAgICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAg
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
X1RPX0VER0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZmZXJUZXh0
dXJlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIGluaXRpYWxGcm9udEJ1
ZmZlclNoYXJlSGFuZGxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luaXRpYWxG
cm9udEJ1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJm
YWNlIGZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNz
U3VyZmFjZSBiYWNrQnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZUZy
b250QnVmZmVyVGV4dHVyZSgpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1ZmZlclRleHR1
cmUpIHsKKyAgICAgICAgICAgIGVnbFJlbGVhc2VUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWds
RnJvbnRCdWZmZXJTdXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworICAgICAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICAgICAgbV9mcm9u
dEJ1ZmZlclRleHR1cmUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZWdsRnJvbnRC
dWZmZXJTdXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5
LCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSk7CisgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJm
YWNlID0gMDsKKyAgICB9CisKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc2l6ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxp
emVTaGFkZXJQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIGlmIChtX3NoYWRlclByb2dyYW0pCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgR0xjaGFyIHZTaGFkZXJTdHJbXSA9CisgICAg
ICAgICAgICBTVFJJTkdJRlkoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzIg
dmVydGV4OworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWMyIHRleHR1cmVDb29y
ZGluYXRlczsKKyAgICAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdGV4dHVyZUNvb3Jk
czsKKyAgICAgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2ZXJ0ZXgsIDAuMCwgMS4wKTsK
KyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUNvb3JkcyA9IHRleHR1cmVDb29yZGluYXRlczsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworCisgICAgICAgIEdMY2hhciBmU2hh
ZGVyU3RyW10gPQorICAgICAgICAgICAgU1RSSU5HSUZZKAorICAgICAgICAgICAgICAgIHZhcnlp
bmcgaGlnaHAgdmVjMiB0ZXh0dXJlQ29vcmRzOworICAgICAgICAgICAgICAgIHVuaWZvcm0gc2Ft
cGxlcjJEIHRleHR1cmU7CisgICAgICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBoaWdocCB2ZWMzIGNvbG9yID0gdGV4dHVy
ZTJEKHRleHR1cmUsIHRleHR1cmVDb29yZHMpLnJnYjsKKyAgICAgICAgICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNChjbGFtcChjb2xvciwgMC4wLCAxLjApLCAxLjApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgR0x1aW50IHZlcnRleFNoYWRlcjsK
KyAgICAgICAgR0x1aW50IGZyYWdtZW50U2hhZGVyOworICAgICAgICBHTGludCBsaW5rZWQ7CisK
KyAgICAgICAgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2U2hh
ZGVyU3RyKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX0ZSQUdNRU5U
X1NIQURFUiwgZlNoYWRlclN0cik7CisgICAgICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICFmcmFn
bWVudFNoYWRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3NoYWRlclByb2dy
YW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZ2xBdHRhY2hTaGFkZXIobV9zaGFkZXJQcm9n
cmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbEF0dGFjaFNoYWRlcihtX3NoYWRlclByb2dy
YW0sIGZyYWdtZW50U2hhZGVyKTsKKworICAgICAgICBnbExpbmtQcm9ncmFtKG1fc2hhZGVyUHJv
Z3JhbSk7CisgICAgICAgIGdsR2V0UHJvZ3JhbWl2KG1fc2hhZGVyUHJvZ3JhbSwgR0xfTElOS19T
VEFUVVMsICZsaW5rZWQpOworICAgICAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAgICAgICAgICBtX3NoYWRlclByb2dy
YW0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgbV92ZXJ0ZXhBdHRyID0gZ2xHZXRBdHRyaWJM
b2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJ2ZXJ0ZXgiKTsKKyAgICAgICAgbV90ZXh0dXJlQ29v
cmRpbmF0ZXNBdHRyID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJ0ZXh0
dXJlQ29vcmRpbmF0ZXMiKTsKKyAgICAgICAgbV90ZXh0dXJlVW5pZm9ybSA9IGdsR2V0QXR0cmli
TG9jYXRpb24obV9zaGFkZXJQcm9ncmFtLCAidGV4dHVyZSIpOworCisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURH
RSk7CisgICAgfQorCisgICAgRUdMU3VyZmFjZSBjcmVhdGVTdXJmYWNlRnJvbVNoYXJlSGFuZGxl
KGNvbnN0IEludFNpemUmIHNpemUsIEdyYXBoaWNzU3VyZmFjZVRva2VuOjpCdWZmZXJIYW5kbGUg
c2hhcmVIYW5kbGUpCisgICAgeworICAgICAgICBpZiAoIW1fZWdsRGlzcGxheSAgfHwgIW1fZWds
Q29uZmlnKSB7CisgICAgICAgICAgICBtX2VnbERpc3BsYXkgPSBlZ2xHZXRDdXJyZW50RGlzcGxh
eSgpOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICBRUGxhdGZvcm1OYXRpdmVJbnRl
cmZhY2UqIG5hdGl2ZUludGVyZmFjZSA9IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYXRpdmVJ
bnRlcmZhY2UoKTsKKyAgICAgICAgICAgIG1fZWdsQ29uZmlnID0gc3RhdGljX2Nhc3Q8RUdMQ29u
ZmlnPihuYXRpdmVJbnRlcmZhY2UtPm5hdGl2ZVJlc291cmNlRm9yQ29udGV4dChRQnl0ZUFycmF5
TGl0ZXJhbCgiZWdsQ29uZmlnIiksIFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpKSk7
CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIEVHTGludCBhdHRyaWJ1dGVzW10gPSB7Cisg
ICAgICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgoKSwKKyAgICAgICAgICAgIEVHTF9IRUlH
SFQsIHNpemUuaGVpZ2h0KCksCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9U
RVhUVVJFX1JHQiwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX1RFWFRVUkVf
MkQsCisgICAgICAgICAgICBFR0xfTk9ORQorICAgICAgICB9OworCisgICAgICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKG1fZWdsRGlzcGxh
eSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwgcmVpbnRlcnByZXRfY2Fz
dDxFR0xDbGllbnRCdWZmZXI+KHNoYXJlSGFuZGxlKSwgbV9lZ2xDb25maWcsIGF0dHJpYnV0ZXMp
OworICAgICAgICBBU1NFUlQoc3VyZmFjZSk7CisKKyAgICAgICAgcmV0dXJuIHN1cmZhY2U7Cisg
ICAgfQorCisgICAgdm9pZCBkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlKQorICAgIHsKKyAg
ICAgICAgZ2xVc2VQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisKKyAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4dHVyZSk7CisKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBH
TF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgICAgICBHTGZsb2F0
IGFmVmVydGljZXNbXSA9IHsKKyAgICAgICAgICAgIC0xLCAtMSwKKyAgICAgICAgICAgICAxLCAt
MSwKKyAgICAgICAgICAgIC0xLCAgMSwKKyAgICAgICAgICAgICAxLCAgMQorICAgICAgICB9Owor
ICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV92ZXJ0ZXhBdHRyLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIGFmVmVydGljZXMpOworCisgICAgICAgIEdMZmxvYXQgYWZ0ZXh0dXJlQ29v
cmRpbmF0ZXNbXSA9IHsKKyAgICAgICAgICAgIDAsIDEsCisgICAgICAgICAgICAxLCAxLAorICAg
ICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIDEsIDAKKyAgICAgICAgfTsKKyAgICAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fdGV4dHVyZUNvb3JkaW5hdGVzQXR0ciwgMiwgR0xfRkxPQVQs
IEdMX0ZBTFNFLCAwLCBhZnRleHR1cmVDb29yZGluYXRlcyk7CisKKyAgICAgICAgZ2xVbmlmb3Jt
MWkobV90ZXh0dXJlVW5pZm9ybSwgMCk7CisKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShtX3ZlcnRleEF0dHIpOworICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1f
dGV4dHVyZUNvb3JkaW5hdGVzQXR0cik7CisKKyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFO
R0xFX1NUUklQLCAwLCA0KTsKKworICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSht
X3ZlcnRleEF0dHIpOworICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3RleHR1
cmVDb29yZGluYXRlc0F0dHIpOworCisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgMCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIG1fdG9r
ZW47CisgICAgRUdMQ29udGV4dCBtX2RldGFjaGVkQ29udGV4dDsKKyAgICBFR0xTdXJmYWNlIG1f
ZGV0YWNoZWRSZWFkU3VyZmFjZTsKKyAgICBFR0xTdXJmYWNlIG1fZGV0YWNoZWREcmF3U3VyZmFj
ZTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBFR0xEaXNwbGF5IG1fZWdsRGlzcGxheTsKKyAg
ICBFR0xDb250ZXh0IG1fZWdsQ29udGV4dDsKKyAgICBFR0xDb25maWcgbV9lZ2xDb25maWc7Cisg
ICAgRUdMU3VyZmFjZSBtX2VnbEZyb250QnVmZmVyU3VyZmFjZTsKKyAgICBFR0xTdXJmYWNlIG1f
ZWdsQmFja0J1ZmZlclN1cmZhY2U7CisgICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgbV9pbml0
aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBt
X2Zyb250QnVmZmVyU2hhcmVIYW5kbGU7CisgICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgbV9i
YWNrQnVmZmVyU2hhcmVIYW5kbGU7CisgICAgR0x1aW50IG1fZnJvbnRCdWZmZXJUZXh0dXJlOwor
ICAgIEdMaW50IG1fc2hhZGVyUHJvZ3JhbTsKKworICAgIEdMdWludCBtX3ZlcnRleEF0dHI7Cisg
ICAgR0x1aW50IG1fdGV4dHVyZUNvb3JkaW5hdGVzQXR0cjsKKyAgICBHTHVpbnQgbV90ZXh0dXJl
VW5pZm9ybTsKK307CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1FeHBvcnQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnRva2VuKCk7Cit9CisKK3Vp
bnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1HZXRUZXh0dXJlSUQoKQoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlEKCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlUb0dMVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQz
Ml90IGlkLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0
KQoreworICAgIC8vIEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgR3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0KQoreworICAgIG1fcHJpdmF0ZS0+Y29weUZyb21UZXh0dXJl
KHRleHR1cmUsIHNvdXJjZVJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHkpCit7CisgICAgSW50U2l6ZSBzaXplID0gbV9wcml2YXRlLT5z
aXplKCk7CisgICAgRmxvYXRSZWN0IHJlY3RPbkNvbnRlbnRzKEZsb2F0UG9pbnQ6Onplcm8oKSwg
c2l6ZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CisgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsKKyAgICBzdGF0aWNf
Y2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUocGxhdGZv
cm1HZXRUZXh0dXJlSUQoKSwgMCwgc2l6ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5KTsKK30KKwordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZy
b250QnVmZmVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9wcml2YXRlLT5pbml0aWFsRnJvbnRCdWZm
ZXJTaGFyZUhhbmRsZSgpID09IG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobV9wcml2YXRlLT5pbml0aWFsRnJvbnRCdWZmZXJT
aGFyZUhhbmRsZSgpID09IG1fcHJpdmF0ZS0+YmFja0J1ZmZlclNoYXJlSGFuZGxlKCkpCisgICAg
ICAgIHJldHVybiAxOworICAgIHJldHVybiAweEZGRkY7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVmZmVycygpCit7CisgICAgbV9wcml2YXRlLT5zd2FwQnVm
ZmVycygpOworICAgIHJldHVybiBwbGF0Zm9ybUZyb250QnVmZmVyKCk7Cit9CisKK0ludFNpemUg
R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPnNpemUoKTsKK30KKworUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0KQoreworICAgIC8v
IFNpbmdsZSBidWZmZXJlZCBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0
ZWQuCisgICAgaWYgKGZsYWdzICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3Vw
cG9ydHNTaW5nbGVCdWZmZXJlZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPigpOworCisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0
UmVmKG5ldyBHcmFwaGljc1N1cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNlLT5tX3By
aXZhdGUgPSBuZXcgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShzaGFyZUNvbnRleHQsIHNpemUsIGZs
YWdzKTsKKworICAgIGlmICghc3VyZmFjZS0+bV9wcml2YXRlLT5mcm9udEJ1ZmZlclNoYXJlSGFu
ZGxlKCkgfHwgIXN1cmZhY2UtPm1fcHJpdmF0ZS0+YmFja0J1ZmZlclNoYXJlSGFuZGxlKCkpCisg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKKworICAgIHJldHVy
biBzdXJmYWNlOworfQorCitQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJm
YWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgY29u
c3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQoreworICAgIC8vIFNpbmdsZSBidWZmZXJl
ZCBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisgICAgaWYgKGZs
YWdzICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZm
ZXJlZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisg
ICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGlj
c1N1cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBuZXcgR3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZShzaXplLCB0b2tlbik7CisKKyAgICBpZiAoIXN1cmZhY2UtPm1f
cHJpdmF0ZS0+ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSgpIHx8ICFzdXJmYWNlLT5tX3ByaXZhdGUt
PmJhY2tCdWZmZXJTaGFyZUhhbmRsZSgpKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFw
aGljc1N1cmZhY2U+KCk7CisKKyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworY2hhciogR3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybUxvY2soY29uc3QgSW50UmVjdCYgcmVjdCwgaW50KiBvdXRwdXRT
dHJpZGUsIExvY2tPcHRpb25zIGxvY2tPcHRpb25zKQoreworICAgIC8vIEdyYXBoaWNzU3VyZmFj
ZSBpcyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBub3Qg
cmVxdWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorICAgIHJldHVybiAwOworfQorCit2b2lk
IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1VbmxvY2soKQoreworICAgIC8vIEdyYXBoaWNzU3Vy
ZmFjZSBpcyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBu
b3QgcmVxdWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorfQorCit2b2lkIEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRlOworICAgIG1f
cHJpdmF0ZSA9IDA7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJm
YWNlV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE4YzVlN2UzYmMxZGY4
OTJmMzcxODkyMWU4ZjBhN2UwMmRlZjM5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCww
IEBACi0vKgotCi0gQ29weXJpZ2h0IChDKSAyMDEyIFplbm8gQWxiaXNzZXIgPHplbm9Ad2Via2l0
Lm9yZz4KLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0j
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0KLSNkZWZpbmUgRUdMX0VHTEVYVF9QUk9UT1RZ
UEVTIC8vIFRoaXMgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSBpbmNsdWRpbmcgZWdsLmggYW5kIGVn
bGV4dC5oLgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0K
LSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8
UU9wZW5HTENvbnRleHQ+Ci0jaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5o
PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2RlZmluZSBTVFJJTkdJRlkoLi4u
KSAjX19WQV9BUkdTX18KLQotc3RhdGljIEdMdWludCBsb2FkU2hhZGVyKEdMZW51bSB0eXBlLCBj
b25zdCBHTGNoYXIgKnNoYWRlclNyYykKLXsKLSAgICBHTHVpbnQgc2hhZGVyOwotICAgIEdMaW50
IGNvbXBpbGVkOwotCi0gICAgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIodHlwZSk7Ci0gICAgaWYg
KCFzaGFkZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVy
LCAxLCAmc2hhZGVyU3JjLCAwKTsKLSAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKLSAgICBn
bEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlZCk7Ci0gICAg
aWYgKCFjb21waWxlZCkgewotICAgICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHNoYWRlcjsKLX0KLQotc3RydWN0IEdyYXBo
aWNzU3VyZmFjZVByaXZhdGUgewotcHVibGljOgotICAgIEdyYXBoaWNzU3VyZmFjZVByaXZhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4pCi0gICAgICAg
IDogbV90b2tlbih0b2tlbikKLSAgICAgICAgLCBtX2RldGFjaGVkQ29udGV4dCgwKQotICAgICAg
ICAsIG1fZGV0YWNoZWRSZWFkU3VyZmFjZSgwKQotICAgICAgICAsIG1fZGV0YWNoZWREcmF3U3Vy
ZmFjZSgwKQotICAgICAgICAsIG1fc2l6ZShzaXplKQotICAgICAgICAsIG1fZWdsRGlzcGxheSgw
KQotICAgICAgICAsIG1fZWdsQ29udGV4dCgwKQotICAgICAgICAsIG1fZWdsQ29uZmlnKDApCi0g
ICAgICAgICwgbV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UoMCkKLSAgICAgICAgLCBtX2VnbEJhY2tC
dWZmZXJTdXJmYWNlKDApCi0gICAgICAgICwgbV9pbml0aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRs
ZSh0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkKLSAgICAgICAgLCBtX2Zyb250QnVmZmVyU2hhcmVI
YW5kbGUodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpCi0gICAgICAgICwgbV9iYWNrQnVmZmVyU2hh
cmVIYW5kbGUodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkKLSAgICAgICAgLCBtX2Zyb250QnVmZmVy
VGV4dHVyZSgwKQotICAgICAgICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAg
aW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKTsKLSAgICB9Ci0KLQotICAgIEdyYXBoaWNzU3VyZmFj
ZVByaXZhdGUoY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBzaGFyZUNvbnRleHQsIGNv
bnN0IEludFNpemUmIHNpemUsIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCi0gICAgICAg
IDogbV9kZXRhY2hlZENvbnRleHQoMCkKLSAgICAgICAgLCBtX2RldGFjaGVkUmVhZFN1cmZhY2Uo
MCkKLSAgICAgICAgLCBtX2RldGFjaGVkRHJhd1N1cmZhY2UoMCkKLSAgICAgICAgLCBtX3NpemUo
c2l6ZSkKLSAgICAgICAgLCBtX2VnbERpc3BsYXkoMCkKLSAgICAgICAgLCBtX2VnbENvbnRleHQo
MCkKLSAgICAgICAgLCBtX2VnbENvbmZpZygwKQotICAgICAgICAsIG1fZWdsRnJvbnRCdWZmZXJT
dXJmYWNlKDApCi0gICAgICAgICwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSgwKQotICAgICAgICAs
IG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUoMCkKLSAgICAgICAgLCBtX2Zyb250QnVm
ZmVyU2hhcmVIYW5kbGUoMCkKLSAgICAgICAgLCBtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZSgwKQot
ICAgICAgICAsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKDApCi0gICAgICAgICwgbV9zaGFkZXJQcm9n
cmFtKDApCi0gICAgewotICAgICAgICBpbml0aWFsaXplU2hhZGVyUHJvZ3JhbSgpOwotCi0gICAg
ICAgIHN0YXRpYyBQRk5FR0xRVUVSWVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DIGVnbFF1ZXJ5U3Vy
ZmFjZVBvaW50ZXJBTkdMRSA9IDA7Ci0gICAgICAgIGlmICghZWdsUXVlcnlTdXJmYWNlUG9pbnRl
ckFOR0xFKSB7Ci0gICAgICAgICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUgPSByZWlu
dGVycHJldF9jYXN0PFBGTkVHTFFVRVJZU1VSRkFDRVBPSU5URVJBTkdMRVBST0M+KGVnbEdldFBy
b2NBZGRyZXNzKCJlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUiKSk7Ci0gICAgICAgICAgICBp
ZiAoIWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1fZWdsRGlzcGxheSB8fCAhbV9lZ2xDb250ZXh0
IHx8ICFtX2VnbENvbmZpZykgewotICAgICAgICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0Q3Vy
cmVudERpc3BsYXkoKTsKLQotI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICAgICAgUVBsYXRmb3Jt
TmF0aXZlSW50ZXJmYWNlKiBuYXRpdmVJbnRlcmZhY2UgPSBRR3VpQXBwbGljYXRpb246OnBsYXRm
b3JtTmF0aXZlSW50ZXJmYWNlKCk7Ci0gICAgICAgICAgICBtX2VnbENvbmZpZyA9IHN0YXRpY19j
YXN0PEVHTENvbmZpZz4obmF0aXZlSW50ZXJmYWNlLT5uYXRpdmVSZXNvdXJjZUZvckNvbnRleHQo
UUJ5dGVBcnJheUxpdGVyYWwoImVnbENvbmZpZyIpLCBzaGFyZUNvbnRleHQpKTsKLSAgICAgICAg
ICAgIEVHTENvbnRleHQgZWdsU2hhcmVDb250ZXh0ID0gc3RhdGljX2Nhc3Q8RUdMQ29udGV4dD4o
bmF0aXZlSW50ZXJmYWNlLT5uYXRpdmVSZXNvdXJjZUZvckNvbnRleHQoUUJ5dGVBcnJheUxpdGVy
YWwoImVnbENvbnRleHQiKSwgc2hhcmVDb250ZXh0KSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIEVH
TGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geyBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwg
MiwgRUdMX05PTkUgfTsKLSAgICAgICAgICAgIG1fZWdsQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQobV9lZ2xEaXNwbGF5LCBtX2VnbENvbmZpZywgZWdsU2hhcmVDb250ZXh0LCBjb250ZXh0QXR0
cmlidXRlcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBFR0xpbnQgYXR0cmlidXRlc1tdID0gewot
ICAgICAgICAgICAgRUdMX1dJRFRILCBzaXplLndpZHRoKCksCi0gICAgICAgICAgICBFR0xfSEVJ
R0hULCBzaXplLmhlaWdodCgpLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xf
VEVYVFVSRV9SR0IsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9URVhUVVJF
XzJELAotICAgICAgICAgICAgRUdMX05PTkUKLSAgICAgICAgfTsKLQotICAgICAgICBtX2VnbEZy
b250QnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKG1fZWdsRGlzcGxheSwg
bV9lZ2xDb25maWcsIGF0dHJpYnV0ZXMpOwotICAgICAgICBtX2VnbEJhY2tCdWZmZXJTdXJmYWNl
ID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobV9lZ2xEaXNwbGF5LCBtX2VnbENvbmZpZywgYXR0
cmlidXRlcyk7Ci0gICAgICAgIGlmIChtX2VnbEZyb250QnVmZmVyU3VyZmFjZSA9PSBFR0xfTk9f
U1VSRkFDRSB8fCBtX2VnbEJhY2tCdWZmZXJTdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSht
X2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlLCBFR0xfRDNEX1RFWFRVUkVfMkRf
U0hBUkVfSEFORExFX0FOR0xFLCAmbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKTsKLSAgICAgICAg
ZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKG1fZWdsRGlzcGxheSwgbV9lZ2xCYWNrQnVmZmVy
U3VyZmFjZSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwgJm1fYmFja0J1
ZmZlclNoYXJlSGFuZGxlKTsKLQotICAgICAgICBtX2luaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFu
ZGxlID0gbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlOwotCi0gICAgICAgIG1fdG9rZW4gPSBHcmFw
aGljc1N1cmZhY2VUb2tlbihtX2Zyb250QnVmZmVyU2hhcmVIYW5kbGUsIG1fYmFja0J1ZmZlclNo
YXJlSGFuZGxlKTsKLSAgICB9Ci0KLSAgICB+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSgpCi0gICAg
ewotICAgICAgICByZWxlYXNlRnJvbnRCdWZmZXJUZXh0dXJlKCk7Ci0KLSAgICAgICAgaWYgKG1f
ZWdsQmFja0J1ZmZlclN1cmZhY2UpCi0gICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtX2Vn
bERpc3BsYXksIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UpOwotCi0gICAgICAgIGlmIChtX3NoYWRl
clByb2dyYW0pCi0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKTsK
LSAgICAgICAgbV9zaGFkZXJQcm9ncmFtID0gMDsKLQotICAgICAgICBpZiAobV9lZ2xEaXNwbGF5
ICYmIG1fZWdsQ29udGV4dCkKLSAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1fZWdsRGlz
cGxheSwgbV9lZ2xDb250ZXh0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZSh1
aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQotICAgIHsKLSAgICAg
ICAgaWYgKCFtYWtlQ3VycmVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGRyYXdUZXh0dXJlKHRl
eHR1cmUpOwotICAgICAgICBnbEZpbmlzaCgpOwotICAgICAgICBkb25lQ3VycmVudCgpOwotICAg
IH0KLQotICAgIGJvb2wgbWFrZUN1cnJlbnQoKQotICAgIHsKLSAgICAgICAgbV9kZXRhY2hlZENv
bnRleHQgPSBlZ2xHZXRDdXJyZW50Q29udGV4dCgpOwotICAgICAgICBtX2RldGFjaGVkUmVhZFN1
cmZhY2UgPSBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xfUkVBRCk7Ci0gICAgICAgIG1fZGV0YWNo
ZWREcmF3U3VyZmFjZSA9IGVnbEdldEN1cnJlbnRTdXJmYWNlKEVHTF9EUkFXKTsKLQotICAgICAg
ICByZXR1cm4gZWdsTWFrZUN1cnJlbnQobV9lZ2xEaXNwbGF5LCBtX2VnbEJhY2tCdWZmZXJTdXJm
YWNlLCBtX2VnbEJhY2tCdWZmZXJTdXJmYWNlLCBtX2VnbENvbnRleHQpOwotICAgIH0KLQotICAg
IGJvb2wgZG9uZUN1cnJlbnQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2RldGFjaGVkQ29udGV4
dCB8fCAhbV9kZXRhY2hlZERyYXdTdXJmYWNlIHx8ICFtX2RldGFjaGVkUmVhZFN1cmZhY2UpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZWdsTWFr
ZUN1cnJlbnQobV9lZ2xEaXNwbGF5LCBtX2RldGFjaGVkRHJhd1N1cmZhY2UsIG1fZGV0YWNoZWRS
ZWFkU3VyZmFjZSwgbV9kZXRhY2hlZENvbnRleHQpOwotICAgICAgICBtX2RldGFjaGVkQ29udGV4
dCA9IDA7Ci0gICAgICAgIG1fZGV0YWNoZWRSZWFkU3VyZmFjZSA9IDA7Ci0gICAgICAgIG1fZGV0
YWNoZWREcmF3U3VyZmFjZSA9IDA7Ci0gICAgICAgIHJldHVybiBzdWNjZXNzOwotICAgIH0KLQot
ICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIHN3YXBCdWZmZXJzKCkKLSAgICB7Ci0gICAgICAg
IGlmIChtX2Zyb250QnVmZmVyVGV4dHVyZSkKLSAgICAgICAgICAgIHJlbGVhc2VGcm9udEJ1ZmZl
clRleHR1cmUoKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlLCBt
X2VnbEJhY2tCdWZmZXJTdXJmYWNlKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXJT
aGFyZUhhbmRsZSwgbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGUpOwotCi0gICAgICAgIHJldHVybiBt
X2Zyb250QnVmZmVyU2hhcmVIYW5kbGU7Ci0gICAgfQotCi0gICAgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gdG9rZW4oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG9rZW47Ci0gICAgfQot
Ci0gICAgdWludDMyX3QgZnJvbnRCdWZmZXJUZXh0dXJlSUQoKQotICAgIHsKLSAgICAgICAgaWYg
KCFtX2VnbEZyb250QnVmZmVyU3VyZmFjZSkgewotICAgICAgICAgICAgbV9lZ2xGcm9udEJ1ZmZl
clN1cmZhY2UgPSBjcmVhdGVTdXJmYWNlRnJvbVNoYXJlSGFuZGxlKG1fc2l6ZSwgbV9mcm9udEJ1
ZmZlclNoYXJlSGFuZGxlKTsKLQotICAgICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9mcm9u
dEJ1ZmZlclRleHR1cmUpOwotICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9mcm9udEJ1ZmZl
clRleHR1cmUpOwotICAgICAgICAgICAgZWdsQmluZFRleEltYWdlKG1fZWdsRGlzcGxheSwgbV9l
Z2xGcm9udEJ1ZmZlclN1cmZhY2UsIEVHTF9CQUNLX0JVRkZFUik7Ci0KLSAgICAgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9mcm9u
dEJ1ZmZlclRleHR1cmU7Ci0gICAgfQotCi0gICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgaW5p
dGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGU7Ci0gICAgfQotCi0gICAgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2UgZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlOwotICAgIH0KLQotICAgIFBsYXRm
b3JtR3JhcGhpY3NTdXJmYWNlIGJhY2tCdWZmZXJTaGFyZUhhbmRsZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGU7Ci0gICAgfQotCi0gICAgdm9p
ZCByZWxlYXNlRnJvbnRCdWZmZXJUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2Zyb250
QnVmZmVyVGV4dHVyZSkgewotICAgICAgICAgICAgZWdsUmVsZWFzZVRleEltYWdlKG1fZWdsRGlz
cGxheSwgbV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgICAg
ICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX2Zyb250QnVmZmVyVGV4dHVyZSk7Ci0gICAgICAg
ICAgICBtX2Zyb250QnVmZmVyVGV4dHVyZSA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
bV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UpCi0gICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZSht
X2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlKTsKLSAgICAgICAgbV9lZ2xGcm9u
dEJ1ZmZlclN1cmZhY2UgPSAwOwotICAgIH0KLQotICAgIEludFNpemUgc2l6ZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9zaXplOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIHZv
aWQgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKQotICAgIHsKLSAgICAgICAgaWYgKG1fc2hhZGVy
UHJvZ3JhbSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBHTGNoYXIgdlNoYWRlclN0
cltdID0KLSAgICAgICAgICAgIFNUUklOR0lGWSgKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
aGlnaHAgdmVjMiB2ZXJ0ZXg7Ci0gICAgICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzIg
dGV4dHVyZUNvb3JkaW5hdGVzOwotICAgICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB0
ZXh0dXJlQ29vcmRzOwotICAgICAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZlcnRleCwg
MC4wLCAxLjApOwotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlQ29vcmRzID0gdGV4dHVyZUNv
b3JkaW5hdGVzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAg
R0xjaGFyIGZTaGFkZXJTdHJbXSA9Ci0gICAgICAgICAgICBTVFJJTkdJRlkoCi0gICAgICAgICAg
ICAgICAgdmFyeWluZyBoaWdocCB2ZWMyIHRleHR1cmVDb29yZHM7Ci0gICAgICAgICAgICAgICAg
dW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTsKLSAgICAgICAgICAgICAgICB2b2lkIG1haW4odm9p
ZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGhpZ2hwIHZlYzMgY29s
b3IgPSB0ZXh0dXJlMkQodGV4dHVyZSwgdGV4dHVyZUNvb3JkcykucmdiOwotICAgICAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNsYW1wKGNvbG9yLCAwLjAsIDEuMCksIDEuMCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLQotICAgICAgICBHTHVpbnQgdmVy
dGV4U2hhZGVyOwotICAgICAgICBHTHVpbnQgZnJhZ21lbnRTaGFkZXI7Ci0gICAgICAgIEdMaW50
IGxpbmtlZDsKLQotICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX1ZFUlRFWF9T
SEFERVIsIHZTaGFkZXJTdHIpOwotICAgICAgICBmcmFnbWVudFNoYWRlciA9IGxvYWRTaGFkZXIo
R0xfRlJBR01FTlRfU0hBREVSLCBmU2hhZGVyU3RyKTsKLSAgICAgICAgaWYgKCF2ZXJ0ZXhTaGFk
ZXIgfHwgIWZyYWdtZW50U2hhZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
c2hhZGVyUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOwotICAgICAgICBpZiAoIW1fc2hhZGVy
UHJvZ3JhbSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBnbEF0dGFjaFNoYWRlciht
X3NoYWRlclByb2dyYW0sIHZlcnRleFNoYWRlcik7Ci0gICAgICAgIGdsQXR0YWNoU2hhZGVyKG1f
c2hhZGVyUHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgICAgIGdsTGlua1Byb2dyYW0o
bV9zaGFkZXJQcm9ncmFtKTsKLSAgICAgICAgZ2xHZXRQcm9ncmFtaXYobV9zaGFkZXJQcm9ncmFt
LCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7Ci0gICAgICAgIGlmICghbGlua2VkKSB7Ci0gICAg
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtKTsKLSAgICAgICAgICAgIG1f
c2hhZGVyUHJvZ3JhbSA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3ZlcnRleEF0dHIgPSBn
bEdldEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyUHJvZ3JhbSwgInZlcnRleCIpOwotICAgICAgICBt
X3RleHR1cmVDb29yZGluYXRlc0F0dHIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1fc2hhZGVyUHJv
Z3JhbSwgInRleHR1cmVDb29yZGluYXRlcyIpOwotICAgICAgICBtX3RleHR1cmVVbmlmb3JtID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJ0ZXh0dXJlIik7Ci0KLSAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICB9Ci0KLSAgICBFR0xTdXJmYWNlIGNyZWF0ZVN1cmZhY2VGcm9t
U2hhcmVIYW5kbGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSEFORExFIHNoYXJlSGFuZGxlKQotICAg
IHsKLSAgICAgICAgaWYgKCFtX2VnbERpc3BsYXkgIHx8ICFtX2VnbENvbmZpZykgewotICAgICAg
ICAgICAgbV9lZ2xEaXNwbGF5ID0gZWdsR2V0Q3VycmVudERpc3BsYXkoKTsKLQotI2lmIFBMQVRG
T1JNKFFUKQotICAgICAgICAgICAgUVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlKiBuYXRpdmVJbnRl
cmZhY2UgPSBRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlKCk7Ci0gICAg
ICAgICAgICBtX2VnbENvbmZpZyA9IHN0YXRpY19jYXN0PEVHTENvbmZpZz4obmF0aXZlSW50ZXJm
YWNlLT5uYXRpdmVSZXNvdXJjZUZvckNvbnRleHQoUUJ5dGVBcnJheUxpdGVyYWwoImVnbENvbmZp
ZyIpLCBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKSkpOwotI2VuZGlmCi0gICAgICAg
IH0KLQotICAgICAgICBFR0xpbnQgYXR0cmlidXRlc1tdID0gewotICAgICAgICAgICAgRUdMX1dJ
RFRILCBzaXplLndpZHRoKCksCi0gICAgICAgICAgICBFR0xfSEVJR0hULCBzaXplLmhlaWdodCgp
LAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9SR0IsCi0gICAg
ICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9URVhUVVJFXzJELAotICAgICAgICAgICAg
RUdMX05PTkUKLSAgICAgICAgfTsKLQotICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSBlZ2xD
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihtX2VnbERpc3BsYXksIEVHTF9EM0RfVEVYVFVS
RV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQ2xpZW50QnVmZmVy
PihzaGFyZUhhbmRsZSksIG1fZWdsQ29uZmlnLCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgQVNTRVJU
KHN1cmZhY2UpOwotCi0gICAgICAgIHJldHVybiBzdXJmYWNlOwotICAgIH0KLQotICAgIHZvaWQg
ZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3Jh
bShtX3NoYWRlclByb2dyYW0pOwotCi0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIDApOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwot
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KLSAgICAgICAgR0xmbG9hdCBhZlZlcnRpY2VzW10gPSB7
Ci0gICAgICAgICAgICAtMSwgLTEsCi0gICAgICAgICAgICAgMSwgLTEsCi0gICAgICAgICAgICAt
MSwgIDEsCi0gICAgICAgICAgICAgMSwgIDEKLSAgICAgICAgfTsKLSAgICAgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKG1fdmVydGV4QXR0ciwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBhZlZl
cnRpY2VzKTsKLQotICAgICAgICBHTGZsb2F0IGFmdGV4dHVyZUNvb3JkaW5hdGVzW10gPSB7Ci0g
ICAgICAgICAgICAwLCAxLAotICAgICAgICAgICAgMSwgMSwKLSAgICAgICAgICAgIDAsIDAsCi0g
ICAgICAgICAgICAxLCAwCi0gICAgICAgIH07Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihtX3RleHR1cmVDb29yZGluYXRlc0F0dHIsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgYWZ0
ZXh0dXJlQ29vcmRpbmF0ZXMpOwotCi0gICAgICAgIGdsVW5pZm9ybTFpKG1fdGV4dHVyZVVuaWZv
cm0sIDApOwotCi0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV92ZXJ0ZXhBdHRy
KTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3RleHR1cmVDb29yZGluYXRl
c0F0dHIpOwotCi0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7
Ci0KLSAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV92ZXJ0ZXhBdHRyKTsKLSAg
ICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV90ZXh0dXJlQ29vcmRpbmF0ZXNBdHRy
KTsKLQotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBtX3Rva2VuOwotICAgIEVHTENvbnRl
eHQgbV9kZXRhY2hlZENvbnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBtX2RldGFjaGVkUmVhZFN1cmZh
Y2U7Ci0gICAgRUdMU3VyZmFjZSBtX2RldGFjaGVkRHJhd1N1cmZhY2U7Ci0gICAgSW50U2l6ZSBt
X3NpemU7Ci0gICAgRUdMRGlzcGxheSBtX2VnbERpc3BsYXk7Ci0gICAgRUdMQ29udGV4dCBtX2Vn
bENvbnRleHQ7Ci0gICAgRUdMQ29uZmlnIG1fZWdsQ29uZmlnOwotICAgIEVHTFN1cmZhY2UgbV9l
Z2xGcm9udEJ1ZmZlclN1cmZhY2U7Ci0gICAgRUdMU3VyZmFjZSBtX2VnbEJhY2tCdWZmZXJTdXJm
YWNlOwotICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1faW5pdGlhbEZyb250QnVmZmVyU2hh
cmVIYW5kbGU7Ci0gICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgbV9mcm9udEJ1ZmZlclNoYXJl
SGFuZGxlOwotICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1fYmFja0J1ZmZlclNoYXJlSGFu
ZGxlOwotICAgIEdMdWludCBtX2Zyb250QnVmZmVyVGV4dHVyZTsKLSAgICBHTGludCBtX3NoYWRl
clByb2dyYW07Ci0KLSAgICBHTHVpbnQgbV92ZXJ0ZXhBdHRyOwotICAgIEdMdWludCBtX3RleHR1
cmVDb29yZGluYXRlc0F0dHI7Ci0gICAgR0x1aW50IG1fdGV4dHVyZVVuaWZvcm07Ci19OwotCi1H
cmFwaGljc1N1cmZhY2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT50b2tlbigpOwotfQotCi11aW50MzJfdCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5m
cm9udEJ1ZmZlclRleHR1cmVJRCgpOwotfQotCi12b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1Db3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpZCwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKLXsKLSAgICAvLyBDdXJy
ZW50bHkgbm90IGltcGxlbWVudGVkLgotfQotCi12b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1Db3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkKLXsKLSAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VS
ZWN0KTsKLX0KLQotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQotewotICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwotICAgIEZsb2F0
UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwotICAgIGFkanVz
dGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJl
Y3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHBsYXRmb3JtR2V0VGV4dHVyZUlEKCks
IDAsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7Ci19
Ci0KLXVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSA9
PSBtX3ByaXZhdGUtPmZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSA9PSBt
X3ByaXZhdGUtPmJhY2tCdWZmZXJTaGFyZUhhbmRsZSgpKQotICAgICAgICByZXR1cm4gMTsKLSAg
ICByZXR1cm4gMHhGRkZGOwotfQotCi11aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
U3dhcEJ1ZmZlcnMoKQotewotICAgIG1fcHJpdmF0ZS0+c3dhcEJ1ZmZlcnMoKTsKLSAgICByZXR1
cm4gcGxhdGZvcm1Gcm9udEJ1ZmZlcigpOwotfQotCi1JbnRTaXplIEdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1TaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaXplKCk7Ci19
Ci0KLVBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
Q3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25zdCBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEIHNoYXJlQ29udGV4dCkKLXsKLSAgICAvLyBTaW5nbGUgYnVmZmVyZWQg
R3JhcGhpY3NTdXJmYWNlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgotICAgIGlmIChmbGFn
cyAmIFN1cHBvcnRzQ29weVRvVGV4dHVyZSB8fCBmbGFncyAmIFN1cHBvcnRzU2luZ2xlQnVmZmVy
ZWQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLQotICAg
IFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NT
dXJmYWNlKHNpemUsIGZsYWdzKSk7Ci0gICAgc3VyZmFjZS0+bV9wcml2YXRlID0gbmV3IEdyYXBo
aWNzU3VyZmFjZVByaXZhdGUoc2hhcmVDb250ZXh0LCBzaXplLCBmbGFncyk7Ci0KLSAgICBpZiAo
IXN1cmZhY2UtPm1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSgpIHx8ICFzdXJmYWNl
LT5tX3ByaXZhdGUtPmJhY2tCdWZmZXJTaGFyZUhhbmRsZSgpKQotICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7Ci0KLSAgICByZXR1cm4gc3VyZmFjZTsKLX0KLQot
UGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBv
cnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEdyYXBoaWNzU3VyZmFj
ZVRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBTaW5nbGUgYnVmZmVyZWQgR3JhcGhpY3NTdXJmYWNl
IGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgotICAgIGlmIChmbGFncyAmIFN1cHBvcnRzQ29w
eVRvVGV4dHVyZSB8fCBmbGFncyAmIFN1cHBvcnRzU2luZ2xlQnVmZmVyZWQpCi0gICAgICAgIHJl
dHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLQotICAgIFJlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHN1cmZhY2UgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NTdXJmYWNlKHNpemUsIGZs
YWdzKSk7Ci0gICAgc3VyZmFjZS0+bV9wcml2YXRlID0gbmV3IEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUoc2l6ZSwgdG9rZW4pOwotCi0gICAgaWYgKCFzdXJmYWNlLT5tX3ByaXZhdGUtPmZyb250QnVm
ZmVyU2hhcmVIYW5kbGUoKSB8fCAhc3VyZmFjZS0+bV9wcml2YXRlLT5iYWNrQnVmZmVyU2hhcmVI
YW5kbGUoKSkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOwot
Ci0gICAgcmV0dXJuIHN1cmZhY2U7Ci19Ci0KLWNoYXIqIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1Mb2NrKGNvbnN0IEludFJlY3QmIHJlY3QsIGludCogb3V0cHV0U3RyaWRlLCBMb2NrT3B0aW9u
cyBsb2NrT3B0aW9ucykKLXsKLSAgICAvLyBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5IG9u
bHkgYmVpbmcgdXNlZCBmb3IgV2ViR0wsIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgdGhpcyBsb2Nr
aW5nIG1lY2hhbmlzbS4KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtVW5sb2NrKCkKLXsKLSAgICAvLyBHcmFwaGljc1N1cmZhY2UgaXMgY3VycmVudGx5
IG9ubHkgYmVpbmcgdXNlZCBmb3IgV2ViR0wsIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgdGhpcyBs
b2NraW5nIG1lY2hhbmlzbS4KLX0KLQotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVz
dHJveSgpCi17Ci0gICAgZGVsZXRlIG1fcHJpdmF0ZTsKLSAgICBtX3ByaXZhdGUgPSAwOwotfQot
Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IGNlOTVmZTg3NzllNmI3NjAwN2Q1MzAwNTcwY2EwZmIxZjVl
ZmFiZTguLjYzYTIyMDE0MzQ1MjAxYWMyMzExZjdkYjRhMzRlMTVjM2Y0OTczNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApA
QCAtNzg3LDE3ICs3ODcsMjUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVRva2VuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2QKICNpZiBPUyhEQVJX
SU4pCiAgICAgZW5jb2RlciA8PCBBdHRhY2htZW50KHRva2VuLmZyb250QnVmZmVySGFuZGxlLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCk7CiAgICAgZW5jb2RlciA8PCBBdHRhY2htZW50KHRva2Vu
LmJhY2tCdWZmZXJIYW5kbGUsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSNlbGlmIE9TKFdJ
TkRPV1MpCisjZWxpZiBVU0UoRUdMKQogICAgIGVuY29kZXIgPDwgcmVpbnRlcnByZXRfY2FzdDx1
aW50NjRfdD4odG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOwogICAgIGVuY29kZXIgPDwgcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4odG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7Ci0jZWxpZiBPUyhM
SU5VWCkKKyNlbGlmIFVTRShHTFgpCiAgICAgZW5jb2RlciA8PCB0b2tlbi5mcm9udEJ1ZmZlckhh
bmRsZTsKICNlbmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlVG9rZW4+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCiB7Ci0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhE
QVJXSU4pCisgICAgQXR0YWNobWVudCBmcm9udEF0dGFjaG1lbnQsIGJhY2tBdHRhY2htZW50Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJvbnRBdHRhY2htZW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmFja0F0dGFjaG1lbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICB0b2tlbiA9IEdyYXBoaWNzU3VyZmFjZVRva2VuKGZyb250
QXR0YWNobWVudC5wb3J0KCksIGJhY2tBdHRhY2htZW50LnBvcnQoKSk7CisjZWxpZiBVU0UoRUdM
KQogICAgIHVpbnQ2NF90IGZyb250QnVmZmVySGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZnJvbnRCdWZmZXJIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MDYsMTUg
KzgxNCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tl
bj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShiYWNrQnVmZmVySGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHRva2VuLmJh
Y2tCdWZmZXJIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzU3VyZmFjZVRva2VuOjpC
dWZmZXJIYW5kbGU+KGJhY2tCdWZmZXJIYW5kbGUpOwotI2VsaWYgT1MoREFSV0lOKQotICAgIEF0
dGFjaG1lbnQgZnJvbnRBdHRhY2htZW50LCBiYWNrQXR0YWNobWVudDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZyb250QXR0YWNobWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGJhY2tBdHRhY2htZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgdG9rZW4gPSBHcmFwaGljc1N1cmZhY2VUb2tlbihmcm9udEF0dGFjaG1lbnQucG9y
dCgpLCBiYWNrQXR0YWNobWVudC5wb3J0KCkpOwotI2VsaWYgT1MoTElOVVgpCisjZWxpZiBVU0Uo
R0xYKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNWJlMzJlOTY5NDJiYTA0MTEzMDY3ZDY4ZWFiM2Ew
MDVkODY5YmZkLi42MzA3MzcyMDYwMzliZWM3MTg2ZDYwMDc5ZTViNGQ5N2I3ZDI1NzBhIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTMtMDctMDEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBXZWJHTCB3aXRoIEVHTCBvbiBMaW51eAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MjUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgdGhlIHVz
ZSBvZiBPcGVuR0wgRVMvMiBvbiBMaW51eCBhbmQgb3RoZXIgcGxhdGZvcm1zIHdoZW4gYXZhaWxh
YmxlLgorCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6CisK
IDIwMTMtMDYtMjggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBXaW5kb3dzIGJ1aWxkcyBhZnRlciBkZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSByZW1vdmFsLgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgppbmRleCAyOTBkNzA4NWJjMGEwZWQyMDNjZjFiNDBmMjMxMDcyODIwZGQyNDc3Li4wYWJl
ODcxMjFiNDc3NTFiYjM5ZDk3MTQ1NjE4MDEwZWE5ZTFjYWJlIDEwMDY0NAotLS0gYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtNTcsOCArNTcsNiBAQCBkZWZpbmVUZXN0KGRl
dGVjdEZlYXR1cmVzKSB7CiAgICAgICAgIGNvbmZpZ19saWJYY29tcG9zaXRlOiBXRUJLSVRfQ09O
RklHICs9IGhhdmVfeGNvbXBvc2l0ZQogICAgICAgICBjb25maWdfbGliWHJlbmRlcjogV0VCS0lU
X0NPTkZJRyArPSBoYXZlX3hyZW5kZXIKIAotICAgICAgICBjb25maWdfZ2x4OiFjb250YWlucyhR
VF9DT05GSUcsIG9wZW5nbGVzMik6IFdFQktJVF9DT05GSUcgKz0gaGF2ZV9nbHgKLQogICAgICAg
ICAjIFdlIG5lZWQgZm9udGNvbmZpZyB0byBzZXQgdXAgdGhlIHRlc3QgZm9udHMgZm9yIER1bXBS
ZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyLgogICAgICAgICBjb25maWdfZm9udGNvbmZp
ZzogV0VCS0lUX0NPTkZJRyArPSBoYXZlX2ZvbnRjb25maWcKICAgICB9CkBAIC0xMzksOCArMTM3
LDggQEAgZGVmaW5lVGVzdChkZXRlY3RGZWF0dXJlcykgewogICAgICMgR3JhcGhpY3NTdXJmYWNl
IHJlcXVpcmVzIEdyYXBoaWNzQ29udGV4dDNEIGFuZCBoZW5jZSB1c2VfM2RfZ3JhcGhpY3MKICAg
ICB1c2U/KDNkX2dyYXBoaWNzKSB7CiAgICAgICAgIG1hYzogV0VCS0lUX0NPTkZJRyArPSB1c2Vf
Z3JhcGhpY3Nfc3VyZmFjZQotICAgICAgICB3aW4zMjpjb250YWlucyhRVF9DT05GSUcsIG9wZW5n
bGVzMik6IFdFQktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKLSAgICAgICAgbGlu
dXgtKjpjb250YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX2dseCk6Y29udGFpbnMoV0VCS0lUX0NP
TkZJRywgaGF2ZV94Y29tcG9zaXRlKTpjb250YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX3hyZW5k
ZXIpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19zdXJmYWNlIHVzZV9nbHgKKyAgICAg
ICAgY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9n
cmFwaGljc19zdXJmYWNlIHVzZV9lZ2wKKyAgICAgICAgZWxzZTogY29udGFpbnMoV0VCS0lUX0NP
TkZJRywgaGF2ZV94Y29tcG9zaXRlKTpjb250YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX3hyZW5k
ZXIpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19zdXJmYWNlIHVzZV9nbHgKICAgICB9
CiAKICAgICAjIFNsaWRlciBUb3VjaCBpcyBzZW5zaWJsZSB0byB1c2Ugd2hlbiBjb21waWxpbmcg
V2ViS2l0Mgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205881</attachid>
            <date>2013-07-02 02:54:07 -0700</date>
            <delta_ts>2013-07-02 03:10:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118251-20130702115203.patch</filename>
            <type>text/plain</type>
            <size>6831</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyMjNjN2NhYzMzNWRm
MGZiMmMyOTQ0ODhlNWJmMmI4NDU1N2UzNC4uNDMxOGY5YmVjZjk1MWI3YmYzMWQ5YWRkZmU3YjQ1
M2UyZmEwNTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA3LTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFN1
cHBvcnQgV2ViR0wgd2l0aCBFR0wgb24gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExldCBHcmFwaGljc0NvbnRleHQzRCB3b3JrIHdpdGhvdXQg
YSBHcmFwaGljc1N1cmZhY2UuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBy
b2NBZGRyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorCiAyMDEzLTA3LTAxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtR
dF0gQXZvaWQgY3JlYXRpbmcgYSBRV2luZG93IGZvciBvZmZzY3JlZW4gR3JhcGhpY3NDb250ZXh0
M0QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCmluZGV4IDVmYTYyNzFkZmVjNTRkYTQ1YjdiZDdkYmI3ZjYyZDQzYTU4NzNj
NzMuLmNhMTA0M2ZhMDhkNmQ2MTJlZmRlMTU2NTE1NjFjMDg5NDQ0YjBmNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtNDI0Nyw3ICs0MjQ3LDcgQEAgdXNlPyhHUkFQSElDU19TVVJGQUNFKSB7CiAgICAgd2lu
MzIgewogICAgICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9H
cmFwaGljc1N1cmZhY2VXaW4uY3BwCiAgICAgfQotICAgIGhhdmU/KFhDT01QT1NJVEUpIHsKKyAg
ICB1c2U/KGdseCkgewogICAgICAgICBIRUFERVJTICs9IFwKICAgICAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaCBcCiAgICAgICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCmluZGV4IGRlN2JlYmQy
NDNlMzg5NWVkMjA2OThlOWVhMjBiNDcwMmI0ZThkMjMuLjMwMTA1ZjZmZWE4OWM4MTU4MDMwNTQw
OWU4MmE4N2FmODAxYzQ5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xTaGltcy5jcHAKQEAgLTQwLDcgKzQwLDkgQEAgT3BlbkdMRnVuY3Rpb25UYWJs
ZSogb3BlbkdMRnVuY3Rpb25UYWJsZSgpCiAjaWYgUExBVEZPUk0oUVQpCiBzdGF0aWMgdm9pZCog
Z2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCiB7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5nZXRQ
cm9jQWRkcmVzcyhwcm9jTmFtZSkpOworICAgIGlmIChRT3BlbkdMQ29udGV4dCogY29udGV4dCA9
IFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+Z2V0UHJvY0FkZHJlc3MocHJvY05hbWUpKTsKKyAg
ICByZXR1cm4gMDsKIH0KICNlbHNlCiB0eXBlZGVmIHZvaWQqICgqZ2xHZXRQcm9jQWRkcmVzc1R5
cGUpIChjb25zdCBjaGFyKiBwcm9jTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGYy
YTY1NDMxN2QyZWNhNDVmNDE0MDhiZDliOWM4MmZhZmNiMTczYzguLjJjMDgxNDIzYjc4ODllZmY3
NmViOTY0MzlhNWJlN2ZkYzZkNjI3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0xMjAs
NyArMTIwLDYgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEgKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNTAx
MDAKICAgICBRT2Zmc2NyZWVuU3VyZmFjZSogc3VyZmFjZSA9IG5ldyBRT2Zmc2NyZWVuU3VyZmFj
ZTsKICAgICBzdXJmYWNlLT5jcmVhdGUoKTsKQEAgLTE0MCw2ICsxMzksOCBAQCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgSAogICAgICAgICByZXR1cm47CiAKICAgICBtYWtlQ3VycmVudElmTmVlZGVk
KCk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBJbnRTaXplIHN1cmZhY2VTaXpl
KG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsK
ICAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFy
Z2V0CiAgICAgICAgICAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJp
bmc7CkBAIC0yMjgsOCArMjI5LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICBtX2Nv
bnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1
ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CiAKLSAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxl
cmF0aW9uTW9kZSgpID09IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKICNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKKyAgICBBU1NFUlQobV9ncmFwaGljc1N1cmZhY2UpOworICAgIGlmICh0
ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdM
TW9kZSkgewogICAgICAgICAvLyBDR0wgb25seSBwcm92aWRlcyB1cyB0aGUgY29udGV4dCwgYnV0
IG5vdCB0aGUgdmlldyB0aGUgY29udGV4dCBpcyBjdXJyZW50bHkgYm91bmQgdG8uCiAgICAgICAg
IC8vIFRvIG1ha2Ugc3VyZSB0aGUgY29udGV4dCBpcyBib3VuZCB0aGUgdGhlIHJpZ2h0IHN1cmZh
Y2Ugd2UgaGF2ZSB0byBkbyBhIG1ha2VDdXJyZW50IHRocm91Z2ggUU9wZW5HTCBhZ2Fpbi4KICAg
ICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgYXMgc29vbiBhcyBHcmFwaGljc1N1cmZh
Y2VNYWMgbWFrZXMgdXNlIG9mIE5TT3BlbkdMLgpAQCAtMjQ2LDkgKzI0OCw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0
YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwogICAgICAgICBtX2dy
YXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRp
ZgogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAzNWJlMzJlOTY5NDJiYTA0MTEzMDY3ZDY4ZWFiM2EwMDVkODY5YmZkLi5lZTA3NDQxYzYx
N2ZlMmMwNGQxMGZkZTBjNTEzYTM1ODAxOTRkODc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDctMDIgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBXZWJHTCB3aXRoIEVHTCBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgdGhlIHVzZSBvZiBPcGVuR0wgRVMvMiBvbiBM
aW51eCBhbmQgb3RoZXIgcGxhdGZvcm1zIHdoZW4gYXZhaWxhYmxlLgorCisgICAgICAgICogcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6CisKIDIwMTMtMDYtMjggIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkcyBh
ZnRlciBkZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSByZW1vdmFsLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCAyOTBkNzA4NWJj
MGEwZWQyMDNjZjFiNDBmMjMxMDcyODIwZGQyNDc3Li5hZjczOThiYTgzZTljMWE4Y2Q3M2RjMzM1
ZWYxMjUwMDAyNzIxZTgxIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgpAQCAtNTMsMTEgKzUzLDEyIEBAIGRlZmluZVRlc3QoZGV0ZWN0RmVhdHVyZXMpIHsKICAg
ICBjb250YWlucyhRVF9DT05GSUcsIHN5c3RlbS1wbmcpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9s
aWJwbmcKICAgICBlbHNlOiBDT05GSUdVUkVfV0FSTklOR1MgKz0gIlBORyBsaWJyYXJ5IG5vdCBm
b3VuZCwgUUltYWdlRGVjb2RlciB3aWxsIGRlY29kZSBQTkcgaW1hZ2VzIgogCisgICAgY29udGFp
bnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfZWdsCisKICAg
ICBsaW51eC0qIHsKICAgICAgICAgY29uZmlnX2xpYlhjb21wb3NpdGU6IFdFQktJVF9DT05GSUcg
Kz0gaGF2ZV94Y29tcG9zaXRlCiAgICAgICAgIGNvbmZpZ19saWJYcmVuZGVyOiBXRUJLSVRfQ09O
RklHICs9IGhhdmVfeHJlbmRlcgotCi0gICAgICAgIGNvbmZpZ19nbHg6IWNvbnRhaW5zKFFUX0NP
TkZJRywgb3BlbmdsZXMyKTogV0VCS0lUX0NPTkZJRyArPSBoYXZlX2dseAorICAgICAgICBjb25m
aWdfZ2x4OiFoYXZlPyhlZ2wpOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfZ2x4CiAKICAgICAgICAg
IyBXZSBuZWVkIGZvbnRjb25maWcgdG8gc2V0IHVwIHRoZSB0ZXN0IGZvbnRzIGZvciBEdW1wUmVu
ZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lci4KICAgICAgICAgY29uZmlnX2ZvbnRjb25maWc6
IFdFQktJVF9DT05GSUcgKz0gaGF2ZV9mb250Y29uZmlnCkBAIC0xMzksOCArMTQwLDggQEAgZGVm
aW5lVGVzdChkZXRlY3RGZWF0dXJlcykgewogICAgICMgR3JhcGhpY3NTdXJmYWNlIHJlcXVpcmVz
IEdyYXBoaWNzQ29udGV4dDNEIGFuZCBoZW5jZSB1c2VfM2RfZ3JhcGhpY3MKICAgICB1c2U/KDNk
X2dyYXBoaWNzKSB7CiAgICAgICAgIG1hYzogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nf
c3VyZmFjZQotICAgICAgICB3aW4zMjpjb250YWlucyhRVF9DT05GSUcsIG9wZW5nbGVzMik6IFdF
QktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKLSAgICAgICAgbGludXgtKjpjb250
YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX2dseCk6Y29udGFpbnMoV0VCS0lUX0NPTkZJRywgaGF2
ZV94Y29tcG9zaXRlKTpjb250YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX3hyZW5kZXIpOiBXRUJL
SVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19zdXJmYWNlIHVzZV9nbHgKKyAgICAgICAgd2luOmhh
dmU/KGVnbCk6IFdFQktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKKyAgICAgICAg
aGF2ZT8oZ2x4KTpoYXZlPyhYY29tcG9zaXRlKTpoYXZlPyhYcmVuZGVyKTogV0VCS0lUX0NPTkZJ
RyArPSB1c2VfZ3JhcGhpY3Nfc3VyZmFjZSB1c2VfZ2x4CiAgICAgfQogCiAgICAgIyBTbGlkZXIg
VG91Y2ggaXMgc2Vuc2libGUgdG8gdXNlIHdoZW4gY29tcGlsaW5nIFdlYktpdDIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205884</attachid>
            <date>2013-07-02 03:10:49 -0700</date>
            <delta_ts>2013-07-02 03:12:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118251-20130702120844.patch</filename>
            <type>text/plain</type>
            <size>6833</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgyMjNjN2NhYzMzNWRm
MGZiMmMyOTQ0ODhlNWJmMmI4NDU1N2UzNC4uNDMxOGY5YmVjZjk1MWI3YmYzMWQ5YWRkZmU3YjQ1
M2UyZmEwNTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA3LTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFN1
cHBvcnQgV2ViR0wgd2l0aCBFR0wgb24gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExldCBHcmFwaGljc0NvbnRleHQzRCB3b3JrIHdpdGhvdXQg
YSBHcmFwaGljc1N1cmZhY2UuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBy
b2NBZGRyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorCiAyMDEzLTA3LTAxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtR
dF0gQXZvaWQgY3JlYXRpbmcgYSBRV2luZG93IGZvciBvZmZzY3JlZW4gR3JhcGhpY3NDb250ZXh0
M0QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCmluZGV4IDVmYTYyNzFkZmVjNTRkYTQ1YjdiZDdkYmI3ZjYyZDQzYTU4NzNj
NzMuLmNhMTA0M2ZhMDhkNmQ2MTJlZmRlMTU2NTE1NjFjMDg5NDQ0YjBmNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtNDI0Nyw3ICs0MjQ3LDcgQEAgdXNlPyhHUkFQSElDU19TVVJGQUNFKSB7CiAgICAgd2lu
MzIgewogICAgICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9H
cmFwaGljc1N1cmZhY2VXaW4uY3BwCiAgICAgfQotICAgIGhhdmU/KFhDT01QT1NJVEUpIHsKKyAg
ICB1c2U/KGdseCkgewogICAgICAgICBIRUFERVJTICs9IFwKICAgICAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaCBcCiAgICAgICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCmluZGV4IGRlN2JlYmQy
NDNlMzg5NWVkMjA2OThlOWVhMjBiNDcwMmI0ZThkMjMuLjMwMTA1ZjZmZWE4OWM4MTU4MDMwNTQw
OWU4MmE4N2FmODAxYzQ5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xTaGltcy5jcHAKQEAgLTQwLDcgKzQwLDkgQEAgT3BlbkdMRnVuY3Rpb25UYWJs
ZSogb3BlbkdMRnVuY3Rpb25UYWJsZSgpCiAjaWYgUExBVEZPUk0oUVQpCiBzdGF0aWMgdm9pZCog
Z2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCiB7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5nZXRQ
cm9jQWRkcmVzcyhwcm9jTmFtZSkpOworICAgIGlmIChRT3BlbkdMQ29udGV4dCogY29udGV4dCA9
IFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+Z2V0UHJvY0FkZHJlc3MocHJvY05hbWUpKTsKKyAg
ICByZXR1cm4gMDsKIH0KICNlbHNlCiB0eXBlZGVmIHZvaWQqICgqZ2xHZXRQcm9jQWRkcmVzc1R5
cGUpIChjb25zdCBjaGFyKiBwcm9jTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGYy
YTY1NDMxN2QyZWNhNDVmNDE0MDhiZDliOWM4MmZhZmNiMTczYzguLjJjMDgxNDIzYjc4ODllZmY3
NmViOTY0MzlhNWJlN2ZkYzZkNjI3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0xMjAs
NyArMTIwLDYgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEgKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNTAx
MDAKICAgICBRT2Zmc2NyZWVuU3VyZmFjZSogc3VyZmFjZSA9IG5ldyBRT2Zmc2NyZWVuU3VyZmFj
ZTsKICAgICBzdXJmYWNlLT5jcmVhdGUoKTsKQEAgLTE0MCw2ICsxMzksOCBAQCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgSAogICAgICAgICByZXR1cm47CiAKICAgICBtYWtlQ3VycmVudElmTmVlZGVk
KCk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBJbnRTaXplIHN1cmZhY2VTaXpl
KG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsK
ICAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFy
Z2V0CiAgICAgICAgICAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJp
bmc7CkBAIC0yMjgsOCArMjI5LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICBtX2Nv
bnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1
ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CiAKLSAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxl
cmF0aW9uTW9kZSgpID09IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKICNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKKyAgICBBU1NFUlQobV9ncmFwaGljc1N1cmZhY2UpOworICAgIGlmICh0
ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdM
TW9kZSkgewogICAgICAgICAvLyBDR0wgb25seSBwcm92aWRlcyB1cyB0aGUgY29udGV4dCwgYnV0
IG5vdCB0aGUgdmlldyB0aGUgY29udGV4dCBpcyBjdXJyZW50bHkgYm91bmQgdG8uCiAgICAgICAg
IC8vIFRvIG1ha2Ugc3VyZSB0aGUgY29udGV4dCBpcyBib3VuZCB0aGUgdGhlIHJpZ2h0IHN1cmZh
Y2Ugd2UgaGF2ZSB0byBkbyBhIG1ha2VDdXJyZW50IHRocm91Z2ggUU9wZW5HTCBhZ2Fpbi4KICAg
ICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNvZGUgYXMgc29vbiBhcyBHcmFwaGljc1N1cmZh
Y2VNYWMgbWFrZXMgdXNlIG9mIE5TT3BlbkdMLgpAQCAtMjQ2LDkgKzI0OCw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0
YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwogICAgICAgICBtX2dy
YXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRp
ZgogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAzNWJlMzJlOTY5NDJiYTA0MTEzMDY3ZDY4ZWFiM2EwMDVkODY5YmZkLi5lZTA3NDQxYzYx
N2ZlMmMwNGQxMGZkZTBjNTEzYTM1ODAxOTRkODc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDctMDIgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBXZWJHTCB3aXRoIEVHTCBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgdGhlIHVzZSBvZiBPcGVuR0wgRVMvMiBvbiBM
aW51eCBhbmQgb3RoZXIgcGxhdGZvcm1zIHdoZW4gYXZhaWxhYmxlLgorCisgICAgICAgICogcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6CisKIDIwMTMtMDYtMjggIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkcyBh
ZnRlciBkZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSByZW1vdmFsLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCAyOTBkNzA4NWJj
MGEwZWQyMDNjZjFiNDBmMjMxMDcyODIwZGQyNDc3Li5hYzU4YjY2NGM0N2U3ZTkyMzg0ZTQ3ZTdm
NjA4N2FmNWNkNmE2OTgwIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgpAQCAtNTMsMTEgKzUzLDEyIEBAIGRlZmluZVRlc3QoZGV0ZWN0RmVhdHVyZXMpIHsKICAg
ICBjb250YWlucyhRVF9DT05GSUcsIHN5c3RlbS1wbmcpOiBXRUJLSVRfQ09ORklHICs9IHVzZV9s
aWJwbmcKICAgICBlbHNlOiBDT05GSUdVUkVfV0FSTklOR1MgKz0gIlBORyBsaWJyYXJ5IG5vdCBm
b3VuZCwgUUltYWdlRGVjb2RlciB3aWxsIGRlY29kZSBQTkcgaW1hZ2VzIgogCisgICAgY29udGFp
bnMoUVRfQ09ORklHLCBvcGVuZ2xlczIpOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfZWdsCisKICAg
ICBsaW51eC0qIHsKICAgICAgICAgY29uZmlnX2xpYlhjb21wb3NpdGU6IFdFQktJVF9DT05GSUcg
Kz0gaGF2ZV94Y29tcG9zaXRlCiAgICAgICAgIGNvbmZpZ19saWJYcmVuZGVyOiBXRUJLSVRfQ09O
RklHICs9IGhhdmVfeHJlbmRlcgotCi0gICAgICAgIGNvbmZpZ19nbHg6IWNvbnRhaW5zKFFUX0NP
TkZJRywgb3BlbmdsZXMyKTogV0VCS0lUX0NPTkZJRyArPSBoYXZlX2dseAorICAgICAgICBjb25m
aWdfZ2x4OiFoYXZlPyhlZ2wpOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfZ2x4CiAKICAgICAgICAg
IyBXZSBuZWVkIGZvbnRjb25maWcgdG8gc2V0IHVwIHRoZSB0ZXN0IGZvbnRzIGZvciBEdW1wUmVu
ZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lci4KICAgICAgICAgY29uZmlnX2ZvbnRjb25maWc6
IFdFQktJVF9DT05GSUcgKz0gaGF2ZV9mb250Y29uZmlnCkBAIC0xMzksOCArMTQwLDggQEAgZGVm
aW5lVGVzdChkZXRlY3RGZWF0dXJlcykgewogICAgICMgR3JhcGhpY3NTdXJmYWNlIHJlcXVpcmVz
IEdyYXBoaWNzQ29udGV4dDNEIGFuZCBoZW5jZSB1c2VfM2RfZ3JhcGhpY3MKICAgICB1c2U/KDNk
X2dyYXBoaWNzKSB7CiAgICAgICAgIG1hYzogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nf
c3VyZmFjZQotICAgICAgICB3aW4zMjpjb250YWlucyhRVF9DT05GSUcsIG9wZW5nbGVzMik6IFdF
QktJVF9DT05GSUcgKz0gdXNlX2dyYXBoaWNzX3N1cmZhY2UKLSAgICAgICAgbGludXgtKjpjb250
YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX2dseCk6Y29udGFpbnMoV0VCS0lUX0NPTkZJRywgaGF2
ZV94Y29tcG9zaXRlKTpjb250YWlucyhXRUJLSVRfQ09ORklHLCBoYXZlX3hyZW5kZXIpOiBXRUJL
SVRfQ09ORklHICs9IHVzZV9ncmFwaGljc19zdXJmYWNlIHVzZV9nbHgKKyAgICAgICAgd2luMzI6
aGF2ZT8oZWdsKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nfc3VyZmFjZQorICAgICAg
ICBoYXZlPyhnbHgpOmhhdmU/KHhjb21wb3NpdGUpOmhhdmU/KHhyZW5kZXIpOiBXRUJLSVRfQ09O
RklHICs9IHVzZV9ncmFwaGljc19zdXJmYWNlIHVzZV9nbHgKICAgICB9CiAKICAgICAjIFNsaWRl
ciBUb3VjaCBpcyBzZW5zaWJsZSB0byB1c2Ugd2hlbiBjb21waWxpbmcgV2ViS2l0Mgo=
</data>
<flag name="review"
          id="227508"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>