<?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>74379</bug_id>
          
          <creation_ts>2011-12-12 19:48:43 -0800</creation_ts>
          <short_desc>Upstream BlackBerry API web settings files</short_desc>
          <delta_ts>2012-02-16 09:11:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>78633</dup_id>
          
          <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>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jacky Jiang">jkjiang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519816</commentid>
    <comment_count>0</comment_count>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2011-12-12 19:48:43 -0800</bug_when>
    <thetext>Upstream BlackBerry API web settings files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519843</commentid>
    <comment_count>1</comment_count>
      <attachid>118946</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2011-12-12 21:03:15 -0800</bug_when>
    <thetext>Created attachment 118946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520342</commentid>
    <comment_count>2</comment_count>
      <attachid>118946</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2011-12-13 13:38:01 -0800</bug_when>
    <thetext>Comment on attachment 118946
Patch

Hold on upstreaming this patch for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558258</commentid>
    <comment_count>3</comment_count>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-16 09:11:49 -0800</bug_when>
    <thetext>Close this as a duplicate of 78633.

*** This bug has been marked as a duplicate of bug 78633 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118946</attachid>
            <date>2011-12-12 21:03:15 -0800</date>
            <delta_ts>2011-12-13 13:38:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74379-20111213000313.patch</filename>
            <type>text/plain</type>
            <size>42894</size>
            <attacher name="Jacky Jiang">jkjiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhZWVjZGVlMTE5YjY4YTk4
NjkxMmZhZjU2YWRmNzM1OWE5NTlkMGYuLmVmYjBmZmM4YjhmMTlhZWZkMzAwMTQ2ZDBlOGVlZjRi
YmVlNjA0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMTIgIEphY2t5IEpp
YW5nICA8emhhamlhbmdAcmltLmNvbT4KKworICAgICAgICBVcHN0cmVhbSBCbGFja0JlcnJ5IEFQ
SSB3ZWIgc2V0dGluZ3MgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0Mzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udHJpYnV0ZWQgYnkgVG9yY2ggdGVhbS4KKworICAgICAgICBJbml0aWFs
IHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBibGFja2JlcnJ5L0FwaS9XZWJT
ZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdz
Lmg6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzX3AuaDogQWRk
ZWQuCisKIDIwMTEtMTItMDkgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAg
ICAgICBVcHN0cmVhbSBCbGFja0JlcnJ5IEFQSSBiYWNraW5nIHN0b3JlIGZpbGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MDc3
ZTkzNzAyOWZmZTA5ZjU0ZjUyMzliN2EzOTE2MDNkN2IxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcApAQCAtMCwwICsxLDgy
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKworI2luY2x1
ZGUgIldlYlNldHRpbmdzX3AuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDxC
YXNlNjQuaD4KKyNpbmNsdWRlIDxDb2xvci5oPgorI2luY2x1ZGUgPFBhZ2VDYWNoZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNl
IEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBCbGFja0JlcnJ5QWxsb3dDcm9zc1NpdGVSZXF1ZXN0cywgKCJCbGFja0JlcnJ5QWxs
b3dDcm9zc1NpdGVSZXF1ZXN0cyIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFj
a0JlcnJ5QmFja2dyb3VuZENvbG9yLCAoIkJsYWNrQmVycnlCYWNrZ3JvdW5kQ29sb3IiKSk7CitE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUNvb2tpZUNhY2hlRW5hYmxlZCwg
KCJCbGFja0JlcnJ5Q29va2llQ2FjaGVFbmFibGVkIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIEJsYWNrQmVycnlDb29raWVzRW5hYmxlZCwgKCJCbGFja0JlcnJ5Q29va2llc0VuYWJs
ZWQiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeURpcmVjdFJlbmRl
cmluZ1RvV2luZG93RW5hYmxlZCwgKCJCbGFja0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dF
bmFibGVkIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlEcmF3Qm9y
ZGVyV2hpbGVMb2FkaW5nSW1hZ2VzLCAoIkJsYWNrQmVycnlEcmF3Qm9yZGVyV2hpbGVMb2FkaW5n
SW1hZ2VzIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlFbWFpbE1v
ZGVFbmFibGVkLCAoIkJsYWNrQmVycnlFbWFpbE1vZGVFbmFibGVkIikpOworREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlHZXRGb2N1c05vZGVDb250ZXh0RW5hYmxlZCwgKCJC
bGFja0JlcnJ5R2V0Rm9jdXNOb2RlQ29udGV4dEVuYWJsZWQiKSk7CitERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgQmxhY2tCZXJyeUhhbmRsZVBhdHRlcm5VUkxzLCAoIkJsYWNrQmVycnlIYW5k
bGVQYXR0ZXJuVVJMcyIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5
SW5pdGlhbFNjYWxlLCAoIkJsYWNrQmVycnlJbml0aWFsU2NhbGUiKSk7CitERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUxpbmtzSGFuZGxlZEV4dGVybmFsbHlFbmFibGVkLCAo
IkJsYWNrQmVycnlMaW5rc0hhbmRsZWRFeHRlcm5hbGx5RW5hYmxlZCIpKTsKK0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5TWF4UGx1Z2luSW5zdGFuY2VzLCAoIkJsYWNrQmVy
cnlNYXhQbHVnaW5JbnN0YW5jZXMiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxh
Y2tCZXJyeU92ZXJab29tQ29sb3IsICgiQmxhY2tCZXJyeU92ZXJab29tQ29sb3IiKSk7CitERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeVJlbmRlckFuaW1hdGlvbnNPblNjcm9s
bE9yWm9vbUVuYWJsZWQsICgiQmxhY2tCZXJyeVJlbmRlckFuaW1hdGlvbnNPblNjcm9sbE9yWm9v
bUVuYWJsZWQiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeVNjcm9s
bGJhcnNFbmFibGVkLCAoIkJsYWNrQmVycnlTY3JvbGxiYXJzRW5hYmxlZCIpKTsKK0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5VGV4dFJlZmxvd01vZGUsICgiQmxhY2tCZXJy
eVRleHRSZWZsb3dNb2RlIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVy
cnlVc2VSVExXcml0aW5nRGlyZWN0aW9uLCAoIkJsYWNrQmVycnlVc2VSVExXcml0aW5nRGlyZWN0
aW9uIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlVc2VXZWJLaXRD
YWNoZSwgKCJCbGFja0JlcnJ5VXNlV2ViS2l0Q2FjaGUiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgQmxhY2tCZXJyeVVzZXJBZ2VudFN0cmluZywgKCJCbGFja0JlcnJ5VXNlckFnZW50
U3RyaW5nIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlVc2VyU2Nh
bGFibGVFbmFibGVkLCAoIkJsYWNrQmVycnlVc2VyU2NhbGFibGVFbmFibGVkIikpOworREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlWaWV3cG9ydFdpZHRoLCAoIkJsYWNrQmVy
cnlWaWV3cG9ydFdpZHRoIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVy
cnlab29tVG9GaXRPbkxvYWRFbmFibGVkLCAoIkJsYWNrQmVycnlab29tVG9GaXRPbkxvYWRFbmFi
bGVkIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktpdERhdGFiYXNlUGF0aCwg
KCJXZWJLaXREYXRhYmFzZVBhdGgiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2Vi
S2l0RGF0YWJhc2VzRW5hYmxlZCwgKCJXZWJLaXREYXRhYmFzZXNFbmFibGVkIikpOworREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplLCAoIldlYktp
dERlZmF1bHRGaXhlZEZvbnRTaXplIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdl
YktpdERlZmF1bHRGb250U2l6ZSwgKCJXZWJLaXREZWZhdWx0Rm9udFNpemUiKSk7CitERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUsICgiV2Vi
S2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgV2ViS2l0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkLCAoIldlYktpdERvd25sb2Fk
YWJsZUJpbmFyeUZvbnRzRW5hYmxlZCIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBX
ZWJLaXRGaXJzdFNjaGVkdWxlZExheW91dERlbGF5LCAoIldlYktpdEZpcnN0U2NoZWR1bGVkTGF5
b3V0RGVsYXkiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0Rml4ZWRGb250
RmFtaWx5LCAoIldlYktpdEZpeGVkRm9udEZhbWlseSIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCAoIldlYktpdEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0R2VvbG9j
YXRpb25FbmFibGVkLCAoIldlYktpdEdlb2xvY2F0aW9uRW5hYmxlZCIpKTsKK0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNh
bGx5RW5hYmxlZCwgKCJXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
RW5hYmxlZCIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJLaXRKYXZhU2NyaXB0
RW5hYmxlZCwgKCJXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCIpKTsKK0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBXZWJLaXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHksICgiV2ViS2l0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5IikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktp
dExvY2FsU3RvcmFnZUVuYWJsZWQsICgiV2ViS2l0TG9jYWxTdG9yYWdlRW5hYmxlZCIpKTsKK0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJLaXRMb2NhbFN0b3JhZ2VQYXRoLCAoIldlYktp
dExvY2FsU3RvcmFnZVBhdGgiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0
TG9jYWxTdG9yYWdlUXVvdGEsICgiV2ViS2l0TG9jYWxTdG9yYWdlUXVvdGEiKSk7CitERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0TWF4aW11bVBhZ2VzSW5DYWNoZSwgKCJXZWJLaXRN
YXhpbXVtUGFnZXNJbkNhY2hlIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktp
dE1pbmltdW1Gb250U2l6ZSwgKCJXZWJLaXRNaW5pbXVtRm9udFNpemUiKSk7CitERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
LCAoIldlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCIpKTsKK0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgs
ICgiV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoIikpOworREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIFdlYktpdFBhZ2VHcm91cE5hbWUsICgiV2ViS2l0UGFnZUdyb3VwTmFt
ZSIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJLaXRQbHVnaW5zRW5hYmxlZCwg
KCJXZWJLaXRQbHVnaW5zRW5hYmxlZCIpKTsKK0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBX
ZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkLCAoIldlYktpdFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0U2Fuc1NlcmlmZkZvbnRG
YW1pbHksICgiV2ViS2l0U2Fuc1NlcmlmZkZvbnRGYW1pbHkiKSk7CitERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgV2ViS2l0U2VyaWZmRm9udEZhbWlseSwgKCJXZWJLaXRTZXJpZmZGb250RmFt
aWx5IikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktpdFN0YW5kYXJkRm9udEZh
bWlseSwgKCJXZWJLaXRTdGFuZGFyZEZvbnRGYW1pbHkiKSk7CitERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgV2ViS2l0VXNlclN0eWxlU2hlZXQsICgiV2ViS2l0VXNlclN0eWxlU2hlZXQiKSk7
CitERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlv
biwgKCJXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIikpOworREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIFdlYktpdFdlYlNvY2tldHNFbmFibGVkLCAoIldlYktpdFdlYlNvY2tldHNFbmFi
bGVkIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYktpdFhTU0F1ZGl0b3JFbmFi
bGVkLCAoIldlYktpdFhTU0F1ZGl0b3JFbmFibGVkIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgKCJTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQiKSk7CisKKy8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIGFsbCB0aGUgbWlt
ZSB0eXBlIGNvZGUgaW50byBpdHMgb3duIG9iamVjdC4KKwordHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgV2ViU3RyaW5nPiBNSU1FVHlwZUFzc29jaWF0aW9uTWFwOworCitzdGF0aWMgY29uc3QgTUlN
RVR5cGVBc3NvY2lhdGlvbk1hcCYgbWltZVR5cGVBc3NvY2lhdGlvbk1hcCgpCit7CisgICAgc3Rh
dGljIE1JTUVUeXBlQXNzb2NpYXRpb25NYXAqIG1pbWVUeXBlTWFwID0gMDsKKyAgICBpZiAobWlt
ZVR5cGVNYXApCisgICAgICAgIHJldHVybiAqbWltZVR5cGVNYXA7CisgICAgbWltZVR5cGVNYXAg
PSBuZXcgTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJpbWFn
ZS94LW1zLWJtcCIsICJpbWFnZS9ibXAiKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJpbWFnZS94
LXdpbmRvd3MtYm1wIiwgImltYWdlL2JtcCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdl
L3gtYm1wIiwgImltYWdlL2JtcCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL3gtYml0
bWFwIiwgImltYWdlL2JtcCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL3gtbXMtYml0
bWFwIiwgImltYWdlL2JtcCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL2pwZyIsICJp
bWFnZS9qcGVnIik7CisgICAgbWltZVR5cGVNYXAtPmFkZCgiaW1hZ2UvcGpwZWciLCAiaW1hZ2Uv
anBlZyIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL3gtcG5nIiwgImltYWdlL3BuZyIp
OworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL3ZuZC5yaW0ucG5nIiwgImltYWdlL3BuZyIp
OworICAgIG1pbWVUeXBlTWFwLT5hZGQoImltYWdlL2ljbyIsICJpbWFnZS92bmQubWljcm9zb2Z0
Lmljb24iKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJpbWFnZS9pY29uIiwgImltYWdlL3ZuZC5t
aWNyb3NvZnQuaWNvbiIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoInRleHQvaWNvIiwgImltYWdl
L3ZuZC5taWNyb3NvZnQuaWNvbiIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImFwcGxpY2F0aW9u
L2ljbyIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRk
KCJpbWFnZS94LWljb24iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIik7CisgICAgbWltZVR5
cGVNYXAtPmFkZCgiYXVkaW8vdm5kLnFjZWxwIiwgImF1ZGlvL3FjZWxwIik7CisgICAgbWltZVR5
cGVNYXAtPmFkZCgiYXVkaW8vcWNwIiwgImF1ZGlvL3FjZWxwIik7CisgICAgbWltZVR5cGVNYXAt
PmFkZCgiYXVkaW8vdm5kLnFjcCIsICJhdWRpby9xY2VscCIpOworICAgIG1pbWVUeXBlTWFwLT5h
ZGQoImF1ZGlvL3dhdiIsICJhdWRpby94LXdhdiIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1
ZGlvL21pZCIsICJhdWRpby9taWRpIik7CisgICAgbWltZVR5cGVNYXAtPmFkZCgiYXVkaW8vc3At
bWlkaSIsICJhdWRpby9taWRpIik7CisgICAgbWltZVR5cGVNYXAtPmFkZCgiYXVkaW8veC1taWQi
LCAiYXVkaW8vbWlkaSIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtbWlkaSIsICJh
dWRpby9taWRpIik7CisgICAgbWltZVR5cGVNYXAtPmFkZCgiYXVkaW8veC1tcGVnIiwgImF1ZGlv
L21wZWciKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJhdWRpby9tcDMiLCAiYXVkaW8vbXBlZyIp
OworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtbXAzIiwgImF1ZGlvL21wZWciKTsKKyAg
ICBtaW1lVHlwZU1hcC0+YWRkKCJhdWRpby9tcGVnMyIsICJhdWRpby9tcGVnIik7CisgICAgbWlt
ZVR5cGVNYXAtPmFkZCgiYXVkaW8veC1tcGVnMyIsICJhdWRpby9tcGVnIik7CisgICAgbWltZVR5
cGVNYXAtPmFkZCgiYXVkaW8vbXBnMyIsICJhdWRpby9tcGVnIik7CisgICAgbWltZVR5cGVNYXAt
PmFkZCgiYXVkaW8vbXBnIiwgImF1ZGlvL21wZWciKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJh
dWRpby94LW1wZyIsICJhdWRpby9tcGVnIik7CisgICAgbWltZVR5cGVNYXAtPmFkZCgiYXVkaW8v
bTRhIiwgImF1ZGlvL21wNCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtbTRhIiwg
ImF1ZGlvL21wNCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtbXA0IiwgImF1ZGlv
L21wNCIpOworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtYWFjIiwgImF1ZGlvL2FhYyIp
OworICAgIG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL3gtYW1yIiwgImF1ZGlvL2FtciIpOworICAg
IG1pbWVUeXBlTWFwLT5hZGQoImF1ZGlvL21wZWd1cmwiLCAiYXVkaW8veC1tcGVndXJsIik7Cisg
ICAgbWltZVR5cGVNYXAtPmFkZCgidmlkZW8vM2dwIiwgInZpZGVvLzNncHAiKTsKKyAgICBtaW1l
VHlwZU1hcC0+YWRkKCJ2aWRlby9hdmkiLCAidmlkZW8veC1tc3ZpZGVvIik7CisgICAgbWltZVR5
cGVNYXAtPmFkZCgidmlkZW8veC1tNHYiLCAidmlkZW8vbXA0Iik7CisgICAgbWltZVR5cGVNYXAt
PmFkZCgidmlkZW8veC1xdWlja3RpbWUiLCAidmlkZW8vcXVpY2t0aW1lIik7CisgICAgbWltZVR5
cGVNYXAtPmFkZCgiYXBwbGljYXRpb24vamF2YSIsICJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUi
KTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZSIsICJh
cHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiKTsKKyAgICBtaW1lVHlwZU1hcC0+YWRkKCJhcHBsaWNh
dGlvbi94LXppcC1jb21wcmVzc2VkIiwgImFwcGxpY2F0aW9uL3ppcCIpOworICAgIHJldHVybiAq
bWltZVR5cGVNYXA7Cit9CisKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHNfc3VwcG9ydGVkT2Jq
ZWN0TUlNRVR5cGVzOworCitXZWJTZXR0aW5nc1ByaXZhdGU6OldlYlNldHRpbmdzUHJpdmF0ZSgp
CisgICAgOiBpbXBsKDApCisgICAgLCBkZWxlZ2F0ZSgwKQorICAgICwgc2VuZGVyKDApCisgICAg
LCBjb3B5T25Xcml0ZSh0cnVlKQoreworfQorCitXZWJTZXR0aW5nczo6V2ViU2V0dGluZ3MoKQor
eworICAgIG1fcHJpdmF0ZSA9IG5ldyBXZWJTZXR0aW5nc1ByaXZhdGUoKTsKK30KKworV2ViU2V0
dGluZ3M6OldlYlNldHRpbmdzKGNvbnN0IFdlYlNldHRpbmdzJiBvdGhlclNldHRpbmdzKQorewor
ICAgIG1fcHJpdmF0ZS0+aW1wbCA9IG90aGVyU2V0dGluZ3MubV9wcml2YXRlLT5pbXBsOworfQor
CitXZWJTZXR0aW5nczo6fldlYlNldHRpbmdzKCkKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZS0+Y29w
eU9uV3JpdGUpIHsKKyAgICAgICAgZGVsZXRlIG1fcHJpdmF0ZS0+aW1wbDsKKyAgICAgICAgbV9w
cml2YXRlLT5pbXBsID0gMDsKKyAgICB9CisgICAgZGVsZXRlIG1fcHJpdmF0ZTsKKyAgICBtX3By
aXZhdGUgPSAwOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXREZWxlZ2F0ZShXZWJTZXR0aW5n
c0RlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgbV9wcml2YXRlLT5zZW5kZXIgPSB0aGlzOworfQorCitXZWJTZXR0aW5nc0RlbGVn
YXRlKiBXZWJTZXR0aW5nczo6ZGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmRl
bGVnYXRlOworfQorCitXZWJTZXR0aW5ncyogV2ViU2V0dGluZ3M6OmNyZWF0ZUZyb21TdGFuZGFy
ZFNldHRpbmdzKFdlYlNldHRpbmdzRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIFdlYlNldHRp
bmdzKiBzZXR0aW5ncyA9IG5ldyBXZWJTZXR0aW5ncygpOworICAgIHNldHRpbmdzLT5tX3ByaXZh
dGUtPmltcGwgPSBzdGFuZGFyZFNldHRpbmdzKCktPm1fcHJpdmF0ZS0+aW1wbDsKKyAgICBzZXR0
aW5ncy0+bV9wcml2YXRlLT5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIHNldHRpbmdzLT5tX3By
aXZhdGUtPnNlbmRlciA9IHNldHRpbmdzOworICAgIGlmIChkZWxlZ2F0ZSkKKyAgICAgICAgZGVs
ZWdhdGUtPmRpZENoYW5nZVNldHRpbmdzKHNldHRpbmdzKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7
Cit9CisKK1dlYlNldHRpbmdzKiBXZWJTZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5ncygpCit7Cisg
ICAgc3RhdGljIFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IDA7CisgICAgaWYgKHNldHRpbmdzKQor
ICAgICAgICByZXR1cm4gc2V0dGluZ3M7CisgICAgc2V0dGluZ3MgPSBuZXcgV2ViU2V0dGluZ3M7
CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+aW1wbCA9IG5ldyBXZWJTZXR0aW5nc1ByaXZhdGU6
OldlYlNldHRpbmdzUHJpdmF0ZUltcGwoKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5jb3B5
T25Xcml0ZSA9IGZhbHNlOworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldFVuc2lnbmVkKEJs
YWNrQmVycnlCYWNrZ3JvdW5kQ29sb3IsIFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7CisgICAgc2V0
dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQsIHRy
dWUpOworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeUNvb2tp
ZUNhY2hlRW5hYmxlZCwgdHJ1ZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0RG91Ymxl
KEJsYWNrQmVycnlJbml0aWFsU2NhbGUsIC0xKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5z
ZXRVbnNpZ25lZChCbGFja0JlcnJ5TWF4UGx1Z2luSW5zdGFuY2VzLCAxKTsKKyAgICBzZXR0aW5n
cy0+bV9wcml2YXRlLT5zZXRVbnNpZ25lZChCbGFja0JlcnJ5T3Zlclpvb21Db2xvciwgV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJs
YWNrQmVycnlTY3JvbGxiYXJzRW5hYmxlZCwgdHJ1ZSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGRldGVjdCB3aGV0aGVyIHdlIGFyZSBlbWJlZGRlZCBpbiBhIGJyb3dzZXIgb3IgYW4gZW1h
aWwgY2xpZW50IGFuZCBkZWZhdWx0IHRvIFRleHRSZWZsb3dFbmFibGVkT25seUZvckJsb2NrWm9v
bSBhbmQgVGV4dFJlZmxvd0VuYWJsZWQsIHJlc3BlY3RpdmVseS4KKyAgICBzZXR0aW5ncy0+bV9w
cml2YXRlLT5zZXRUZXh0UmVmbG93TW9kZShCbGFja0JlcnJ5VGV4dFJlZmxvd01vZGUsIFRleHRS
ZWZsb3dEaXNhYmxlZCk7CisKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJs
YWNrQmVycnlVc2VyU2NhbGFibGVFbmFibGVkLCB0cnVlKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2
YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlVc2VXZWJLaXRDYWNoZSwgdHJ1ZSk7CisgICAgc2V0
dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5Wm9vbVRvRml0T25Mb2FkRW5h
YmxlZCwgdHJ1ZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0SW50ZWdlcihXZWJLaXRE
ZWZhdWx0Rm9udFNpemUsIDE2KTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRJbnRlZ2Vy
KFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplLCAxMyk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0
ZS0+c2V0SW50ZWdlcihXZWJLaXRNaW5pbXVtRm9udFNpemUsIDgpOworICAgIHNldHRpbmdzLT5t
X3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSwgImlzby04
ODU5LTEiKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRJbnRlZ2VyKFdlYktpdEZpcnN0
U2NoZWR1bGVkTGF5b3V0RGVsYXksIDI1MCk7IC8vIE1hdGNoIERvY3VtZW50OjpjTGF5b3V0U2No
ZWR1bGVUaHJlc2hvbGQuCisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihXZWJL
aXRKYXZhU2NyaXB0RW5hYmxlZCwgdHJ1ZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0
Qm9vbGVhbihXZWJLaXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHksIHRydWUpOworICAgIHNldHRp
bmdzLT5tX3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkLCB0cnVlKTsKKyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRVbnNpZ25lZExvbmdM
b25nKFdlYktpdExvY2FsU3RvcmFnZVF1b3RhLCA1ICogMTAyNCAqIDEwMjQpOworICAgIHNldHRp
bmdzLT5tX3ByaXZhdGUtPnNldEludGVnZXIoV2ViS2l0TWF4aW11bVBhZ2VzSW5DYWNoZSwgMCk7
CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihXZWJLaXRXZWJTb2NrZXRzRW5h
YmxlZCwgdHJ1ZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdEZp
eGVkRm9udEZhbWlseSwgIkNvdXJpZXIgTmV3Iik7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+
c2V0U3RyaW5nKFdlYktpdFNhbnNTZXJpZmZGb250RmFtaWx5LCAiQXJpYWwiKTsKKyAgICBzZXR0
aW5ncy0+bV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0U2VyaWZmRm9udEZhbWlseSwgIlRpbWVz
IE5ldyBSb21hbiIpOworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRT
dGFuZGFyZEZvbnRGYW1pbHksICJUaW1lcyBOZXcgUm9tYW4iKTsKKyAgICBzZXR0aW5ncy0+bV9w
cml2YXRlLT5zZXRCb29sZWFuKFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgZmFsc2UpOworICAg
IHJldHVybiBzZXR0aW5nczsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6YWRkU3VwcG9ydGVkT2Jq
ZWN0UGx1Z2luTUlNRVR5cGUoY29uc3QgY2hhciogdHlwZSkKK3sKKyAgICBpZiAoIXNfc3VwcG9y
dGVkT2JqZWN0TUlNRVR5cGVzKQorICAgICAgICBzX3N1cHBvcnRlZE9iamVjdE1JTUVUeXBlcyA9
IG5ldyBIYXNoU2V0PFN0cmluZz47CisgICAgc19zdXBwb3J0ZWRPYmplY3RNSU1FVHlwZXMtPmFk
ZCh0eXBlKTsKK30KKworLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSB1c2luZyBXVEY6OlN0cmlu
ZyBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50LgorYm9vbCBXZWJTZXR0aW5nczo6aXNTdXBwb3J0ZWRP
YmplY3RNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlw
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXNfc3VwcG9ydGVk
T2JqZWN0TUlNRVR5cGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHNfc3Vw
cG9ydGVkT2JqZWN0TUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWlt
ZVR5cGUpKTsKK30KKworV2ViU3RyaW5nIFdlYlNldHRpbmdzOjpnZXROb3JtYWxpemVkTUlNRVR5
cGUoY29uc3QgV2ViU3RyaW5nJiB0eXBlKQoreworICAgIE1JTUVUeXBlQXNzb2NpYXRpb25NYXA6
OmNvbnN0X2l0ZXJhdG9yIGkgPSBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkuZmluZCh0eXBlKTsK
KyAgICByZXR1cm4gaSA9PSBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkuZW5kKCkgPyB0eXBlIDog
aS0+c2Vjb25kOworfQorCitib29sIFdlYlNldHRpbmdzOjp4c3NBdWRpdG9yRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihXZWJLaXRYU1NBdWRpdG9y
RW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdFhT
U0F1ZGl0b3JFbmFibGVkLCBlbmFibGVkKTsKK30KKworYm9vbCBXZWJTZXR0aW5nczo6bG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRC
b29sZWFuKFdlYktpdExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7Cit9CisKK3ZvaWQgV2ViU2V0
dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGVuYWJsZWQpCit7CisgICAg
bV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSwgZW5h
YmxlZCk7Cit9CisKK2Jvb2wgV2ViU2V0dGluZ3M6OmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5h
YmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihXZWJLaXRE
b3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpz
ZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkLCBlbmFibGVkKTsKK30KKworYm9vbCBXZWJTZXR0aW5nczo6c2hvdWxkRHJhd0JvcmRl
cldoaWxlTG9hZGluZ0ltYWdlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0
Qm9vbGVhbihCbGFja0JlcnJ5RHJhd0JvcmRlcldoaWxlTG9hZGluZ0ltYWdlcyk7Cit9CisKK3Zv
aWQgV2ViU2V0dGluZ3M6OnNldFNob3VsZERyYXdCb3JkZXJXaGlsZUxvYWRpbmdJbWFnZXMoYm9v
bCBlbmFibGVkKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5RHJhd0Jv
cmRlcldoaWxlTG9hZGluZ0ltYWdlcywgZW5hYmxlZCk7Cit9CisKK2Jvb2wgV2ViU2V0dGluZ3M6
OmlzSmF2YVNjcmlwdEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdl
dEJvb2xlYW4oV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQpOworfQordm9pZCBXZWJTZXR0aW5nczo6
c2V0SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fcHJpdmF0ZS0+c2V0
Qm9vbGVhbihXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCwgZW5hYmxlZCk7Cit9CisKK2Jvb2wgV2Vi
U2V0dGluZ3M6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihXZWJLaXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKK30K
Kwordm9pZCBXZWJTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGVuYWJsZWQpOworfQorCitpbnQgV2ViU2V0dGluZ3M6OmRlZmF1bHRGaXhlZEZvbnRT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRJbnRlZ2VyKFdlYktpdERl
ZmF1bHRGaXhlZEZvbnRTaXplKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0RGVmYXVsdEZp
eGVkRm9udFNpemUoaW50IGRlZmF1bHRGaXhlZEZvbnRTaXplKQoreworICAgIG1fcHJpdmF0ZS0+
c2V0SW50ZWdlcihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZSwgZGVmYXVsdEZpeGVkRm9udFNp
emUpOworfQorCitpbnQgV2ViU2V0dGluZ3M6OmRlZmF1bHRGb250U2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0SW50ZWdlcihXZWJLaXREZWZhdWx0Rm9udFNpemUpOwor
fQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXREZWZhdWx0Rm9udFNpemUoaW50IGRlZmF1bHRGb250
U2l6ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEludGVnZXIoV2ViS2l0RGVmYXVsdEZvbnRTaXpl
LCBkZWZhdWx0Rm9udFNpemUpOworfQorCitpbnQgV2ViU2V0dGluZ3M6Om1pbmltdW1Gb250U2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0SW50ZWdlcihXZWJLaXRNaW5p
bXVtRm9udFNpemUpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRNaW5pbXVtRm9udFNpemUo
aW50IG1pbmltdW1Gb250U2l6ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEludGVnZXIoV2ViS2l0
TWluaW11bUZvbnRTaXplLCBtaW5pbXVtRm9udFNpemUpOworfQorCitXZWJTdHJpbmcgV2ViU2V0
dGluZ3M6OnNlcmlmRm9udEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
Z2V0U3RyaW5nKFdlYktpdFNlcmlmZkZvbnRGYW1pbHkpOworfQorCit2b2lkIFdlYlNldHRpbmdz
OjpzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgY2hhciogc2VyaWZmRm9udEZhbWlseSkKK3sKKyAg
ICBtX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRTZXJpZmZGb250RmFtaWx5LCBzZXJpZmZGb250
RmFtaWx5KTsKK30KKworV2ViU3RyaW5nIFdlYlNldHRpbmdzOjpmaXhlZEZvbnRGYW1pbHkoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldFN0cmluZyhXZWJLaXRGaXhlZEZvbnRG
YW1pbHkpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3Qg
Y2hhciogZml4ZWRGb250RmFtaWx5KQoreworICAgIG1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktp
dEZpeGVkRm9udEZhbWlseSwgZml4ZWRGb250RmFtaWx5KTsKK30KKworV2ViU3RyaW5nIFdlYlNl
dHRpbmdzOjpzYW5zU2VyaWZGb250RmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZXRTdHJpbmcoV2ViS2l0U2Fuc1NlcmlmZkZvbnRGYW1pbHkpOworfQorCit2b2lkIFdl
YlNldHRpbmdzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IGNoYXIqIHNhbnNTZXJpZmZG
b250RmFtaWx5KQoreworICAgIG1fcHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFNhbnNTZXJpZmZG
b250RmFtaWx5LCBzYW5zU2VyaWZmRm9udEZhbWlseSk7Cit9CisKK1dlYlN0cmluZyBXZWJTZXR0
aW5nczo6c3RhbmRhcmRGb250RmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5nZXRTdHJpbmcoV2ViS2l0U3RhbmRhcmRGb250RmFtaWx5KTsKK30KKwordm9pZCBXZWJTZXR0
aW5nczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IGNoYXIqIHN0YW5kYXJkRm9udEZhbWls
eSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXRTdGFuZGFyZEZvbnRGYW1pbHks
IHN0YW5kYXJkRm9udEZhbWlseSk7Cit9CisKK1dlYlN0cmluZyBXZWJTZXR0aW5nczo6dXNlckFn
ZW50U3RyaW5nKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSXMgdGhpcyB0aGUgYmVzdCBwbGFj
ZSBmb3IgdGhpcyBhc3NlcnRpb24uIFdoeSBjYW4ndCB3ZSBqdXN0IHJldHVybiBhbiBlbXB0eSBz
dHJpbmcKKyAgICAvLyBhbmQgbGV0IHRoZSBjYWxsZXIgZGVjaWRlIGhvdyB0byBoYW5kbGUgaXQ/
CisKKyAgICAvLyBUaGUgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZyBpcyBlbXB0eS4gV2UgcmVs
eSB1cG9uIHRoZSBjbGllbnQgdG8gc2V0IHRoaXMgZm9yIHVzLgorICAgIC8vIFdlIGNoZWNrIHRo
aXMgYnkgYXNzZXJ0aW5nIGlmIHRoZSBjbGllbnQgaGFzIG5vdCBkb25lIHNvIGJlZm9yZSB0aGUg
Zmlyc3QgdGltZSBpdCBpcyBuZWVkZWQuCisgICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9IG1f
cHJpdmF0ZS0+Z2V0U3RyaW5nKEJsYWNrQmVycnlVc2VyQWdlbnRTdHJpbmcpOworICAgIEFTU0VS
VCghdXNlckFnZW50U3RyaW5nLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHVzZXJBZ2VudFN0cmlu
ZzsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0VXNlckFnZW50U3RyaW5nKGNvbnN0IGNoYXIq
IHVzZXJBZ2VudFN0cmluZykKK3sKKyAgICBtX3ByaXZhdGUtPnNldFN0cmluZyhCbGFja0JlcnJ5
VXNlckFnZW50U3RyaW5nLCB1c2VyQWdlbnRTdHJpbmcpOworfQorCitXZWJTdHJpbmcgV2ViU2V0
dGluZ3M6OmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5nZXRTdHJpbmcoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUpOworfQorCit2
b2lkIFdlYlNldHRpbmdzOjpzZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBk
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFN0cmluZyhXZWJL
aXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSwgZGVmYXVsdFRleHRFbmNvZGluZ05hbWUpOworfQor
Citib29sIFdlYlNldHRpbmdzOjppc1pvb21Ub0ZpdE9uTG9hZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5Wm9vbVRvRml0T25Mb2FkRW5hYmxl
ZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldFpvb21Ub0ZpdE9uTG9hZChib29sIGVuYWJs
ZWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlab29tVG9GaXRPbkxv
YWRFbmFibGVkLCBlbmFibGVkKTsKK30KKworV2ViU2V0dGluZ3M6OlRleHRSZWZsb3dNb2RlIFdl
YlNldHRpbmdzOjp0ZXh0UmVmbG93TW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+Z2V0VGV4dFJlZmxvd01vZGUoQmxhY2tCZXJyeVRleHRSZWZsb3dNb2RlKTsKK30KKwordm9p
ZCBXZWJTZXR0aW5nczo6c2V0VGV4dFJlZmxvd01vZGUoVGV4dFJlZmxvd01vZGUgdGV4dFJlZmxv
d01vZGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRUZXh0UmVmbG93TW9kZShCbGFja0JlcnJ5VGV4
dFJlZmxvd01vZGUsIHRleHRSZWZsb3dNb2RlKTsKK30KKworYm9vbCBXZWJTZXR0aW5nczo6aXNT
Y3JvbGxiYXJzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9v
bGVhbihCbGFja0JlcnJ5U2Nyb2xsYmFyc0VuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdz
OjpzZXRTY3JvbGxiYXJzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9wcml2YXRlLT5z
ZXRCb29sZWFuKEJsYWNrQmVycnlTY3JvbGxiYXJzRW5hYmxlZCwgZW5hYmxlZCk7Cit9CisKK2Jv
b2wgV2ViU2V0dGluZ3M6OmNhbkphdmFTY3JpcHRPcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEJvb2xlYW4oV2ViS2l0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseUVuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRp
bmdzOjpzZXRKYXZhU2NyaXB0T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseUVuYWJsZWQsIGVuYWJsZWQpOworfQorCitib29sIFdlYlNldHRpbmdz
OjphcmVQbHVnaW5zRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0
Qm9vbGVhbihXZWJLaXRQbHVnaW5zRW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNl
dFBsdWdpbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJvb2xl
YW4oV2ViS2l0UGx1Z2luc0VuYWJsZWQsIGVuYWJsZWQpOworfQorCitib29sIFdlYlNldHRpbmdz
Ojppc0dlb2xvY2F0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
Z2V0Qm9vbGVhbihXZWJLaXRHZW9sb2NhdGlvbkVuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRp
bmdzOjpzZXRHZW9sb2NhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0Qm9vbGVhbihXZWJLaXRHZW9sb2NhdGlvbkVuYWJsZWQsIGVuYWJsZWQpOworfQorCiti
b29sIFdlYlNldHRpbmdzOjpkb2VzR2V0Rm9jdXNOb2RlQ29udGV4dCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5R2V0Rm9jdXNOb2RlQ29udGV4
dEVuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRHZXRGb2N1c05vZGVDb250ZXh0
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeUdl
dEZvY3VzTm9kZUNvbnRleHRFbmFibGVkLCBlbmFibGVkKTsKK30KKworV2ViU3RyaW5nIFdlYlNl
dHRpbmdzOjp1c2VyU3R5bGVTaGVldFN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+Z2V0U3RyaW5nKFdlYktpdFVzZXJTdHlsZVNoZWV0KTsKK30KKwordm9pZCBXZWJTZXR0
aW5nczo6c2V0VXNlclN0eWxlU2hlZXRTdHJpbmcoY29uc3QgY2hhciogdXNlclN0eWxlU2hlZXRT
dHJpbmcpCit7CisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBzZWVtIGxpa2UgdGhlIGFwcHJv
cHJpYXRlIHBsYWNlIHRvIGRvIHRoaXMgYXMgV2ViU2V0dGluZ3Mgc2hvdWxkIGlkZWFsbHkgYmUg
YSBzdGF0ZSBzdG9yZS4KKyAgICAvLyBFaXRoZXIgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9u
IHNob3VsZCBkbyB0aGlzIGNvbnZlcnNpb24gb3IgY2FsbGVyIG9mIHRoZSBnZXR0ZXIgY29ycmVz
cG9uZGluZyB0byB0aGlzIGZ1bmN0aW9uCisgICAgLy8gc2hvdWxkIGRvIHRoaXMgY29udmVyc2lv
bi4KKworICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4odXNlclN0eWxlU2hlZXRTdHJpbmcpOwor
ICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIGRhdGEuYXBwZW5kKHVzZXJTdHlsZVNoZWV0U3Ry
aW5nLCBsZW5ndGgpOworCisgICAgVmVjdG9yPGNoYXI+IGVuY29kZWREYXRhOworICAgIFdlYkNv
cmU6OmJhc2U2NEVuY29kZShkYXRhLCBlbmNvZGVkRGF0YSk7CisKKyAgICBjb25zdCBjaGFyIHBy
ZWZpeFtdID0gImRhdGE6dGV4dC9jc3M7Y2hhcnNldD11dGYtODtiYXNlNjQsIjsKKyAgICBzaXpl
X3QgcHJlZml4TGVuZ3RoID0gc2l6ZW9mKHByZWZpeCkgLSAxOworICAgIFZlY3RvcjxjaGFyPiBk
YXRhVVJMOworICAgIGRhdGFVUkwucmVzZXJ2ZUNhcGFjaXR5KHByZWZpeExlbmd0aCArIGVuY29k
ZWREYXRhLnNpemUoKSk7CisgICAgZGF0YVVSTC5hcHBlbmQocHJlZml4LCBwcmVmaXhMZW5ndGgp
OworICAgIGRhdGFVUkwuYXBwZW5kKGVuY29kZWREYXRhKTsKKyAgICBtX3ByaXZhdGUtPnNldFN0
cmluZyhXZWJLaXRVc2VyU3R5bGVTaGVldCwgU3RyaW5nKGRhdGFVUkwuZGF0YSgpLCBkYXRhVVJM
LnNpemUoKSkpOworfQorCitXZWJTdHJpbmcgV2ViU2V0dGluZ3M6OnVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldFN0cmluZyhXZWJLaXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBjaGFyKiB1c2VyU3R5bGVTaGVldExvY2F0aW9uKQoreworICAgIG1f
cHJpdmF0ZS0+c2V0U3RyaW5nKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb24sIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pOworfQorCitib29sIFdlYlNldHRpbmdzOjphcmVMaW5rc0hhbmRsZWRF
eHRlcm5hbGx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKEJs
YWNrQmVycnlMaW5rc0hhbmRsZWRFeHRlcm5hbGx5RW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0
dGluZ3M6OnNldEFyZUxpbmtzSGFuZGxlZEV4dGVybmFsbHkoYm9vbCBlbmFibGVkKQoreworICAg
IG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5TGlua3NIYW5kbGVkRXh0ZXJuYWxseUVu
YWJsZWQsIGVuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRBbGxvd0Nyb3NzU2l0
ZVJlcXVlc3RzKGJvb2wgYWxsb3cpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNr
QmVycnlBbGxvd0Nyb3NzU2l0ZVJlcXVlc3RzLCBhbGxvdyk7Cit9CisKK2Jvb2wgV2ViU2V0dGlu
Z3M6OmFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPmdldEJvb2xlYW4oQmxhY2tCZXJyeUFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMpOworfQorCiti
b29sIFdlYlNldHRpbmdzOjppc1VzZXJTY2FsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5VXNlclNjYWxhYmxlRW5hYmxlZCk7Cit9CisK
K3ZvaWQgV2ViU2V0dGluZ3M6OnNldFVzZXJTY2FsYWJsZShib29sIGVuYWJsZWQpCit7CisgICAg
bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlVc2VyU2NhbGFibGVFbmFibGVkLCBlbmFi
bGVkKTsKK30KKworaW50IFdlYlNldHRpbmdzOjp2aWV3cG9ydFdpZHRoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5nZXRJbnRlZ2VyKEJsYWNrQmVycnlWaWV3cG9ydFdpZHRoKTsK
K30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0Vmlld3BvcnRXaWR0aChpbnQgd2lkdGgpCit7Cisg
ICAgbV9wcml2YXRlLT5zZXRJbnRlZ2VyKEJsYWNrQmVycnlWaWV3cG9ydFdpZHRoLCB3aWR0aCk7
Cit9CisKK2RvdWJsZSBXZWJTZXR0aW5nczo6aW5pdGlhbFNjYWxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5nZXREb3VibGUoQmxhY2tCZXJyeUluaXRpYWxTY2FsZSk7Cit9CisK
K3ZvaWQgV2ViU2V0dGluZ3M6OnNldEluaXRpYWxTY2FsZShkb3VibGUgaW5pdGlhbFNjYWxlKQor
eworICAgIG1fcHJpdmF0ZS0+c2V0RG91YmxlKEJsYWNrQmVycnlJbml0aWFsU2NhbGUsIGluaXRp
YWxTY2FsZSk7Cit9CisKK2ludCBXZWJTZXR0aW5nczo6Zmlyc3RTY2hlZHVsZWRMYXlvdXREZWxh
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0SW50ZWdlcihXZWJLaXRGaXJz
dFNjaGVkdWxlZExheW91dERlbGF5KTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0Rmlyc3RT
Y2hlZHVsZWRMYXlvdXREZWxheShpbnQgZGVsYXkpCit7CisgICAgbV9wcml2YXRlLT5zZXRJbnRl
Z2VyKFdlYktpdEZpcnN0U2NoZWR1bGVkTGF5b3V0RGVsYXksIGRlbGF5KTsKK30KKworLy8gV2hl
dGhlciB0byBpbmNsdWRlIHBhdHRlcm46IGluIHRoZSBsaXN0IG9mIHN0cmluZyBwYXR0ZXJucy4K
K2Jvb2wgV2ViU2V0dGluZ3M6OnNob3VsZEhhbmRsZVBhdHRlcm5VcmxzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKEJsYWNrQmVycnlIYW5kbGVQYXR0ZXJuVVJM
cyk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldFNob3VsZEhhbmRsZVBhdHRlcm5VcmxzKGJv
b2wgaGFuZGxlUGF0dGVyblVSTHMpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNr
QmVycnlIYW5kbGVQYXR0ZXJuVVJMcywgaGFuZGxlUGF0dGVyblVSTHMpOworfQorCitib29sIFdl
YlNldHRpbmdzOjppc0Nvb2tpZUNhY2hlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5Q29va2llQ2FjaGVFbmFibGVkKTsKK30KKwor
dm9pZCBXZWJTZXR0aW5nczo6c2V0SXNDb29raWVDYWNoZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7
CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlDb29raWVDYWNoZUVuYWJsZWQs
IGVuYWJsZSk7Cit9CisKK2Jvb2wgV2ViU2V0dGluZ3M6OmFyZUNvb2tpZXNFbmFibGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKEJsYWNrQmVycnlDb29raWVz
RW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldEFyZUNvb2tpZXNFbmFibGVkKGJv
b2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5Q29va2ll
c0VuYWJsZWQsIGVuYWJsZSk7Cit9CisKK2Jvb2wgV2ViU2V0dGluZ3M6OmlzTG9jYWxTdG9yYWdl
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihXZWJL
aXRMb2NhbFN0b3JhZ2VFbmFibGVkKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0SXNMb2Nh
bFN0b3JhZ2VFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVh
bihXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkLCBlbmFibGUpOworfQorCitib29sIFdlYlNldHRp
bmdzOjppc0RhdGFiYXNlc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUt
PmdldEJvb2xlYW4oV2ViS2l0RGF0YWJhc2VzRW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGlu
Z3M6OnNldElzRGF0YWJhc2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUt
PnNldEJvb2xlYW4oV2ViS2l0RGF0YWJhc2VzRW5hYmxlZCwgZW5hYmxlKTsKK30KKworYm9vbCBX
ZWJTZXR0aW5nczo6aXNBcHBDYWNoZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPmdldEJvb2xlYW4oV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0SXNBcHBDYWNoZUVuYWJsZWQoYm9vbCBlbmFi
bGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZCwgZW5hYmxlKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIFdlYlNl
dHRpbmdzOjpsb2NhbFN0b3JhZ2VRdW90YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+Z2V0VW5zaWduZWRMb25nTG9uZyhXZWJLaXRMb2NhbFN0b3JhZ2VRdW90YSk7Cit9CisKK3Zv
aWQgV2ViU2V0dGluZ3M6OnNldExvY2FsU3RvcmFnZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFVuc2lnbmVkTG9uZ0xvbmcoV2ViS2l0TG9jYWxT
dG9yYWdlUXVvdGEsIHF1b3RhKTsKK30KKworaW50IFdlYlNldHRpbmdzOjptYXhpbXVtUGFnZXNJ
bkNhY2hlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcg
aW50byBXZWJDb3JlIGZyb20gaGVyZS4gVGhpcyBjbGFzcyBzaG91bGQganVzdCBiZSBhIHN0YXRl
IHN0b3JlLgorICAgIHJldHVybiBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+Y2FwYWNpdHkoKTsKK30K
Kwordm9pZCBXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZShpbnQgcGFnZXMpCit7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsaW5nIGludG8gV2ViQ29yZSBmcm9t
IGhlcmUuIFRoaXMgY2xhc3Mgc2hvdWxkIGp1c3QgYmUgYSBzdGF0ZSBzdG9yZS4KKyAgICB1bnNp
Z25lZCByZWFsUGFnZXMgPSBzdGQ6Om1heCgwLCBwYWdlcyk7CisgICAgV2ViQ29yZTo6cGFnZUNh
Y2hlKCktPnNldENhcGFjaXR5KHJlYWxQYWdlcyk7CisgICAgbV9wcml2YXRlLT5zZXRVbnNpZ25l
ZChXZWJLaXRNYXhpbXVtUGFnZXNJbkNhY2hlLCByZWFsUGFnZXMpOworfQorCitXZWJTdHJpbmcg
V2ViU2V0dGluZ3M6OmxvY2FsU3RvcmFnZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPmdldFN0cmluZyhXZWJLaXRMb2NhbFN0b3JhZ2VQYXRoKTsKK30KKwordm9pZCBXZWJT
ZXR0aW5nczo6c2V0TG9jYWxTdG9yYWdlUGF0aChjb25zdCBXZWJTdHJpbmcmIHBhdGgpCit7Cisg
ICAgbV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0TG9jYWxTdG9yYWdlUGF0aCwgcGF0aCk7Cit9
CisKK1dlYlN0cmluZyBXZWJTZXR0aW5nczo6ZGF0YWJhc2VQYXRoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5nZXRTdHJpbmcoV2ViS2l0RGF0YWJhc2VQYXRoKTsKK30KKwordm9p
ZCBXZWJTZXR0aW5nczo6c2V0RGF0YWJhc2VQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkKK3sK
KyAgICBtX3ByaXZhdGUtPnNldFN0cmluZyhXZWJLaXREYXRhYmFzZVBhdGgsIHBhdGgpOworfQor
CitXZWJTdHJpbmcgV2ViU2V0dGluZ3M6OmFwcENhY2hlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Z2V0U3RyaW5nKFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
UGF0aCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldEFwcENhY2hlUGF0aChjb25zdCBXZWJT
dHJpbmcmIHBhdGgpCit7CisgICAgbV9wcml2YXRlLT5zZXRTdHJpbmcoV2ViS2l0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVQYXRoLCBwYXRoKTsKK30KKworV2ViU3RyaW5nIFdlYlNldHRpbmdz
OjpwYWdlR3JvdXBOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRTdHJp
bmcoV2ViS2l0UGFnZUdyb3VwTmFtZSk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldFBhZ2VH
cm91cE5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYWdlR3JvdXBOYW1lKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0U3RyaW5nKFdlYktpdFBhZ2VHcm91cE5hbWUsIHBhZ2VHcm91cE5hbWUpOworfQorCiti
b29sIFdlYlNldHRpbmdzOjppc0VtYWlsTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5RW1haWxNb2RlRW5hYmxlZCk7Cit9CisKK3ZvaWQg
V2ViU2V0dGluZ3M6OnNldEVtYWlsTW9kZShib29sIGVuYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUt
PnNldEJvb2xlYW4oQmxhY2tCZXJyeUVtYWlsTW9kZUVuYWJsZWQsIGVuYWJsZSk7Cit9CisKK2Jv
b2wgV2ViU2V0dGluZ3M6OnNob3VsZFJlbmRlckFuaW1hdGlvbnNPblNjcm9sbE9yWm9vbSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5UmVuZGVy
QW5pbWF0aW9uc09uU2Nyb2xsT3Jab29tRW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6
OnNldFNob3VsZFJlbmRlckFuaW1hdGlvbnNPblNjcm9sbE9yWm9vbShib29sIGVuYWJsZSkKK3sK
KyAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeVJlbmRlckFuaW1hdGlvbnNPblNj
cm9sbE9yWm9vbUVuYWJsZWQsIGVuYWJsZSk7Cit9CisKK3Vuc2lnbmVkIFdlYlNldHRpbmdzOjpv
dmVyWm9vbUNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRVbnNpZ25l
ZChCbGFja0JlcnJ5T3Zlclpvb21Db2xvcik7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldE92
ZXJab29tQ29sb3IodW5zaWduZWQgY29sb3IpCit7CisgICAgbV9wcml2YXRlLT5zZXRVbnNpZ25l
ZChCbGFja0JlcnJ5T3Zlclpvb21Db2xvciwgY29sb3IpOworfQorCit1bnNpZ25lZCBXZWJTZXR0
aW5nczo6YmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5n
ZXRVbnNpZ25lZChCbGFja0JlcnJ5QmFja2dyb3VuZENvbG9yKTsKK30KKwordm9pZCBXZWJTZXR0
aW5nczo6c2V0QmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGNvbG9yKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0VW5zaWduZWQoQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciwgY29sb3IpOworfQorCiti
b29sIFdlYlNldHRpbmdzOjppc1dyaXRpbmdEaXJlY3Rpb25SVEwoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmdldEJvb2xlYW4oQmxhY2tCZXJyeVVzZVJUTFdyaXRpbmdEaXJlY3Rp
b24pOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRXcml0aW5nRGlyZWN0aW9uUlRMKGJvb2wg
dXNlUlRMV3JpdGluZ0RpcmVjdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxh
Y2tCZXJyeVVzZVJUTFdyaXRpbmdEaXJlY3Rpb24sIHVzZVJUTFdyaXRpbmdEaXJlY3Rpb24pOwor
fQorCitib29sIFdlYlNldHRpbmdzOjp1c2VXZWJLaXRDYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5VXNlV2ViS2l0Q2FjaGUpOworfQor
Cit2b2lkIFdlYlNldHRpbmdzOjpzZXRVc2VXZWJLaXRDYWNoZShib29sIHVzZVdlYktpdENhY2hl
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5VXNlV2ViS2l0Q2FjaGUs
IHVzZVdlYktpdENhY2hlKTsKK30KKworYm9vbCBXZWJTZXR0aW5nczo6aXNGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKFdl
YktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0
Qm9vbGVhbihXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBlbmFibGUpOworfQorCitib29s
IFdlYlNldHRpbmdzOjppc0RpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5RGlyZWN0UmVuZGVy
aW5nVG9XaW5kb3dFbmFibGVkKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0RGlyZWN0UmVu
ZGVyaW5nVG9XaW5kb3dFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0
Qm9vbGVhbihCbGFja0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkLCBlbmFibGUp
OworfQorCit1bnNpZ25lZCBXZWJTZXR0aW5nczo6bWF4UGx1Z2luSW5zdGFuY2VzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRVbnNpZ25lZChCbGFja0JlcnJ5TWF4UGx1Z2lu
SW5zdGFuY2VzKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0TWF4UGx1Z2luSW5zdGFuY2Vz
KHVuc2lnbmVkIG1heFBsdWdpbkluc3RhbmNlcykKK3sKKyAgICBtX3ByaXZhdGUtPnNldFVuc2ln
bmVkKEJsYWNrQmVycnlNYXhQbHVnaW5JbnN0YW5jZXMsIG1heFBsdWdpbkluc3RhbmNlcyk7Cit9
CisKK2Jvb2wgV2ViU2V0dGluZ3M6OmFyZVdlYlNvY2tldHNFbmFibGVkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKFdlYktpdFdlYlNvY2tldHNFbmFibGVkKTsK
K30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0V2ViU29ja2V0c0VuYWJsZWQoYm9vbCBlbmFibGUp
Cit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKFdlYktpdFdlYlNvY2tldHNFbmFibGVkLCBl
bmFibGUpOworfQorCitib29sIFdlYlNldHRpbmdzOjppc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihTcGF0aWFsTmF2
aWdhdGlvbkVuYWJsZWQpOworfQorCit2b2lkIFdlYlNldHRpbmdzOjpzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb29sZWFuKFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgZW5hYmxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI3YjFhYTQ4MmUxYzhiY2Y1MjAyMzgzYjll
ZGZjMWQ3NGIwNjRmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViU2V0dGluZ3MuaApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYlNldHRpbmdzX2gK
KyNkZWZpbmUgV2ViU2V0dGluZ3NfaAorCisjaW5jbHVkZSAiQmxhY2tCZXJyeUdsb2JhbC5oIgor
CisvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIHVzaW5nIFdURiB0eXBlcyBpbiBvdXIgcHVibGlj
IEFQSS4gRm9yIHNvbWUgcmVhc29uIGlzU3VwcG9ydGVkT2JqZWN0TUlNRVR5cGUoKSB1c2VzIGEg
V2ViQ29yZSBzdHJpbmcuCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKworbmFt
ZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNldHRp
bmdzOworY2xhc3MgV2ViU2V0dGluZ3NQcml2YXRlOworCisvKiEKKyAgICBAc3RydWN0IFdlYlNl
dHRpbmdzRGVsZWdhdGUKKyAgICBEZWZpbmVzIHRoZSBtZXRob2RzIHRoYXQgbXVzdCBiZSBpbXBs
ZW1lbnRlZCBieSBhIGRlbGVnYXRlIG9mIFdlYlNldHRpbmdzLgorKi8KK3N0cnVjdCBCTEFDS0JF
UlJZX0VYUE9SVCBXZWJTZXR0aW5nc0RlbGVnYXRlIHsKKyAgICB2aXJ0dWFsIH5XZWJTZXR0aW5n
c0RlbGVnYXRlKCkgeyB9CisKKyAgICAvKiEKKyAgICAgICAgU2VudCB3aGVuIHRoZSB2YWx1ZSBv
ZiBhIHNldHRpbmcgY2hhbmdlZCBhcyB3ZWxsIGFzIG9uIGluc3RhbnRpYXRpb24gb2YgYSBXZWJT
ZXR0aW5ncyBvYmplY3QuCisgICAgICAgIEBwYXJhbSBzZXR0aW5ncyBUaGUgV2ViU2V0dGluZ3Mg
b2JqZWN0IHRoYXQgc2VudCB0aGUgbWVzc2FnZS4KKyAgICAqLworICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VTZXR0aW5ncyhXZWJTZXR0aW5ncyopID0gMDsKK307CisKKy8qIQorICAgIEBjbGFz
cyBXZWJTZXR0aW5ncworKi8KK2NsYXNzIEJMQUNLQkVSUllfRVhQT1JUIFdlYlNldHRpbmdzIHsK
K3ByaXZhdGU6CisgICAgV2ViU2V0dGluZ3NQcml2YXRlKiBtX3ByaXZhdGU7CisgICAgV2ViU2V0
dGluZ3MoKTsKKyAgICBXZWJTZXR0aW5ncyhjb25zdCBXZWJTZXR0aW5ncyYpOworcHVibGljOgor
ICAgIHN0YXRpYyBXZWJTZXR0aW5ncyogY3JlYXRlRnJvbVN0YW5kYXJkU2V0dGluZ3MoV2ViU2V0
dGluZ3NEZWxlZ2F0ZSogPSAwKTsKKyAgICB+V2ViU2V0dGluZ3MoKTsKKworICAgIHN0YXRpYyBX
ZWJTZXR0aW5ncyogc3RhbmRhcmRTZXR0aW5ncygpOworCisgICAgdm9pZCBzZXREZWxlZ2F0ZShX
ZWJTZXR0aW5nc0RlbGVnYXRlKik7CisgICAgV2ViU2V0dGluZ3NEZWxlZ2F0ZSogZGVsZWdhdGUo
KTsKKworICAgIHN0YXRpYyB2b2lkIGFkZFN1cHBvcnRlZE9iamVjdFBsdWdpbk1JTUVUeXBlKGNv
bnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZE9iamVjdE1JTUVUeXBlKGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFdlYlN0cmluZyBnZXROb3Jt
YWxpemVkTUlNRVR5cGUoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBib29sIHhzc0F1ZGl0b3JF
bmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKwor
ICAgIGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRM
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7CisKKyAgICBib29sIHNob3VsZERyYXdCb3Jk
ZXJXaGlsZUxvYWRpbmdJbWFnZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFNob3VsZERyYXdCb3Jk
ZXJXaGlsZUxvYWRpbmdJbWFnZXMoYm9vbCk7CisKKyAgICBib29sIGlzSmF2YVNjcmlwdEVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEphdmFTY3JpcHRFbmFibGVkKGJvb2wpOworCisgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisKKyAgICBpbnQgZGVmYXVsdEZpeGVkRm9udFNpemUo
KSBjb25zdDsKKyAgICB2b2lkIHNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCk7CisKKyAgICBp
bnQgZGVmYXVsdEZvbnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZWZhdWx0Rm9udFNpemUo
aW50KTsKKworICAgIGludCBtaW5pbXVtRm9udFNpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1p
bmltdW1Gb250U2l6ZShpbnQpOworCisgICAgV2ViU3RyaW5nIHNlcmlmRm9udEZhbWlseSgpIGNv
bnN0OworICAgIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IGNoYXIqKTsKKyAgICBXZWJT
dHJpbmcgZml4ZWRGb250RmFtaWx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRGaXhlZEZvbnRGYW1p
bHkoY29uc3QgY2hhciopOworICAgIFdlYlN0cmluZyBzYW5zU2VyaWZGb250RmFtaWx5KCkgY29u
c3Q7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IGNoYXIqKTsKKyAgICBX
ZWJTdHJpbmcgc3RhbmRhcmRGb250RmFtaWx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY29uc3QgY2hhciopOworCisgICAgdm9pZCBzZXREb3dubG9hZGFibGVCaW5h
cnlGb250c0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBkb3dubG9hZGFibGVCaW5hcnlGb250c0Vu
YWJsZWQoKSBjb25zdDsKKworICAgIFdlYlN0cmluZyB1c2VyQWdlbnRTdHJpbmcoKSBjb25zdDsK
KyAgICB2b2lkIHNldFVzZXJBZ2VudFN0cmluZyhjb25zdCBjaGFyKik7CisKKyAgICBXZWJTdHJp
bmcgZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNoYXIqKTsKKworICAgIGJvb2wgaXNab29tVG9GaXRPbkxv
YWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFpvb21Ub0ZpdE9uTG9hZChib29sKTsKKworICAgIGVu
dW0gVGV4dFJlZmxvd01vZGUgeyBUZXh0UmVmbG93RGlzYWJsZWQsIFRleHRSZWZsb3dFbmFibGVk
LCBUZXh0UmVmbG93RW5hYmxlZE9ubHlGb3JCbG9ja1pvb20gfTsKKyAgICBUZXh0UmVmbG93TW9k
ZSB0ZXh0UmVmbG93TW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dFJlZmxvd01vZGUoVGV4
dFJlZmxvd01vZGUpOworCisgICAgYm9vbCBpc1Njcm9sbGJhcnNFbmFibGVkKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRTY3JvbGxiYXJzRW5hYmxlZChib29sKTsKKworICAgIC8vIEZJWE1FOiBDb25z
aWRlciByZW5hbWluZyB0aGlzIG1ldGhvZCB1cHN0cmVhbSwgd2hlcmUgaXQgaXMgY2FsbGVkIGph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkuCisgICAgYm9vbCBjYW5KYXZhU2Ny
aXB0T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRKYXZhU2Ny
aXB0T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wpOworCisgICAgYm9vbCBhcmVQbHVnaW5z
RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCk7CisKKyAg
ICBib29sIGlzR2VvbG9jYXRpb25FbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRHZW9sb2Nh
dGlvbkVuYWJsZWQoYm9vbCk7CisKKyAgICAvLyBDb250ZXh0IEluZm8uCisgICAgYm9vbCBkb2Vz
R2V0Rm9jdXNOb2RlQ29udGV4dCgpIGNvbnN0OworICAgIHZvaWQgc2V0R2V0Rm9jdXNOb2RlQ29u
dGV4dChib29sKTsKKworICAgIFdlYlN0cmluZyB1c2VyU3R5bGVTaGVldFN0cmluZygpIGNvbnN0
OworICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRTdHJpbmcoY29uc3QgY2hhciopOworCisgICAg
V2ViU3RyaW5nIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKKyAgICB2b2lkIHNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oY29uc3QgY2hhciopOworCisgICAgLy8gRXh0ZXJuYWwgbGluayBoYW5k
bGVycy4KKyAgICBib29sIGFyZUxpbmtzSGFuZGxlZEV4dGVybmFsbHkoKSBjb25zdDsKKyAgICB2
b2lkIHNldEFyZUxpbmtzSGFuZGxlZEV4dGVybmFsbHkoYm9vbCk7CisKKyAgICAvLyBCcm93c2Vy
RmllbGQyIHNldHRpbmdzLgorICAgIHZvaWQgc2V0QWxsb3dDcm9zc1NpdGVSZXF1ZXN0cyhib29s
KTsKKyAgICBib29sIGFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMoKSBjb25zdDsKKyAgICBib29sIGlz
VXNlclNjYWxhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2VyU2NhbGFibGUoYm9vbCk7Cisg
ICAgaW50IHZpZXdwb3J0V2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFZpZXdwb3J0V2lkdGgo
aW50KTsKKyAgICBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJbml0
aWFsU2NhbGUoZG91YmxlKTsKKworICAgIGludCBmaXJzdFNjaGVkdWxlZExheW91dERlbGF5KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRGaXJzdFNjaGVkdWxlZExheW91dERlbGF5KGludCk7CisKKyAg
ICAvLyBXaGV0aGVyIHRvIGluY2x1ZGUgcGF0dGVybjogaW4gdGhlIGxpc3Qgb2Ygc3RyaW5nIHBh
dHRlcm5zLgorICAgIGJvb2wgc2hvdWxkSGFuZGxlUGF0dGVyblVybHMoKSBjb25zdDsKKyAgICB2
b2lkIHNldFNob3VsZEhhbmRsZVBhdHRlcm5VcmxzKGJvb2wpOworCisgICAgYm9vbCBpc0Nvb2tp
ZUNhY2hlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SXNDb29raWVDYWNoZUVuYWJsZWQo
Ym9vbCk7CisKKyAgICBib29sIGFyZUNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBcmVDb29raWVzRW5hYmxlZChib29sKTsKKworICAgIC8vIFdlYiBzdG9yYWdlIHNldHRpbmdz
LgorICAgIGJvb2wgaXNMb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJ
c0xvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCk7CisKKyAgICBib29sIGlzRGF0YWJhc2VzRW5hYmxl
ZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SXNEYXRhYmFzZXNFbmFibGVkKGJvb2wpOworCisgICAg
Ym9vbCBpc0FwcENhY2hlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SXNBcHBDYWNoZUVu
YWJsZWQoYm9vbCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbG9jYWxTdG9yYWdlUXVvdGEo
KSBjb25zdDsKKyAgICB2b2lkIHNldExvY2FsU3RvcmFnZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9u
Zyk7CisKKyAgICAvLyBQYWdlIGNhY2hlLgorICAgIHZvaWQgc2V0TWF4aW11bVBhZ2VzSW5DYWNo
ZShpbnQpOworICAgIGludCBtYXhpbXVtUGFnZXNJbkNhY2hlKCkgY29uc3Q7CisKKyAgICBXZWJT
dHJpbmcgbG9jYWxTdG9yYWdlUGF0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdl
UGF0aChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdlYlN0cmluZyBkYXRhYmFzZVBhdGgoKSBj
b25zdDsKKyAgICB2b2lkIHNldERhdGFiYXNlUGF0aChjb25zdCBXZWJTdHJpbmcmKTsKKworICAg
IFdlYlN0cmluZyBhcHBDYWNoZVBhdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldEFwcENhY2hlUGF0
aChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdlYlN0cmluZyBwYWdlR3JvdXBOYW1lKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRQYWdlR3JvdXBOYW1lKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIGFuIGVtYWlsIG1vZGUuIEluc3RlYWQsIHdlIHNo
b3VsZCBleHBvc2UgYWxsIGVtYWlsLXJlbGF0ZWQgc2V0dGluZ3MKKyAgICAvLyBzbyB0aGF0IHRo
ZSBlbWFpbCBjbGllbnQgY2FuIHRvZ2dsZSB0aGVtIGRpcmVjdGx5LgorICAgIGJvb2wgaXNFbWFp
bE1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEVtYWlsTW9kZShib29sIGVuYWJsZSk7CisKKyAg
ICBib29sIHNob3VsZFJlbmRlckFuaW1hdGlvbnNPblNjcm9sbE9yWm9vbSgpIGNvbnN0OworICAg
IHZvaWQgc2V0U2hvdWxkUmVuZGVyQW5pbWF0aW9uc09uU2Nyb2xsT3Jab29tKGJvb2wgZW5hYmxl
KTsKKworICAgIHVuc2lnbmVkIG92ZXJab29tQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldE92
ZXJab29tQ29sb3IodW5zaWduZWQpOworCisgICAgdW5zaWduZWQgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQpOworCisgICAgYm9v
bCBpc1dyaXRpbmdEaXJlY3Rpb25SVEwoKSBjb25zdDsKKyAgICB2b2lkIHNldFdyaXRpbmdEaXJl
Y3Rpb25SVEwoYm9vbCk7CisKKyAgICBib29sIHVzZVdlYktpdENhY2hlKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRVc2VXZWJLaXRDYWNoZShib29sKTsKKworICAgIGJvb2wgaXNGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJv
b2wpOworCisgICAgYm9vbCBpc0RpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCgpIGNvbnN0
OworICAgIHZvaWQgc2V0RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkKGJvb2wpOworCisg
ICAgdW5zaWduZWQgbWF4UGx1Z2luSW5zdGFuY2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNYXhQ
bHVnaW5JbnN0YW5jZXModW5zaWduZWQgbnVtKTsKKworICAgIGJvb2wgYXJlV2ViU29ja2V0c0Vu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFdlYlNvY2tldHNFbmFibGVkKGJvb2wpOworCisg
ICAgYm9vbCBpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpOworfTsKKworLyohCisgICAgQGNsYXNzIFdl
YlNldHRpbmdzVHJhbnNhY3Rpb24KKyAgICBEZWZpbmVzIGEgc2NvcGUgZ3VhcmQgdGhhdCBzdXBw
cmVzc2VzIGRpZENoYW5nZVNldHRpbmdzIG1lc3NhZ2VzIHdpdGhpbiBpdHMgc2NvcGUuCisgICAg
T24gZGVzdHJ1Y3Rpb24gdGhlIGd1YXJkZWQgV2ViU2V0dGluZ3Mgb2JqZWN0IHdpbGwgZGlzcGF0
Y2ggZXhhY3RseSBvbmUgZGlkQ2hhbmdlU2V0dGluZ3MgbWVzc2FnZS4KKyovCitjbGFzcyBCTEFD
S0JFUlJZX0VYUE9SVCBXZWJTZXR0aW5nc1RyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJT
ZXR0aW5nc1RyYW5zYWN0aW9uKFdlYlNldHRpbmdzKiBzZXR0aW5ncykKKyAgICAgICAgOiBtX3Nl
dHRpbmdzKHNldHRpbmdzKQorICAgICAgICAsIG1fc2F2ZWREZWxlZ2F0ZSgwKQorICAgIHsKKyAg
ICAgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zYXZl
ZERlbGVnYXRlID0gc2V0dGluZ3MtPmRlbGVnYXRlKCk7CisgICAgICAgIHNldHRpbmdzLT5zZXRE
ZWxlZ2F0ZSgwKTsKKyAgICB9CisKKyAgICB+V2ViU2V0dGluZ3NUcmFuc2FjdGlvbigpCisgICAg
eworICAgICAgICBpZiAoIW1fc2V0dGluZ3MgfHwgIW1fc2F2ZWREZWxlZ2F0ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9zZXR0aW5ncy0+c2V0RGVsZWdhdGUobV9zYXZlZERlbGVn
YXRlKTsKKyAgICAgICAgbV9zYXZlZERlbGVnYXRlLT5kaWRDaGFuZ2VTZXR0aW5ncyhtX3NldHRp
bmdzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViU2V0dGluZ3NUcmFuc2FjdGlvbihjb25z
dCBXZWJTZXR0aW5nc1RyYW5zYWN0aW9uJik7CisgICAgV2ViU2V0dGluZ3NUcmFuc2FjdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IFdlYlNldHRpbmdzVHJhbnNhY3Rpb24mKTsKKworICAgIFdlYlNldHRp
bmdzKiBtX3NldHRpbmdzOworICAgIFdlYlNldHRpbmdzRGVsZWdhdGUqIG1fc2F2ZWREZWxlZ2F0
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJy
eQorCisjZW5kaWYgLy8gV2ViU2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5nc19wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlNldHRpbmdzX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODg4YTQ0YzA0NWI0ZTViNzM0N2ZhZTM1
YTEyNmQ0ZTI1NmQwNGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJTZXR0aW5nc19wLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJTZXR0aW5n
c19wX2gKKyNkZWZpbmUgV2ViU2V0dGluZ3NfcF9oCisKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5o
IgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisKKyNkZWZpbmUgc3ludGhlc2l6ZUFjY2Vzc29yc0ZvclByaW1pdGl2ZVZhbHVlUHJl
Zml4QW5kVHlwZShwcmVmaXgsIHR5cGUpIFwKKyAgICAgdm9pZCBzZXQjI3ByZWZpeChjb25zdCBX
VEY6OlN0cmluZyYga2V5LCB0eXBlIG5ld1ZhbHVlKSB7IFwKKyAgICAgICAgIEFTU0VSVChpbXBs
KTsgXAorICAgICAgICAgaWYgKGdldCMjcHJlZml4KGtleSkgPT0gbmV3VmFsdWUpIFwKKyAgICAg
ICAgICAgIHJldHVybjsgXAorICAgICAgICAgaWYgKGNvcHlPbldyaXRlKSB7IFwKKyAgICAgICAg
ICAgIGNvcHlPbldyaXRlID0gZmFsc2U7IFwKKyAgICAgICAgICAgIGltcGwgPSBuZXcgV2ViU2V0
dGluZ3NQcml2YXRlSW1wbCgqaW1wbCk7IFwKKyAgICAgICAgIH0gXAorICAgICAgICAgUHJpbWl0
aXZlVmFsdWUgcHJpbWl0aXZlVmFsdWU7IFwKKyAgICAgICAgIHByaW1pdGl2ZVZhbHVlLnByZWZp
eCMjVmFsdWUgPSBuZXdWYWx1ZTsgXAorICAgICAgICAgaW1wbC0+cHJpbWl0aXZlVmFsdWVzLnNl
dChrZXksIHByaW1pdGl2ZVZhbHVlKTsgXAorICAgICAgICAgaWYgKGRlbGVnYXRlKSBcCisgICAg
ICAgICAgICBkZWxlZ2F0ZS0+ZGlkQ2hhbmdlU2V0dGluZ3Moc2VuZGVyKTsgXAorICAgICB9IFwK
KyAgICAgdHlwZSBnZXQjI3ByZWZpeChjb25zdCBXVEY6OlN0cmluZyYga2V5KSBjb25zdCB7IFwK
KyAgICAgICAgICBBU1NFUlQoaW1wbCk7IFwKKyAgICAgICAgICBpZiAoIWltcGwtPnByaW1pdGl2
ZVZhbHVlcy5jb250YWlucyhrZXkpKSBcCisgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx0eXBlPihmYWxzZSk7IFwKKyAgICAgICAgICByZXR1cm4gaW1wbC0+cHJpbWl0aXZlVmFsdWVz
LmdldChrZXkpLnByZWZpeCMjVmFsdWU7IFwKKyAgICAgIH0KKworbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdHJ1Y3QgV2ViU2V0dGluZ3NQcml2YXRlIHsKKyAgICB1bmlvbiBQcmltaXRpdmVW
YWx1ZSB7CisgICAgICAgIFdlYlNldHRpbmdzOjpUZXh0UmVmbG93TW9kZSBUZXh0UmVmbG93TW9k
ZVZhbHVlOworICAgICAgICBib29sIEJvb2xlYW5WYWx1ZTsKKyAgICAgICAgZG91YmxlIERvdWJs
ZVZhbHVlOworICAgICAgICBpbnQgSW50ZWdlclZhbHVlOworICAgICAgICB1bnNpZ25lZCBVbnNp
Z25lZFZhbHVlOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgVW5zaWduZWRMb25nTG9uZ1Zh
bHVlOworICAgIH07CisKKyAgICBzdHJ1Y3QgV2ViU2V0dGluZ3NQcml2YXRlSW1wbCB7CisgICAg
ICAgIFdURjo6SGFzaE1hcDxXVEY6OlN0cmluZywgUHJpbWl0aXZlVmFsdWU+IHByaW1pdGl2ZVZh
bHVlczsKKyAgICAgICAgV1RGOjpIYXNoTWFwPFdURjo6U3RyaW5nLCBXVEY6OlN0cmluZz4gc3Ry
aW5nVmFsdWVzOworICAgIH07CisKKyAgICBXZWJTZXR0aW5nc1ByaXZhdGVJbXBsKiBpbXBsOwor
ICAgIFdlYlNldHRpbmdzRGVsZWdhdGUqIGRlbGVnYXRlOworICAgIFdlYlNldHRpbmdzKiBzZW5k
ZXI7CisgICAgYm9vbCBjb3B5T25Xcml0ZTsKKworICAgIFdlYlNldHRpbmdzUHJpdmF0ZSgpOwor
CisgICAgc3ludGhlc2l6ZUFjY2Vzc29yc0ZvclByaW1pdGl2ZVZhbHVlUHJlZml4QW5kVHlwZShU
ZXh0UmVmbG93TW9kZSwgV2ViU2V0dGluZ3M6OlRleHRSZWZsb3dNb2RlKTsKKworICAgIHN5bnRo
ZXNpemVBY2Nlc3NvcnNGb3JQcmltaXRpdmVWYWx1ZVByZWZpeEFuZFR5cGUoQm9vbGVhbiwgYm9v
bCk7CisKKyAgICBzeW50aGVzaXplQWNjZXNzb3JzRm9yUHJpbWl0aXZlVmFsdWVQcmVmaXhBbmRU
eXBlKERvdWJsZSwgZG91YmxlKTsKKworICAgIHN5bnRoZXNpemVBY2Nlc3NvcnNGb3JQcmltaXRp
dmVWYWx1ZVByZWZpeEFuZFR5cGUoSW50ZWdlciwgaW50KTsKKworICAgIHN5bnRoZXNpemVBY2Nl
c3NvcnNGb3JQcmltaXRpdmVWYWx1ZVByZWZpeEFuZFR5cGUoVW5zaWduZWQsIHVuc2lnbmVkKTsK
KworICAgIHN5bnRoZXNpemVBY2Nlc3NvcnNGb3JQcmltaXRpdmVWYWx1ZVByZWZpeEFuZFR5cGUo
VW5zaWduZWRMb25nTG9uZywgdW5zaWduZWQgbG9uZyBsb25nKTsKKworICAgIFdURjo6U3RyaW5n
IGdldFN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKGltcGwpOworICAgICAgICBpZiAoIWltcGwtPnN0cmluZ1ZhbHVlcy5jb250YWlucyhr
ZXkpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBp
bXBsLT5zdHJpbmdWYWx1ZXMuZ2V0KGtleSk7CisgICAgfQorCisgICAgdm9pZCBzZXRTdHJpbmco
Y29uc3QgV1RGOjpTdHJpbmcmIGtleSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld1ZhbHVlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGltcGwpOworICAgICAgICBpZiAoZ2V0U3RyaW5nKGtleSkgPT0g
bmV3VmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjb3B5T25Xcml0ZSkg
eworICAgICAgICAgICAgY29weU9uV3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGltcGwgPSBu
ZXcgV2ViU2V0dGluZ3NQcml2YXRlSW1wbCgqaW1wbCk7CisgICAgICAgIH0KKyAgICAgICAgaW1w
bC0+c3RyaW5nVmFsdWVzLnNldChrZXksIG5ld1ZhbHVlKTsKKyAgICAgICAgaWYgKGRlbGVnYXRl
KQorICAgICAgICAgICAgZGVsZWdhdGUtPmRpZENoYW5nZVNldHRpbmdzKHNlbmRlcik7CisgICAg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5
CisKKyNlbmRpZiAvLyBXZWJTZXR0aW5nc19wX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>