<?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>75790</bug_id>
          
          <creation_ts>2012-01-07 23:21:34 -0800</creation_ts>
          <short_desc>PDFPlugins don&apos;t load when plugins are disabled, but they should</short_desc>
          <delta_ts>2013-05-16 22:03:44 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>115487</dependson>
    
    <dependson>116289</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Petersen">c.petersen87</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531723</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2012-01-07 23:21:34 -0800</bug_when>
    <thetext>Inline PDF doesn&apos;t load when plugins are disabled, need better error message. Maybe by design but inline PDF don&apos;t load when plugins are disabled. Right now you see a message Loading... ( like you do when a MP3 as a &lt;audio&gt; element ). However, this message isn&apos;t very information.

1) Launch Webkit NB r104385 and disable Plugins in Safari 5.1.1
2) Go to http://www.cs.tut.fi/~jkorpela/html/iframe-pdf.html
3) Notice &quot;Loading..&quot; message appears in both iframes and PDF fails to appear ( No message why )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531731</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-08 00:02:26 -0800</bug_when>
    <thetext>Looks like a PDF iframe gets (unsuccessfully) handled as a media document when plug-ins are disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779734</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-29 18:43:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/11650197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779735</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-29 18:46:26 -0800</bug_when>
    <thetext>The symptom has changed a bit, now you get garbage (raw PDF data) in the frame instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883404</commentid>
    <comment_count>4</comment_count>
      <attachid>200208</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 02:25:21 -0700</bug_when>
    <thetext>Created attachment 200208
preliminary patch

Rather surprisingly large patch that&apos;s not ready for review (no change log, for starters), but if someone takes offense with the way I&apos;m doing this, feel free to let me know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883406</commentid>
    <comment_count>5</comment_count>
      <attachid>200208</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-01 02:30:40 -0700</bug_when>
    <thetext>Comment on attachment 200208
preliminary patch

Attachment 200208 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/356004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883407</commentid>
    <comment_count>6</comment_count>
      <attachid>200208</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-01 02:31:24 -0700</bug_when>
    <thetext>Comment on attachment 200208
preliminary patch

Attachment 200208 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/301065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883409</commentid>
    <comment_count>7</comment_count>
      <attachid>200208</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-01 02:58:53 -0700</bug_when>
    <thetext>Comment on attachment 200208
preliminary patch

Attachment 200208 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/271029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883415</commentid>
    <comment_count>8</comment_count>
      <attachid>200211</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 03:43:11 -0700</bug_when>
    <thetext>Created attachment 200211
changelogs

I still think it should be possible to do this better without complicating all of the WebKit* side call sites, by making PluginData and the plugin cache invalidate when the plugin pref is flipped, and then just depending on PluginData not including any non-app-plug-ins if the pref is off. However, I&apos;m not sure that&apos;ll work since it looks like the FrameLoaderClient can override allowPlugins for arbitrary reasons, not just the state of the setting... so I&apos;m not doing that for now. Let&apos;s see what others think.

Not sure I&apos;m totally happy with stuff yet, but this could use a round of scathing review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883416</commentid>
    <comment_count>9</comment_count>
      <attachid>200211</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 03:45:22 -0700</bug_when>
    <thetext>Comment on attachment 200211
changelogs

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:939
&gt; +    if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(mimeType) &amp;&amp; !WebContext::omitPDFSupport())

FWIW I think it&apos;s OK that we dropped the case-folding here, as MIMETypeRegistry::canShowMIMEType above is also case-sensitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883417</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 03:48:06 -0700</bug_when>
    <thetext>Probably this should be split into more patches:

1) MIMETypeRegistry changes and adoption in WK2.
2) PluginData isApplicationPlugin field and adoption in plugin enumerators.
3) PluginData always being created and findPlugin/createPlugin/etc. getting application-plug-in filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884437</commentid>
    <comment_count>11</comment_count>
      <attachid>200507</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-03 16:38:44 -0700</bug_when>
    <thetext>Created attachment 200507
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890010</commentid>
    <comment_count>12</comment_count>
      <attachid>200507</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-16 14:50:01 -0700</bug_when>
    <thetext>Comment on attachment 200507
patch

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

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp:125
&gt; +PluginModuleInfo PluginInfoStore::findPluginForMIMEType(const String&amp; mimeType, bool onlyApplicationPlugins) const

Couldn’t this take a AllowedPluginTypes enum instead of a boolean?

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp:145
&gt; +PluginModuleInfo PluginInfoStore::findPluginForExtension(const String&amp; extension, String&amp; mimeType, bool onlyApplicationPlugins) const

Ditto.

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp:208
&gt; +PluginModuleInfo PluginInfoStore::findPlugin(String&amp; mimeType, const KURL&amp; url, bool onlyApplicationPlugins)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890088</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-16 17:45:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/150227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890206</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-05-16 22:03:44 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; http://trac.webkit.org/changeset/150227

FYI: It caused a serious regression - https://bugs.webkit.org/show_bug.cgi?id=116289</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200208</attachid>
            <date>2013-05-01 02:25:21 -0700</date>
            <delta_ts>2013-05-01 03:43:11 -0700</delta_ts>
            <desc>preliminary patch</desc>
            <filename>pdf-no-plugin.diff</filename>
            <type>text/plain</type>
            <size>35689</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMTlhM2ZjMC4uZWUxOWViZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTI5NSw2ICsyOTUsNyBAQCBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTZy
ZXNwb25zZVJlY2VpdmVkRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTZSZXNvdQogX19aTjdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJlc291cmNlRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dlYkNvcmUxNEZvcm1Db250cm9sbGVy
MjJnZXRSZWZlcmVuY2VkRmlsZVBhdGhzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVO
UzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIzMmRp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUUKK19fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93UGx1Z2luc0VOU18yOFJl
YXNvbkZvckNhbGxpbmdBbGxvd1BsdWdpbnNFCiBfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFibGVk
RVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KIF9fWk43V2ViQ29y
ZTE0c2VsZWN0aW9uSW1hZ2VFUE5TXzVGcmFtZUViCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRy
b2xsZXIxN2phdmFTY3JpcHRDb250ZXh0RXYKQEAgLTUxNyw5ICs1MTgsMTEgQEAgX19aTjdXZWJD
b3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MTVjYW5TaG93TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyMGlzSmF2YUFwcGxldE1JTUVUeXBlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjNnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3Ry
eTI0aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3Jl
MTZNSU1FVHlwZVJlZ2lzdHJ5MjVpc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjZnZXRTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyN2dldFVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyN2lzU3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2TUlNRVR5
cGVSZWdpc3RyeTI4Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUx
Nk1JTUVUeXBlUmVnaXN0cnkyOWdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzRXYKIF9fWk43
V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTMyaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05T
XzE1UmVzb3VyY2VSZXF1ZXN0RQpAQCAtMTIyNiw3ICsxMjI5LDcgQEAgX19aTks3V2ViQ29yZTEw
Q3JlZGVudGlhbDExcGVyc2lzdGVuY2VFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDR1c2Vy
RXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlMTBD
cmVkZW50aWFsOHBhc3N3b3JkRXYKLV9fWk5LN1dlYkNvcmUxMFBsdWdpbkRhdGExNnN1cHBvcnRz
TWltZVR5cGVFUktOM1dURjZTdHJpbmdFCitfX1pOSzdXZWJDb3JlMTBQbHVnaW5EYXRhMTZzdXBw
b3J0c01pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRU5TMF8xOEFsbG93ZWRQbHVnaW5UeXBlc0UKIF9f
Wk5LN1dlYkNvcmUxMFJlbmRlclRleHQxNmxpbmVzQm91bmRpbmdCb3hFdgogX19aTks3V2ViQ29y
ZTEwUmVuZGVyVGV4dDlmaXJzdFJ1blhFdgogX19aTks3V2ViQ29yZTEwUmVuZGVyVGV4dDlmaXJz
dFJ1bllFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggNTM3
OThmMS4uMzFiZDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
CkBAIC0zOTcsMTIgKzM5NywxNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZQogI2VuZGlmCiAK
ICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gMDsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnBhZ2UoKSAmJiBmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lu
cyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQ
bHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRp
b25QbHVnaW5zOworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgIGlm
IChmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91
dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICAgICAgYWxsb3dlZFBsdWdpblR5cGVzID0g
UGx1Z2luRGF0YTo6QWxsUGx1Z2luczsKKwogICAgICAgICBwbHVnaW5EYXRhID0gZnJhbWUtPnBh
Z2UoKS0+cGx1Z2luRGF0YSgpOworICAgIH0KIAogICAgIC8vIFBERiBpcyBvbmUgaW1hZ2UgdHlw
ZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1aWx0LWluIHN1cHBvcnQuCiAgICAg
Ly8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ugb3ZlciBhbGwgaW1hZ2UgdHlwZXMs
IG9idmlvdXNseS4KLSAgICBpZiAoKHR5cGUgPT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgdHlwZSA9
PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5
cGUodHlwZSkpCisgICAgaWYgKChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1J
TUVUeXBlKHR5cGUpKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5
cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkKICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAgICAgaWYgKEltYWdlOjpzdXBwb3J0c1R5cGUodHlw
ZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CkBA
IC00MTgsNyArNDIzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUKICAgICAvLyBFdmVyeXRo
aW5nIGVsc2UgZXhjZXB0IHRleHQvcGxhaW4gY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGx1Z2lucy4g
SW4gcGFydGljdWxhciwgQWRvYmUgU1ZHIFZpZXdlciBzaG91bGQgYmUgdXNlZCBmb3IgU1ZHLCBp
ZiBpbnN0YWxsZWQuCiAgICAgLy8gRGlzYWxsb3dpbmcgcGx1Zy1pbnMgdG8gdXNlIHRleHQvcGxh
aW4gcHJldmVudHMgcGx1Zy1pbnMgZnJvbSBoaWphY2tpbmcgYSBmdW5kYW1lbnRhbCB0eXBlIHRo
YXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlLAogICAgIC8vIGFuZCBhbHNvIHNl
cnZlcyBhcyBhbiBvcHRpbWl6YXRpb24gdG8gcHJldmVudCBsb2FkaW5nIHRoZSBwbHVnLWluIGRh
dGFiYXNlIGluIHRoZSBjb21tb24gY2FzZS4KLSAgICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIg
JiYgcGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUpKSAKKyAg
ICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIgJiYgcGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5z
dXBwb3J0c01pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykpCiAgICAgICAgIHJldHVy
biBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogICAgIGlmIChpc1RleHRNSU1F
VHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1
cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAppbmRleCAxOGRkM2ZmLi44
Y2ZjOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7Ci0gICAg
aWYgKCFzZXR0aW5ncyB8fCAhZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxv
d1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICBpZiAoIXNldHRpbmdz
KQogICAgICAgICByZXR1cm47CiAKICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IDIzYTA4MmUuLjE1MGVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtNTA2LDggKzUwNiw2IEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQp
CiAKIFBsdWdpbkRhdGEqIFBhZ2U6OnBsdWdpbkRhdGEoKSBjb25zdAogewotICAgIGlmICghbWFp
bkZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJv
dXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX3Bs
dWdpbkRhdGEpCiAgICAgICAgIG1fcGx1Z2luRGF0YSA9IFBsdWdpbkRhdGE6OmNyZWF0ZSh0aGlz
KTsKICAgICByZXR1cm4gbV9wbHVnaW5EYXRhLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAxNmQ0N2VhLi4yYTQ0NTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTg4LDYgKzE4
OCw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9y
RW5jb2Rpbmc7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKK3N0
YXRpYyBIYXNoU2V0PFN0cmluZz4qIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXM7CiBzdGF0aWMg
SGFzaFNldDxTdHJpbmc+KiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7CiAKIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+KiwgQ2FzZUZvbGRpbmdIYXNoPiBNZWRpYU1JTUVU
eXBlTWFwOwpAQCAtMzUxLDYgKzM1MiwxNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpCiAgICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVzLT5hZGQodHlwZXNbaV0pOwogfQogCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUERGQW5kUG9z
dFNjcmlwdE1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVzW10gPSB7
CisgICAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAorICAgICAgICAidGV4dC9wZGYiLAorICAgICAg
ICAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsCisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCisgICAgICAgIHBkZkFuZFBvc3RT
Y3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7Cit9CisKIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHR5cGVzW10gPSB7CkBAIC00ODgsNiArNTAwLDkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1J
TUVUeXBlUmVnaXN0cnkoKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hT
ZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKIAor
ICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmc+OworICAg
IGluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7CisKICAgICB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmc+OwogICAgIGluaXRpYWxpemVVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIH0KQEAgLTYwMiw2ICs2MTcsMTUgQEAgYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LWphdmEtdm0i
LCBmYWxzZSk7CiB9CiAKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBkZkFuZFBvc3RTY3JpcHRN
SU1FVHlwZXMpCisgICAgICAgIGluaXRpYWxpemVNSU1FVHlwZVJlZ2lzdHJ5KCk7CisgICAgcmV0
dXJuIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKK30KKwog
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAoaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3VwcG9ydGVkTWVkaWFN
SU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDgsNiArNjcyLDEzIEBAIEhhc2hTZXQ8U3RyaW5nPiYg
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKQogICAgIHJldHVy
biAqc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CiB9CiAKK0hhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpCit7CisgICAgaWYgKCFw
ZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKQorICAgICAgICBpbml0aWFsaXplTUlNRVR5cGVSZWdp
c3RyeSgpOworICAgIHJldHVybiAqcGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBlczsKK30KKwogSGFz
aFNldDxTdHJpbmc+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMoKQogewogICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IGNmOTc2ZDEuLmVjYzc2NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTgzLDYgKzgz
LDkgQEAgcHVibGljOgogICAgIC8vIGJyb3dzZXIgKGUuZy4gYSBRdCBQbHVnaW4pLgogICAgIHN0
YXRpYyBib29sIGlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIG1pbWUgdHlwZSBpcyBvbmUgb2YgdGhl
IGNvbW1vbiBQREYvUFMgdHlwZXMuCisgICAgc3RhdGljIGJvb2wgaXNQREZPclBvc3RTY3JpcHRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiBhIG1pbWUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgc2hvd24gaW5zaWRlIGEgcGFnZS4K
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSgp
LCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoKSwgaXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBl
KCkgcmV0dXJucyB0cnVlCiAgICAgLy8gb3IgaWYgZ2l2ZW4gbWltZSB0eXBlIGJlZ2lucyB3aXRo
ICJ0ZXh0LyIgYW5kIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoKSByZXR1cm5zIGZhbHNlLgpA
QCAtOTMsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZygpOwogICAgIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4mIGdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhh
c2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKKyAgICBzdGF0aWMg
SGFzaFNldDxTdHJpbmc+JiBnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7CiAgICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CiAKICAg
ICBzdGF0aWMgU3RyaW5nIGdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NSU1FVHlwZVJlZ2lzdHJ5TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0K
aW5kZXggMzc5MmI1YS4uM2M2MThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KQEAgLTU5LDggKzU5LDE1IEBAIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHdrR2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUodHlwZSk7CiB9CiAKLWJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdp
bk1JTUVUeXBlKGNvbnN0IFN0cmluZyYpCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGlj
YXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKQogeworI2lmIEVOQUJM
RShQREZLSVRfUExVR0lOKQorICAgIC8vIEZJWE1FOiBUaGlzIHdvdWxkIGlkZWFsbHkgdGVzdCBp
ZiB3ZSdyZSB1c2luZyBXZWJLaXQyLCB0aGUgcHJlZmVyZW5jZSBpcyBzZXQsCisgICAgLy8gYW5k
IFBERkxheWVyQ29udHJvbGxlciBleGlzdHMsIGJ1dCB3ZSBvbmx5IGtub3cgdGhhdCBpbiBXZWJL
aXQyIGF0IHRoZSBtb21lbnQuCisgICAgaWYgKGlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoTUlN
RVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcAppbmRleCBjY2RmMTBkLi5m
YzcxNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKQEAgLTQ0LDExICs0
NCwxMiBAQCBQbHVnaW5EYXRhOjpQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgfQog
fQogCi1ib29sIFBsdWdpbkRhdGE6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3QKK2Jvb2wgUGx1Z2luRGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBBbGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVz
KSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsg
KytpKQotICAgICAgICBpZiAobV9taW1lc1tpXS50eXBlID09IG1pbWVUeXBlKQorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICht
X21pbWVzW2ldLnR5cGUgPT0gbWltZVR5cGUgJiYgKGFsbG93ZWRQbHVnaW5UeXBlcyA9PSBBbGxQ
bHVnaW5zIHx8IG1fcGx1Z2luc1ttX21pbWVQbHVnaW5JbmRpY2VzW2ldXS5pc0FwcGxpY2F0aW9u
UGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggNjRmYTRiNy4uZmVj
N2FjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
c3RydWN0IFBsdWdpbkluZm8gewogICAgIFN0cmluZyBmaWxlOwogICAgIFN0cmluZyBkZXNjOwog
ICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKKyAgICBib29sIGlzQXBwbGljYXRpb25Q
bHVnaW47CiB9OwogCiAvLyBGSVhNRTogbWVyZ2Ugd2l0aCBQbHVnaW5EYXRhYmFzZSBpbiB0aGUg
ZnV0dXJlCkBAIC01NSw4ICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFBsdWdp
bkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CiAgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7IH0K
ICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbWltZVBsdWdpbkluZGljZXMoKSBjb25zdCB7IHJl
dHVybiBtX21pbWVQbHVnaW5JbmRpY2VzOyB9Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0c01pbWVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OworCisgICAgZW51bSBBbGxvd2VkUGx1
Z2luVHlwZXMgeworICAgICAgICBBbGxQbHVnaW5zLAorICAgICAgICBPbmx5QXBwbGljYXRpb25Q
bHVnaW5zCisgICAgfTsKKworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBBbGxvd2VkUGx1Z2luVHlwZXMpIGNvbnN0OwogICAgIFN0cmluZyBw
bHVnaW5OYW1lRm9yTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAg
U3RyaW5nIHBsdWdpbkZpbGVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2lu
UGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2th
Z2UubW0KaW5kZXggZWIwNWYyNy4uMTk4NGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCkBAIC0yNjMsNiArMjYzLDggQEAgc3Rh
dGljIE5TU3RyaW5nICpwYXRoQnlSZXNvbHZpbmdTeW1saW5rc0FuZEFsaWFzZXMoTlNTdHJpbmcg
KnRoZVBhdGgpCiAgICAgICAgIGRlc2NyaXB0aW9uID0gZmlsZW5hbWU7CiAgICAgcGx1Z2luSW5m
by5kZXNjID0gZGVzY3JpcHRpb247CiAKKyAgICBwbHVnaW5JbmZvLmlzQXBwbGljYXRpb25QbHVn
aW4gPSBmYWxzZTsKKwogICAgIHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0KaW5kZXggNTAyNGRi
NC4uNThiNTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblBhY2thZ2UubW0KQEAgLTE0NCw2ICsxNDQsOCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICBpZiAoIXRoZU5hbWUpCiAgICAgICAgIHRoZU5hbWUgPSBmaWxlbmFt
ZTsKICAgICBwbHVnaW5JbmZvLm5hbWUgPSB0aGVOYW1lOworCisgICAgcGx1Z2luSW5mby5pc0Fw
cGxpY2F0aW9uUGx1Z2luID0gZmFsc2U7CiAgICAgCiAgICAgW3NlbGYgY2xvc2VSZXNvdXJjZUZp
bGU6cmVzUmVmXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IGI3MTE1OTkuLjcyMzMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtODA2LDcgKzgwNiw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJj
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAgICAgaWYgKFdlYkNvcmU6OkRPTUltcGxlbWVu
dGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkgfHwKICAgICAgICAgSW1hZ2U6OnN1cHBv
cnRzVHlwZShtaW1lVHlwZSkgfHwKLSAgICAgICAgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+
c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpKQorICAgICAgICAocGx1Z2luRGF0YSAmJiBwbHVn
aW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5z
KSkpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIHJldHVybiBZRVM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDE3MzUxOGQuLjU0
ZjZmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxl
TWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVz
c2FnZS5oCkBAIC0xOTcsNiArMTk3LDEyIEBAIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0
IEFyZ3VtZW50czQ8UDEsIFAyLCBQMywgUDQ+JiBhcmdzLCBBcmd1bWVudHMzPFIxLCBSCiAgICAg
KG9iamVjdC0+KmZ1bmN0aW9uKShhcmdzLmFyZ3VtZW50MSwgYXJncy5hcmd1bWVudDIsIGFyZ3Mu
YXJndW1lbnQzLCBhcmdzLmFyZ3VtZW50NCwgcmVwbHlBcmdzLmFyZ3VtZW50MSwgcmVwbHlBcmdz
LmFyZ3VtZW50MiwgcmVwbHlBcmdzLmFyZ3VtZW50Myk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0
eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFIxLCB0eXBlbmFtZSBSMiwgdHlwZW5h
bWUgUjM+Cit2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHM1PFAxLCBQMiwg
UDMsIFA0LCBQNT4mIGFyZ3MsIEFyZ3VtZW50czM8UjEsIFIyLCBSMz4mIHJlcGx5QXJncywgQyog
b2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFyZ3MuYXJn
dW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1lbnQ0LCBh
cmdzLmFyZ3VtZW50NSwgcmVwbHlBcmdzLmFyZ3VtZW50MSwgcmVwbHlBcmdzLmFyZ3VtZW50Miwg
cmVwbHlBcmdzLmFyZ3VtZW50Myk7Cit9CisKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIGRl
bGF5ZWQgcmVwbHkgYXJndW1lbnRzLgogdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYs
IHR5cGVuYW1lIFI+CiB2b2lkIGNhbGxNZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHMwJiwg
UGFzc1JlZlB0cjxSPiBkZWxheWVkUmVwbHksIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggMDkxOTc0OS4uYzI3MjQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzkwLDYg
KzM5MCw4IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHBsdWdpbi5pbmZvLm5h
bWUgPSBwbHVnaW4uaW5mby5maWxlOwogICAgIGlmIChwbHVnaW4uaW5mby5kZXNjLmlzTnVsbCgp
KQogICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gcGx1Z2luLmluZm8uZmlsZTsKKworICAgIHBs
dWdpbi5pbmZvLmlzQXBwbGljYXRpb25QbHVnaW4gPSBmYWxzZTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggZWU4Y2ZhOC4uN2VmZjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8TWltZUNsYXNzSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIE1pbWVDbGFzc0luZgogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBsdWdpbkluZm8mIHBsdWdpbkluZm8p
CiB7Ci0gICAgZW5jb2RlciA8PCBwbHVnaW5JbmZvLm5hbWUgPDwgcGx1Z2luSW5mby5maWxlIDw8
IHBsdWdpbkluZm8uZGVzYyA8PCBwbHVnaW5JbmZvLm1pbWVzOworICAgIGVuY29kZXIgPDwgcGx1
Z2luSW5mby5uYW1lIDw8IHBsdWdpbkluZm8uZmlsZSA8PCBwbHVnaW5JbmZvLmRlc2MgPDwgcGx1
Z2luSW5mby5taW1lcyA8PCBwbHVnaW5JbmZvLmlzQXBwbGljYXRpb25QbHVnaW47CiB9CiAgICAg
CiBib29sIEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFBsdWdpbkluZm8mIHBsdWdpbkluZm8pCkBAIC0xNzksNiArMTc5LDggQEAgYm9v
bCBBcmd1bWVudENvZGVyPFBsdWdpbkluZm8+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBQbHVnaW5JbmZvJiBwbHUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGx1Z2luSW5mby5taW1lcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8uaXNBcHBsaWNhdGlvblBsdWdpbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXgg
YWI4ODBiZC4uMWUxOGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xMjIsMTIgKzEyMiwxNSBAQCBWZWN0b3I8
UGx1Z2luTW9kdWxlSW5mbz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zKCkKICAgICByZXR1cm4g
bV9wbHVnaW5zOwogfQogCi1QbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBs
dWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CitQbHVnaW5Nb2R1
bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgb25seUFwcGxpY2F0aW9uUGx1Z2lucykgY29uc3QKIHsKICAgICBB
U1NFUlQoIW1pbWVUeXBlLmlzTnVsbCgpKTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcGx1Z2lucy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4gPSBtX3BsdWdpbnNbaV07CisKKyAgICAgICAgaWYgKG9ubHlBcHBsaWNhdGlv
blBsdWdpbnMgJiYgIXBsdWdpbi5pbmZvLmlzQXBwbGljYXRpb25QbHVnaW4pCisgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgcGx1
Z2luLmluZm8ubWltZXMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNvbnN0IE1pbWVDbGFz
c0luZm8mIG1pbWVDbGFzc0luZm8gPSBwbHVnaW4uaW5mby5taW1lc1tqXTsKQEAgLTEzOSwxNiAr
MTQyLDE5IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gUGx1Z2luTW9kdWxl
SW5mbygpOwogfQogCi1QbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdp
bkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgU3RyaW5nJiBtaW1lVHlwZSkg
Y29uc3QKK1BsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIG9u
bHlBcHBsaWNhdGlvblBsdWdpbnMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFleHRlbnNpb24uaXNO
dWxsKCkpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiA9IG1fcGx1
Z2luc1tpXTsKLSAgICAgICAgCisKKyAgICAgICAgaWYgKG9ubHlBcHBsaWNhdGlvblBsdWdpbnMg
JiYgIXBsdWdpbi5pbmZvLmlzQXBwbGljYXRpb25QbHVnaW4pCisgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHBsdWdpbi5pbmZvLm1pbWVzLnNp
emUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lQ2xhc3NJ
bmZvID0gcGx1Z2luLmluZm8ubWltZXNbal07Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMgPSBtaW1lQ2xhc3NJbmZvLmV4dGVuc2lv
bnM7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChmaW5kKGV4dGVuc2lvbnMuYmVnaW4o
KSwgZXh0ZW5zaW9ucy5lbmQoKSwgZXh0ZW5zaW9uKSAhPSBleHRlbnNpb25zLmVuZCgpKSB7CkBA
IC0xOTksMTMgKzIwNSwxMyBAQCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6Zmlu
ZFBsdWdpbldpdGhCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpCiAKICNlbmRpZgogCi1Q
bHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbihTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBLVVJMJiB1cmwpCitQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6
ZmluZFBsdWdpbihTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgb25seUFw
cGxpY2F0aW9uUGx1Z2lucykKIHsKICAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7CiAgICAg
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIHBsdWctaW4gYmFzZWQgb24g
aXRzIE1JTUUgdHlwZS4KICAgICBpZiAoIW1pbWVUeXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgIFBs
dWdpbk1vZHVsZUluZm8gcGx1Z2luID0gZmluZFBsdWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsK
KyAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5kUGx1Z2luRm9yTUlNRVR5cGUo
bWltZVR5cGUsIG9ubHlBcHBsaWNhdGlvblBsdWdpbnMpOwogICAgICAgICBpZiAoIXBsdWdpbi5w
YXRoLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIHBsdWdpbjsKICAgICB9CkBAIC0yMTMs
MTQgKzIxOSwxNCBAQCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdp
bihTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgLy8gTmV4dCwgY2hlY2sg
aWYgYW55IHBsdWctaW5zIGNsYWltIHRvIHN1cHBvcnQgdGhlIFVSTCBleHRlbnNpb24uCiAgICAg
U3RyaW5nIGV4dGVuc2lvbiA9IHBhdGhFeHRlbnNpb24odXJsKS5sb3dlcigpOwogICAgIGlmICgh
ZXh0ZW5zaW9uLmlzTnVsbCgpICYmIG1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBQbHVn
aW5Nb2R1bGVJbmZvIHBsdWdpbiA9IGZpbmRQbHVnaW5Gb3JFeHRlbnNpb24oZXh0ZW5zaW9uLCBt
aW1lVHlwZSk7CisgICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gZmluZFBsdWdpbkZv
ckV4dGVuc2lvbihleHRlbnNpb24sIG1pbWVUeXBlLCBvbmx5QXBwbGljYXRpb25QbHVnaW5zKTsK
ICAgICAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBw
bHVnaW47CiAgICAgICAgIAogICAgICAgICAvLyBGaW5hbGx5LCB0cnkgdG8gZ2V0IHRoZSBNSU1F
IHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uIGluIGEgcGxhdGZvcm0gc3BlY2lmaWMgbWFubmVyIGFu
ZCB1c2UgdGhhdC4KICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbk1pbWVUeXBlID0gZ2V0TUlNRVR5
cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgaWYgKCFleHRlbnNpb25NaW1lVHlw
ZS5pc051bGwoKSkgewotICAgICAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5k
UGx1Z2luRm9yTUlNRVR5cGUoZXh0ZW5zaW9uTWltZVR5cGUpOworICAgICAgICAgICAgUGx1Z2lu
TW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5kUGx1Z2luRm9yTUlNRVR5cGUoZXh0ZW5zaW9uTWltZVR5
cGUsIG9ubHlBcHBsaWNhdGlvblBsdWdpbnMpOwogICAgICAgICAgICAgaWYgKCFwbHVnaW4ucGF0
aC5pc051bGwoKSkgewogICAgICAgICAgICAgICAgIG1pbWVUeXBlID0gZXh0ZW5zaW9uTWltZVR5
cGU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBsdWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggZmM1YjkwNi4uZDc5
NTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhl
IGluZm8gZm9yIGEgcGx1Zy1pbiB0aGF0IGNhbiBoYW5kbGUgdGhlIGdpdmVuIE1JTUUgdHlwZS4K
ICAgICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG51bGwsIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiB0
aGUgZ2l2ZW4gdXJsIHdpbGwgYmUgdXNlZCB0byBpbmZlciB0aGUKICAgICAvLyBwbHVnLWluIHR5
cGUuIEluIHRoYXQgY2FzZSwgbWltZVR5cGUgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmln
aHQgTUlNRSB0eXBlLgotICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbihTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5k
UGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIG9ubHlB
cHBsaWNhdGlvblBsdWdpbnMgPSBmYWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZv
ciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllci4KICAgICBQbHVn
aW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGJ1bmRsZUlkZW50aWZpZXIpOwpAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgUGx1Z2lu
SW5mb1N0b3JlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiBw
cml2YXRlOgotICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwotICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdp
bkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgU3RyaW5nJiBtaW1lVHlwZSkg
Y29uc3Q7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBvbmx5QXBwbGljYXRpb25QbHVnaW5zID0gZmFsc2UpIGNv
bnN0OworICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBvbmx5QXBwbGljYXRpb25Q
bHVnaW5zID0gZmFsc2UpIGNvbnN0OwogCiAgICAgdm9pZCBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5
KCk7CiAgICAgc3RhdGljIHZvaWQgbG9hZFBsdWdpbihWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4m
IHBsdWdpbnMsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZGM5ODI1YS4uM2NmOTgxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtOTAxLDE4ICs5MDEsNiBAQCBEb3dubG9hZFBy
b3h5KiBXZWJDb250ZXh0OjpjcmVhdGVEb3dubG9hZFByb3h5KCkKICAgICByZXR1cm4gZW5zdXJl
U2hhcmVkV2ViUHJvY2VzcygpLT5jcmVhdGVEb3dubG9hZFByb3h5KCk7CiB9CiAKLS8vIEZJWE1F
OiBUaGlzIGlzIG5vdCB0aGUgaWRlYWwgcGxhY2UgZm9yIHRoaXMgZnVuY3Rpb24uCi1IYXNoU2V0
PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBXZWJDb250ZXh0OjpwZGZBbmRQb3N0U2NyaXB0TUlN
RVR5cGVzKCkKLXsKLSAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtaW1lVHlw
ZXM7Ci0KLSAgICBtaW1lVHlwZXMuYWRkKCJhcHBsaWNhdGlvbi9wZGYiKTsKLSAgICBtaW1lVHlw
ZXMuYWRkKCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgbWltZVR5cGVzLmFkZCgidGV4
dC9wZGYiKTsKLSAgICAKLSAgICByZXR1cm4gbWltZVR5cGVzOwotfQotCiB2b2lkIFdlYkNvbnRl
eHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaAppbmRleCA4Njc1ODhkLi5iNmUwMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKQEAgLTIxMiw4ICsyMTIsNiBAQCBwdWJsaWM6CiAgICAgV2ViSGlzdG9yeUNsaWVu
dCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuIG1faGlzdG9yeUNsaWVudDsgfQogICAgIFdlYkNv
bnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKLSAgICBzdGF0aWMg
SGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gcGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBl
cygpOwotCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIFdlYkJhdHRlcnlNYW5hZ2Vy
UHJveHkqIGJhdHRlcnlNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX2JhdHRlcnlNYW5h
Z2VyUHJveHkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCmluZGV4IDM1OTBmZmQuLmJlN2Y2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTk1LDE2ICs5Niw3IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX3BhZ2UtPmNhblNob3dNSU1FVHlwZShtaW1l
VHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8v
IE9uIE1hYywgd2UgY2FuIHNob3cgUERGcy4KLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvbnRleHQ6OnBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMoKS5j
b250YWlucyhtaW1lVHlwZSkgJiYgIVdlYkNvbnRleHQ6Om9taXRQREZTdXBwb3J0KCk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWdlLT5jYW5TaG93TUlNRVR5
cGUobWltZVR5cGUpOwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1N0YW5k
YWxvbmVJbWFnZURvY3VtZW50KCkgY29uc3QKQEAgLTEyMyw3ICsxMTUsNyBAQCBib29sIFdlYkZy
YW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkgY29uc3QKICAgICBpZiAobV9NSU1F
VHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXZWJD
b250ZXh0OjpwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMobV9NSU1FVHlwZSk7
CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUo
bV9NSU1FVHlwZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDk1YTYzNWMuLjJhYjZhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05MzMsNiArOTMzLDEzIEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKICAgICBp
ZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpICYmIG1fcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLT5w
bHVnaW5zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBPbiBNYWMs
IHdlIGNhbiBzaG93IFBERnMuCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0
U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpICYmICFXZWJDb250ZXh0OjpvbWl0UERGU3VwcG9ydCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEzNzAsMTQgKzEzNzcsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgV2ViUGFnZVBy
b3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkxTdHJpbmcsIFN0cmluZyYgcGx1Z2luUGF0aCwgU3RyaW5nJiBuZXdNaW1lVHlwZSwgdWludDMy
X3QmIHBsdWdpbkxvYWRQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBib29s
IGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucywgU3RyaW5nJiBwbHVnaW5QYXRoLCBTdHJpbmcm
IG5ld01pbWVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSkKIHsKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmxTdHJpbmcpOwogCiAgICAgbmV3TWltZVR5cGUgPSBtaW1lVHlwZS5sb3dl
cigpOwogCiAgICAgcGx1Z2luTG9hZFBvbGljeSA9IFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsK
LSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVn
aW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgdXJsU3Ry
aW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQo
KS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJMKCks
IHVybFN0cmluZyksIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyk7CiAgICAgaWYgKCFwbHVn
aW4ucGF0aCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNzFiZjM1OC4uMjk4OGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTA1Myw3ICsxMDUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQotICAgIHZvaWQgZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIFN0cmlu
ZyYgbmV3TUlNRVR5cGUsIHVpbnQzMl90JiBwbHVnaW5Mb2FkUG9saWN5KTsKKyAgICB2b2lkIGZp
bmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmlu
ZywgY29uc3QgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIFN0cmluZyYgcGx1Z2lu
UGF0aCwgU3RyaW5nJiBuZXdNSU1FVHlwZSwgdWludDMyX3QmIHBsdWdpbkxvYWRQb2xpY3kpOwog
I2VuZGlmCiAKICAgICBQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmMWRiNDZiLi40
M2Y3YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMxNSw3ICszMTUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBGaW5kUGx1
Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1cmxTdHJpbmcsIFdURjo6U3Ry
aW5nIGZyYW1lVVJMU3RyaW5nLCBXVEY6OlN0cmluZyBwYWdlVVJMU3RyaW5nKSAtPiAoV1RGOjpT
dHJpbmcgcGx1Z2luUGF0aCwgV1RGOjpTdHJpbmcgbmV3TUlNRVR5cGUsIHVpbnQzMl90IHBsdWdp
bkxvYWRQb2xpY3kpCisgICAgRmluZFBsdWdpbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpT
dHJpbmcgdXJsU3RyaW5nLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywgV1RGOjpTdHJpbmcg
cGFnZVVSTFN0cmluZywgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpIC0+IChXVEY6
OlN0cmluZyBwbHVnaW5QYXRoLCBXVEY6OlN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1
Z2luTG9hZFBvbGljeSkKICNlbmRpZgogCiAgICAgRGlkVXBkYXRlSW5XaW5kb3dTdGF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBE
RlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxl
UERGUGx1Z2luLm1tCmluZGV4IDIxMzI1YzIuLmIzZDcwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCkBA
IC0xNzgsMTIgKzE3OCwxOSBAQCBQbHVnaW5JbmZvIFNpbXBsZVBERlBsdWdpbjo6cGx1Z2luSW5m
bygpCiB7CiAgICAgUGx1Z2luSW5mbyBpbmZvOwogICAgIGluZm8ubmFtZSA9IGJ1aWx0SW5QREZQ
bHVnaW5OYW1lKCk7CisgICAgaW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luID0gdHJ1ZTsKIAogICAg
IE1pbWVDbGFzc0luZm8gcGRmTWltZUNsYXNzSW5mbzsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5
cGUgPSAiYXBwbGljYXRpb24vcGRmIjsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmRlc2MgPSBwZGZE
b2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwogICAgIHBkZk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9u
cy5hcHBlbmQoInBkZiIpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHBkZk1pbWVDbGFzc0luZm8p
OworICAgIAorICAgIE1pbWVDbGFzc0luZm8gdGV4dFBERk1pbWVDbGFzc0luZm87CisgICAgdGV4
dFBERk1pbWVDbGFzc0luZm8udHlwZSA9ICJ0ZXh0L3BkZiI7CisgICAgdGV4dFBERk1pbWVDbGFz
c0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CisgICAgdGV4dFBERk1p
bWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIpOworICAgIGluZm8ubWltZXMuYXBw
ZW5kKHRleHRQREZNaW1lQ2xhc3NJbmZvKTsKIAogICAgIE1pbWVDbGFzc0luZm8gcG9zdFNjcmlw
dE1pbWVDbGFzc0luZm87CiAgICAgcG9zdFNjcmlwdE1pbWVDbGFzc0luZm8udHlwZSA9IHBvc3RT
Y3JpcHRNSU1FVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODgw
MDU5NS4uMThlOGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0
MjUsNyArMTQyNSw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0CiAgICAgYm9vbCBwbHVnSW5T
dXBwb3J0c01JTUVUeXBlID0gZmFsc2U7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYgKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSB3ZWJQ
YWdlLT5jb3JlUGFnZSgpLT5wbHVnaW5EYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChwbHVnaW5E
YXRhLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIGlmIChwbHVnaW5E
YXRhLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSkK
ICAgICAgICAgICAgICAgICBwbHVnSW5TdXBwb3J0c01JTUVUeXBlID0gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5OGI1OTg1Li40YzE1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MzIsNyArNTMyLDggQEAgUGFzc1JlZlB0cjxQbHVn
aW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVt
ZW50KiBwbHUKICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBmcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwogICAg
IFN0cmluZyBwYWdlVVJMU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CiAKLSAgICBpZiAoIXNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW4ocGFyYW1ldGVycy5taW1lVHlw
ZSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5n
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6UmVwbHkocGx1Z2luUGF0aCwg
bmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3kpKSkgeworICAgIGJvb2wgYWxsb3dPbmx5QXBw
bGljYXRpb25QbHVnaW5zID0gIWZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1l
TG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pOworICAg
IGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbihwYXJhbWV0
ZXJzLm1pbWVUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBh
Z2VVUkxTdHJpbmcsIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblBhdGgsIG5ld01JTUVUeXBlLCBwbHVn
aW5Mb2FkUG9saWN5KSkpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01NTYsOCAr
NTU3LDcgQEAgUGFzc1JlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFt
ZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHUKICAgICBpZiAocGx1Z2luUGF0aC5pc051
bGwoKSkgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgU3RyaW5nIHBhdGggPSBwYXJhbWV0
ZXJzLnVybC5wYXRoKCk7Ci0gICAgICAgIGlmICgocGFyYW1ldGVycy5taW1lVHlwZSA9PSAiYXBw
bGljYXRpb24vcGRmIiB8fCBwYXJhbWV0ZXJzLm1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi9wb3N0
c2NyaXB0IikKLSAgICAgICAgICAgIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBlLmlzRW1wdHkoKSAm
JiAocGF0aC5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNXaXRoKCIucHMiLCBm
YWxzZSkpKSkgeworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3Jp
cHRNSU1FVHlwZShwYXJhbWV0ZXJzLm1pbWVUeXBlKSB8fCAocGFyYW1ldGVycy5taW1lVHlwZS5p
c0VtcHR5KCkgJiYgKHBhdGguZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkgfHwgcGF0aC5lbmRzV2l0
aCgiLnBzIiwgZmFsc2UpKSkpIHsKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAgICAgICAg
ICAgIGlmIChzaG91bGRVc2VQREZQbHVnaW4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUERG
UGx1Z2luOjpjcmVhdGUoZnJhbWUpOwpAQCAtMzc2OSw4ICszNzY5LDEwIEBAIGJvb2wgV2ViUGFn
ZTo6Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CiAgICAgU3RyaW5nIG5ld01JTUVUeXBlOwogICAg
IHVpbnQzMl90IHBsdWdpbkxvYWRQb2xpY3k7Ci0gICAgCi0gICAgaWYgKCFzZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nKCkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luOjpSZXBseShw
bHVnaW5QYXRoLCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSkpKQorCisgICAgLy8gRklY
TUU6IElzIGl0IHJpZ2h0IHRvIGRlcGVuZCBvbiB0aGUgbWFpbiBmcmFtZSBoZXJlPworICAgIGJv
b2wgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zID0gIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pOworICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RmluZFBsdWdpbihyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBhbGxv
d09ubHlBcHBsaWNhdGlvblBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1
Z2luOjpSZXBseShwbHVnaW5QYXRoLCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcGx1Z2luTG9hZFBvbGljeSAhPSBQ
bHVnaW5Nb2R1bGVCbG9ja2VkICYmICFwbHVnaW5QYXRoLmlzRW1wdHkoKTsKQEAgLTM5MTksNyAr
MzkyMSwxMSBAQCBib29sIFdlYlBhZ2U6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1J
TUVUeXBlKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChQbHVnaW5EYXRh
KiBwbHVnaW5EYXRhID0gbV9wYWdlLT5wbHVnaW5EYXRhKCkpIHsKLSAgICAgICAgaWYgKHBsdWdp
bkRhdGEtPnN1cHBvcnRzTWltZVR5cGUoTUlNRVR5cGUpICYmIG1fcGFnZS0+c2V0dGluZ3MoKS0+
YXJlUGx1Z2luc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKHBsdWdpbkRhdGEtPnN1cHBvcnRzTWlt
ZVR5cGUoTUlNRVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+YXJlUGx1Z2luc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgIC8vIFdlIGNhbiB1c2UgYXBwbGljYXRpb24gcGx1Z2lucyBldmVuIGlmIHBsdWdpbnMg
YXJlbid0IGVuYWJsZWQuCisgICAgICAgIGlmIChwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBl
KE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggMzJmNDFkOC4uNjA3MTQ1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MzMsMTAgKzYzMyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGRmUGx1
Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBwZGZBbmRQb3N0U2NyaXB0
TUlNRVR5cGVzKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6
ZSk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5k
ZXggZDRiYzU4Yy4uNzQzNzcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXli
b2FyZEV2ZW50Lmg+CkBAIC0xMDQsOSArMTA1LDkgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogCiAg
ICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9ydCJdOwogICAgIGlmICghc2hv
dWxkVXNlUERGUGx1Z2luKCkgJiYgIW9taXRQREZTdXBwb3J0KSB7Ci0gICAgICAgIC8vIFdlIHdh
bnQgdG8gdXNlIGEgUERGIHZpZXcgaW4gdGhlIFVJIHByb2Nlc3MgZm9yIFBERiBNSU1FIHR5cGVz
LgotICAgICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtaW1lVHlwZXMgPSBw
ZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmcs
IENhc2VGb2xkaW5nSGFzaD46Oml0ZXJhdG9yIGl0ID0gbWltZVR5cGVzLmJlZ2luKCk7IGl0ICE9
IG1pbWVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBQREZQ
bHVnaW4sIHdlIHdpbGwgdXNlIGEgUERGIHZpZXcgaW4gdGhlIFVJIHByb2Nlc3MgZm9yIFBERiBh
bmQgUG9zdFNjcmlwdCBNSU1FIHR5cGVzLgorICAgICAgICBIYXNoU2V0PFN0cmluZz4gbWltZVR5
cGVzID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpOwor
ICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBtaW1lVHlwZXMuYmVn
aW4oKTsgaXQgIT0gbWltZVR5cGVzLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgbV9taW1lVHlw
ZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zLmFkZCgqaXQpOwogICAgIH0KIH0KQEAgLTEwMDIs
MTYgKzEwMDMsNCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGRnJvbVBERkRvY3VtZW50
KENHQ29udGV4dFJlZiBjb250ZXh0LCBQREZEb2N1bWVudCAqcAogICAgIH0KIH0KIAotLy8gRklY
TUU6IFRoaXMgaXMgbm90IHRoZSBpZGVhbCBwbGFjZSBmb3IgdGhpcyBmdW5jdGlvbiAoYW5kIG5v
dyBpdCdzIGR1cGxpY2F0ZWQgaGVyZSBhbmQgaW4gV2ViQ29udGV4dE1hYykuCi1IYXNoU2V0PFN0
cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBXZWJQYWdlOjpwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVz
KCkKLXsKLSAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtaW1lVHlwZXM7Ci0g
ICAgCi0gICAgbWltZVR5cGVzLmFkZCgiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgbWltZVR5cGVz
LmFkZCgiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgIG1pbWVUeXBlcy5hZGQoInRleHQv
cGRmIik7Ci0gICAgCi0gICAgcmV0dXJuIG1pbWVUeXBlczsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cg==
</data>
<flag name="commit-queue"
          id="221697"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200211</attachid>
            <date>2013-05-01 03:43:11 -0700</date>
            <delta_ts>2013-05-03 16:38:44 -0700</delta_ts>
            <desc>changelogs</desc>
            <filename>pdf-no-plugin.diff</filename>
            <type>text/plain</type>
            <size>49558</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzMxMzA1Li5jMjQ1YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTMtMDUtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2lucyBkb24ndCBsb2FkIHdoZW4gcGx1Z2lucyBhcmUgZGlzYWJsZWQs
IGJ1dCB0aGV5IHNob3VsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzU3OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExNjUwMTk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgdG8gbG9hZCAiYXBwbGljYXRpb24iIHBsdWctaW5zIGV2ZW4gaWYgc2V0dGluZ3Mgb3IgdGhl
IEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIHNheSB0aGF0IHBsdWctaW5zIHNob3VsZCBiZSBk
aXNhYmxlZCwgcHJvdmlkaW5nIGEgbWVjaGFuaXNtIGZvciBXZWJLaXQqIHRvIG9mZmVyIGJ1aWx0
LWluCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFwcGVucyB0byB1c2UgdGhlIHBsdWct
aW4gaW5mcmFzdHJ1Y3R1cmUsIGFuZCB3aGljaCBhbHNvIGRvZXNuJ3QKKyAgICAgICAgdW5leHBl
Y3RlZGx5IGRpc2FwcGVhciBmb3IgdXNlcnMgd2l0aCBwbHVnLWlucyBvZmYuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgRXhwb3J0IFN1YmZyYW1lTG9hZGVyOjphbGxvd1Bs
dWdpbnMoKS4KKyAgICAgICAgRXhwb3J0IG5ld2x5LWFkZGVkIGlzUERGT3JQb3N0U2NyaXB0TUlN
RVR5cGUgYW5kIGdldFBERkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMuCisgICAgICAgIFVwZGF0ZSBz
aWduYXR1cmUgZm9yIFBsdWdpbkRhdGE6OnN1cHBvcnRzTWltZVR5cGUgdG8gaW5jbHVkZSB0aGUg
QWxsb3dlZFBsdWdpblR5cGVzIGFyZ3VtZW50LgorCisgICAgICAgICogZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudCk6CisgICAgICAgIExvYWQgUGx1Z2luRGF0YSBldmVuIGlmIHBsdWctaW5zIGFyZSBk
aXNhYmxlZCwgYnV0IGlmIHRoYXQgaXMgdGhlIGNhc2UsIG9ubHkKKyAgICAgICAgY3JlYXRlIGEg
UGx1Z2luRG9jdW1lbnQgZm9yIGFwcGxpY2F0aW9uIHBsdWctaW5zLgorCisgICAgICAgICogaHRt
bC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBh
cnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICBEb24ndCBiYWlsIGlmIHBsdWctaW5zIGFyZSBk
aXNhYmxlZCwgYmVjYXVzZSB3ZSBjb3VsZCBzdGlsbCBiZSBhIFBsdWdpbkRvY3VtZW50CisgICAg
ICAgIGZvciBhbiBhcHBsaWNhdGlvbiBwbHVnLWluLgorCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdpbkRhdGEpOgorICAgICAgICBBbGxvdyBQ
bHVnaW5EYXRhIHRvIGJlIGNvbnN0cnVjdGVkIGV2ZW4gaWYgcGx1Zy1pbnMgYXJlIGRpc2FibGVk
LCBhcyB0aGVyZSBtaWdodAorICAgICAgICBiZSBhcHBsaWNhdGlvbiBwbHVnLWlucyB0aGF0IHdl
IHdhbnQgdG8gbG9hZCBhbnl3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0TUlN
RVR5cGVzKToKKyAgICAgICAgUG9wdWxhdGUgb3VyIG5ldyBIYXNoU2V0IHdpdGggdGhlIHRocmVl
IGNvbW1vbiBQREYgYW5kIFBTIE1JTUUgdHlwZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OmluaXRp
YWxpemVNSU1FVHlwZVJlZ2lzdHJ5KTogQ2FsbCBpbml0aWFsaXplUERGQW5kUG9zdFNjcmlwdE1J
TUVUeXBlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0
U2NyaXB0TUlNRVR5cGUpOiBBZGRlZC4KKyAgICAgICAgQ29uc3VsdCBvdXIgbmV3IEhhc2hTZXQg
dG8gc2VlIGlmIHRoZSBnaXZlbiBNSU1FIHR5cGUgaXMgb25lIG9mIHRob3NlIHVzZWQgZm9yIFBE
RiBvciBQUy4KKworICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGQW5k
UG9zdFNjcmlwdE1JTUVUeXBlcyk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaDoKKyAgICAgICAgKE1JTUVUeXBlUmVnaXN0cnkpOiBBZGQgaXNQREZPclBvc3RT
Y3JpcHRNSU1FVHlwZSBhbmQgZ2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvTUlNRVR5cGVSZWdpc3RyeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZSk6CisgICAgICAg
IE9uIE1hYywgaWYgd2UgaGF2ZSBQREZQbHVnaW4sIHdlIGNhbiBzdXBwb3J0IFBERiBhbmQgUG9z
dFNjcmlwdCB3aXRoIGEgbmF0aXZlIGFwcGxpY2F0aW9uIHBsdWctaW4uCisKKyAgICAgICAgKiBw
bHVnaW5zL1BsdWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6c3Vw
cG9ydHNNaW1lVHlwZSk6CisgICAgICAgIEFkZCBhbiBBbGxvd2VkUGx1Z2luVHlwZXMgYXJndW1l
bnQgdG8gc3VwcG9ydHNNaW1lVHlwZSwgYWxsb3dpbmcgY2FsbGVycyB0byBzcGVjaWZ5CisgICAg
ICAgIHdoZXRoZXIgdGhleSBhcmUgbG9va2luZyBmb3IgYW55IHBsdWctaW4sIG9yIGFyZSBsb29r
aW5nIG9ubHkgZm9yIGFwcGxpY2F0aW9uIHBsdWctaW5zLgorCisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5EYXRhLmg6CisgICAgICAgIChQbHVnaW5JbmZvKTogQWRkZWQgYW4gaXNBcHBsaWNhdGlv
blBsdWdpbiBmaWVsZCwgdG8gc3BlY2lmeSB3aGV0aGVyIHRoaXMgaXMgYSAiYnVpbHQtaW4iIHBs
dWctaW4uCisgICAgICAgIChQbHVnaW5EYXRhKTogQWRkIHRoZSBhZm9yZW1lbnRpb25lZCBBbGxv
d2VkUGx1Z2luVHlwZXMgZW51bSBhbmQgdGhlIGFyZ3VtZW50IHRvIHN1cHBvcnRzTWltZVR5cGUu
CisKIDIwMTMtMDQtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNYWNdIFJlbW92ZSBhZG9wdE5TL3JldGFpbiBwYWlycywgc2luY2UgdGhlIHR3byBjYW5jZWwg
ZWFjaCBvdGhlciBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMTlhM2ZjMC4uZWUxOWViZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI5NSw2ICsyOTUsNyBAQCBfX1pON1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyMTZyZXNwb25zZVJlY2VpdmVkRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNf
MTZSZXNvdQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJlc291cmNl
RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dlYkNvcmUx
NEZvcm1Db250cm9sbGVyMjJnZXRSZWZlcmVuY2VkRmlsZVBhdGhzRVJLTjNXVEY2VmVjdG9ySU5T
MV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VMb2FkZXIzMmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRVJLTlNfMjNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUUKK19fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93
UGx1Z2luc0VOU18yOFJlYXNvbkZvckNhbGxpbmdBbGxvd1BsdWdpbnNFCiBfX1pON1dlYkNvcmUx
NGNvb2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVT
NV8KIF9fWk43V2ViQ29yZTE0c2VsZWN0aW9uSW1hZ2VFUE5TXzVGcmFtZUViCiBfX1pON1dlYkNv
cmUxNlNjcmlwdENvbnRyb2xsZXIxN2phdmFTY3JpcHRDb250ZXh0RXYKQEAgLTUxNyw5ICs1MTgs
MTEgQEAgX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MTVjYW5TaG93TUlNRVR5cGVFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyMGlzSmF2YUFwcGxl
dE1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5
MjNnZXRNSU1FVHlwZUZvckV4dGVuc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2
TUlNRVR5cGVSZWdpc3RyeTI0aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRVJLTjNXVEY2U3RyaW5n
RQorX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjVpc1BERk9yUG9zdFNjcmlwdE1JTUVU
eXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjZnZXRT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnky
N2dldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVn
aXN0cnkyN2lzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI4Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlc0V2
CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyOWdldFN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTMyaXNTdXBwb3J0ZWRJbWFn
ZVJlc291cmNlTUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRp
b25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQpAQCAtMTIyNiw3ICsxMjI5LDcgQEAg
X19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExcGVyc2lzdGVuY2VFdgogX19aTks3V2ViQ29yZTEw
Q3JlZGVudGlhbDR1c2VyRXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CiBf
X1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsOHBhc3N3b3JkRXYKLV9fWk5LN1dlYkNvcmUxMFBsdWdp
bkRhdGExNnN1cHBvcnRzTWltZVR5cGVFUktOM1dURjZTdHJpbmdFCitfX1pOSzdXZWJDb3JlMTBQ
bHVnaW5EYXRhMTZzdXBwb3J0c01pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRU5TMF8xOEFsbG93ZWRQ
bHVnaW5UeXBlc0UKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclRleHQxNmxpbmVzQm91bmRpbmdCb3hF
dgogX19aTks3V2ViQ29yZTEwUmVuZGVyVGV4dDlmaXJzdFJ1blhFdgogX19aTks3V2ViQ29yZTEw
UmVuZGVyVGV4dDlmaXJzdFJ1bllFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKaW5kZXggNTM3OThmMS4uMzFiZDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCkBAIC0zOTcsMTIgKzM5NywxNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBG
cmFtZQogI2VuZGlmCiAKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gMDsKLSAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVy
KCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgIFBsdWdp
bkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRh
OjpPbmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgp
KSB7CisgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93
UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICAgICAgYWxsb3dl
ZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6QWxsUGx1Z2luczsKKwogICAgICAgICBwbHVnaW5E
YXRhID0gZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpOworICAgIH0KIAogICAgIC8vIFBERiBp
cyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1aWx0LWlu
IHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ugb3ZlciBh
bGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KLSAgICBpZiAoKHR5cGUgPT0gImFwcGxpY2F0aW9u
L3BkZiIgfHwgdHlwZSA9PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEt
PnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCisgICAgaWYgKChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BE
Rk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEt
PnN1cHBvcnRzTWltZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkKICAgICAgICAgcmV0
dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAgICAgaWYgKEltYWdlOjpz
dXBwb3J0c1R5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CkBAIC00MTgsNyArNDIzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUK
ICAgICAvLyBFdmVyeXRoaW5nIGVsc2UgZXhjZXB0IHRleHQvcGxhaW4gY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgcGx1Z2lucy4gSW4gcGFydGljdWxhciwgQWRvYmUgU1ZHIFZpZXdlciBzaG91bGQgYmUg
dXNlZCBmb3IgU1ZHLCBpZiBpbnN0YWxsZWQuCiAgICAgLy8gRGlzYWxsb3dpbmcgcGx1Zy1pbnMg
dG8gdXNlIHRleHQvcGxhaW4gcHJldmVudHMgcGx1Zy1pbnMgZnJvbSBoaWphY2tpbmcgYSBmdW5k
YW1lbnRhbCB0eXBlIHRoYXQgdGhlIGJyb3dzZXIgaXMgZXhwZWN0ZWQgdG8gaGFuZGxlLAogICAg
IC8vIGFuZCBhbHNvIHNlcnZlcyBhcyBhbiBvcHRpbWl6YXRpb24gdG8gcHJldmVudCBsb2FkaW5n
IHRoZSBwbHVnLWluIGRhdGFiYXNlIGluIHRoZSBjb21tb24gY2FzZS4KLSAgICBpZiAodHlwZSAh
PSAidGV4dC9wbGFpbiIgJiYgcGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVU
eXBlKHR5cGUpKSAKKyAgICBpZiAodHlwZSAhPSAidGV4dC9wbGFpbiIgJiYgcGx1Z2luRGF0YSAm
JiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykp
CiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogICAg
IGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6
Y3JlYXRlKGZyYW1lLCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcApp
bmRleCAxOGRkM2ZmLi44Y2ZjOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNl
dHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5ncyB8fCAhZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFt
ZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAg
ICBpZiAoIXNldHRpbmdzKQogICAgICAgICByZXR1cm47CiAKICAgICBkb2N1bWVudCgpLT51cGRh
dGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIzYTA4MmUuLjE1MGVlY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtNTA2LDggKzUwNiw2IEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdp
bnMoYm9vbCByZWxvYWQpCiAKIFBsdWdpbkRhdGEqIFBhZ2U6OnBsdWdpbkRhdGEoKSBjb25zdAog
ewotICAgIGlmICghbWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxv
d1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKLSAgICAgICAgcmV0dXJuIDA7
CiAgICAgaWYgKCFtX3BsdWdpbkRhdGEpCiAgICAgICAgIG1fcGx1Z2luRGF0YSA9IFBsdWdpbkRh
dGE6OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4gbV9wbHVnaW5EYXRhLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAxNmQ0N2VhLi4y
YTQ0NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cApAQCAtMTg4LDYgKzE4OCw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogc3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBzdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlczsKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHBkZkFuZFBvc3RTY3JpcHRNSU1F
VHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7
CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+KiwgQ2FzZUZvbGRpbmdI
YXNoPiBNZWRpYU1JTUVUeXBlTWFwOwpAQCAtMzUxLDYgKzM1MiwxNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpCiAgICAgICBzdXBwb3J0ZWRK
YXZhU2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOwogfQogCitzdGF0aWMgdm9pZCBpbml0
aWFsaXplUERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHR5cGVzW10gPSB7CisgICAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAorICAgICAgICAidGV4
dC9wZGYiLAorICAgICAgICAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsCisgICAgfTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlwZXMpOyArK2kpCisgICAg
ICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7Cit9CisKIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHR5cGVzW10gPSB7CkBAIC00ODgsNiArNTAwLDkgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkoKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMoKTsKIAorICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNl
dDxTdHJpbmc+OworICAgIGluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7CisK
ICAgICB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmc+OwogICAg
IGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIH0KQEAgLTYwMiw2ICs2MTcs
MTUgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNh
dGlvbi94LWphdmEtdm0iLCBmYWxzZSk7CiB9CiAKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlm
IChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBk
ZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMpCisgICAgICAgIGluaXRpYWxpemVNSU1FVHlwZVJlZ2lz
dHJ5KCk7CisgICAgcmV0dXJuIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmNvbnRhaW5zKG1p
bWVUeXBlKTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KG1pbWVUeXBlKSB8fCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IGlz
U3VwcG9ydGVkTWVkaWFNSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDgsNiArNjcyLDEzIEBAIEhh
c2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXMoKQogICAgIHJldHVybiAqc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CiB9CiAKK0hhc2hTZXQ8
U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygp
Cit7CisgICAgaWYgKCFwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKQorICAgICAgICBpbml0aWFs
aXplTUlNRVR5cGVSZWdpc3RyeSgpOworICAgIHJldHVybiAqcGRmQW5kUG9zdFNjcmlwdE1JTUVU
eXBlczsKK30KKwogSGFzaFNldDxTdHJpbmc+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMoKQogewogICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IGNmOTc2
ZDEuLmVjYzc2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKQEAgLTgzLDYgKzgzLDkgQEAgcHVibGljOgogICAgIC8vIGJyb3dzZXIgKGUuZy4gYSBRdCBQ
bHVnaW4pLgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIG1pbWUgdHlw
ZSBpcyBvbmUgb2YgdGhlIGNvbW1vbiBQREYvUFMgdHlwZXMuCisgICAgc3RhdGljIGJvb2wgaXNQ
REZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiBhIG1pbWUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgc2hvd24g
aW5zaWRlIGEgcGFnZS4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIGlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZSgpLCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoKSwgaXNTdXBwb3J0
ZWRNZWRpYU1JTUVUeXBlKCkgcmV0dXJucyB0cnVlCiAgICAgLy8gb3IgaWYgZ2l2ZW4gbWltZSB0
eXBlIGJlZ2lucyB3aXRoICJ0ZXh0LyIgYW5kIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoKSBy
ZXR1cm5zIGZhbHNlLgpAQCAtOTMsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZygpOwogICAg
IHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7
CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMo
KTsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5
cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0VW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25z
dCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NSU1F
VHlwZVJlZ2lzdHJ5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBl
UmVnaXN0cnlNYWMubW0KaW5kZXggMzc5MmI1YS4uM2M2MThjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KQEAgLTU5LDggKzU5
LDE1IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHdrR2V0UHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUodHlwZSk7CiB9CiAKLWJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNB
cHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKGNvbnN0IFN0cmluZyYpCitib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBl
KQogeworI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorICAgIC8vIEZJWE1FOiBUaGlzIHdvdWxk
IGlkZWFsbHkgdGVzdCBpZiB3ZSdyZSB1c2luZyBXZWJLaXQyLCB0aGUgcHJlZmVyZW5jZSBpcyBz
ZXQsCisgICAgLy8gYW5kIFBERkxheWVyQ29udHJvbGxlciBleGlzdHMsIGJ1dCB3ZSBvbmx5IGtu
b3cgdGhhdCBpbiBXZWJLaXQyIGF0IHRoZSBtb21lbnQuCisgICAgaWYgKGlzUERGT3JQb3N0U2Ny
aXB0TUlNRVR5cGUoTUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcApp
bmRleCBjY2RmMTBkLi5mYzcxNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5j
cHAKQEAgLTQ0LDExICs0NCwxMiBAQCBQbHVnaW5EYXRhOjpQbHVnaW5EYXRhKGNvbnN0IFBhZ2Uq
IHBhZ2UpCiAgICAgfQogfQogCi1ib29sIFBsdWdpbkRhdGE6OnN1cHBvcnRzTWltZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK2Jvb2wgUGx1Z2luRGF0YTo6c3VwcG9ydHNNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBBbGxvd2VkUGx1Z2luVHlwZXMgYWxs
b3dlZFBsdWdpblR5cGVzKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21pbWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9taW1lc1tpXS50eXBlID09IG1pbWVU
eXBlKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX21pbWVzW2ldLnR5cGUgPT0gbWltZVR5cGUgJiYgKGFsbG93ZWRQbHVn
aW5UeXBlcyA9PSBBbGxQbHVnaW5zIHx8IG1fcGx1Z2luc1ttX21pbWVQbHVnaW5JbmRpY2VzW2ld
XS5pc0FwcGxpY2F0aW9uUGx1Z2luKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5k
ZXggNjRmYTRiNy4uZmVjN2FjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAg
LTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFBsdWdpbkluZm8gewogICAgIFN0cmluZyBmaWxlOwogICAg
IFN0cmluZyBkZXNjOwogICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKKyAgICBib29s
IGlzQXBwbGljYXRpb25QbHVnaW47CiB9OwogCiAvLyBGSVhNRTogbWVyZ2Ugd2l0aCBQbHVnaW5E
YXRhYmFzZSBpbiB0aGUgZnV0dXJlCkBAIC01NSw4ICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5z
OyB9CiAgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWltZXM7IH0KICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbWltZVBsdWdpbkluZGlj
ZXMoKSBjb25zdCB7IHJldHVybiBtX21pbWVQbHVnaW5JbmRpY2VzOyB9Ci0gICAgCi0gICAgYm9v
bCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OworCisgICAg
ZW51bSBBbGxvd2VkUGx1Z2luVHlwZXMgeworICAgICAgICBBbGxQbHVnaW5zLAorICAgICAgICBP
bmx5QXBwbGljYXRpb25QbHVnaW5zCisgICAgfTsKKworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBBbGxvd2VkUGx1Z2luVHlwZXMpIGNvbnN0
OwogICAgIFN0cmluZyBwbHVnaW5OYW1lRm9yTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdpbkZpbGVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRhMDJmYTkuLjkxZDEwZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wNS0wMSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBQREZQbHVnaW5zIGRvbid0
IGxvYWQgd2hlbiBwbHVnaW5zIGFyZSBkaXNhYmxlZCwgYnV0IHRoZXkgc2hvdWxkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTE2NTAxOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tOgorICAg
ICAgICAoLVtXZWJCYXNlUGx1Z2luUGFja2FnZSBnZXRQbHVnaW5JbmZvRnJvbVBMaXN0c10pOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLm1tOgorICAgICAgICAo
LVtXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgZ2V0UGx1Z2luSW5mb0Zyb21SZXNvdXJjZXNdKToK
KyAgICAgICAgTm90aGluZyBsb2FkZWQgdmlhIFdlYkJhc2VQbHVnaW5QYWNrYWdlIG9yIFdlYk5l
dHNjYXBlUGx1Z2luUGFja2FnZQorICAgICAgICBpcyBhbiBhcHBsaWNhdGlvbiBwbHVnaW4uCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2Fu
UHJvdmlkZURvY3VtZW50U291cmNlXSk6CisgICAgICAgIFByZXZpb3VzbHksIHRoaXMgY2FsbGVy
IGRlcGVuZGVkIG9uIHBsdWdpbkRhdGEoKSByZXR1cm5pbmcgbnVsbCBpZgorICAgICAgICBwbHVn
LWlucyB3ZXJlIGRpc2FibGVkLiBTaW5jZSB0aGF0IGlzIG5vIGxvbmdlciB0aGUgY2FzZSwgd2Ug
aGF2ZSB0bworICAgICAgICBjaGVjayBpZiB3ZSBjYW4gdXNlIHBsdWctaW5zLCBhbmQgb3RoZXJ3
aXNlIGlnbm9yZSBub24tYXBwbGljYXRpb24tcGx1Zy1pbnMuCisKIDIwMTMtMDQtMzAgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlbW92ZSBhZG9wdE5T
L3JldGFpbiBwYWlycywgc2luY2UgdGhlIHR3byBjYW5jZWwgZWFjaCBvdGhlciBvdXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4
IGViMDVmMjcuLjE5ODRhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMjYzLDYgKzI2Myw4IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqcGF0aEJ5UmVzb2x2aW5nU3ltbGlua3NBbmRBbGlhc2VzKE5TU3RyaW5nICp0aGVQYXRoKQog
ICAgICAgICBkZXNjcmlwdGlvbiA9IGZpbGVuYW1lOwogICAgIHBsdWdpbkluZm8uZGVzYyA9IGRl
c2NyaXB0aW9uOwogCisgICAgcGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luID0gZmFsc2U7
CisKICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDUwMjRkYjQuLjU4YjUxNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5QYWNrYWdlLm1tCkBAIC0xNDQsNiArMTQ0LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgaWYgKCF0aGVOYW1lKQogICAgICAgICB0aGVOYW1lID0gZmlsZW5hbWU7CiAgICAgcGx1
Z2luSW5mby5uYW1lID0gdGhlTmFtZTsKKworICAgIHBsdWdpbkluZm8uaXNBcHBsaWNhdGlvblBs
dWdpbiA9IGZhbHNlOwogICAgIAogICAgIFtzZWxmIGNsb3NlUmVzb3VyY2VGaWxlOnJlc1JlZl07
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiNzExNTk5Li5i
ODcyMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgwNCw5ICs4
MDQsMTAgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRvY3VtZW50KCkt
PmxvYWRlcigpLT53cml0ZXIoKS0+bWltZVR5cGUoKTsKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5E
YXRhID0gZnJhbWUtPnBhZ2UoKSA/IGZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKSA6IDA7CiAK
LSAgICBpZiAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKG1pbWVU
eXBlKSB8fAotICAgICAgICBJbWFnZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKSB8fAotICAgICAg
ICAocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSkp
CisgICAgaWYgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1l
VHlwZSkKKyAgICAgICAgfHwgSW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1lVHlwZSkKKyAgICAgICAg
fHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwg
UGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRl
cigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICAgICAg
fHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwg
UGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucykpKQogICAgICAgICByZXR1cm4gTk87
CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxY2Q3ZTNhLi4xMDExODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAxICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFBERlBsdWdpbnMgZG9uJ3QgbG9h
ZCB3aGVuIHBsdWdpbnMgYXJlIGRpc2FibGVkLCBidXQgdGhleSBzaG91bGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMTY1MDE5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUp
OgorICAgICAgICBQcmV2aW91c2x5LCB0aGlzIGNhbGxlciBkZXBlbmRlZCBvbiBwbHVnaW5EYXRh
KCkgcmV0dXJuaW5nIG51bGwgaWYKKyAgICAgICAgcGx1Zy1pbnMgd2VyZSBkaXNhYmxlZC4gU2lu
Y2UgdGhhdCBpcyBubyBsb25nZXIgdGhlIGNhc2UsIHdlIGhhdmUgdG8KKyAgICAgICAgY2hlY2sg
aWYgd2UgY2FuIHVzZSBwbHVnLWlucywgYW5kIG90aGVyd2lzZSBpZ25vcmUgbm9uLWFwcGxpY2F0
aW9uLXBsdWctaW5zLgorCiAyMDEzLTA0LTMwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCBjcmVhdGUgU3R5bGVSZXNvbHZlcnMganVzdCB0byBpbnZh
bGlkYXRlIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCAxNjQ4NDQ3Li5hOTgzNjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKQEAgLTEzNTgsOSArMTM1OCwxMyBAQCBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxv
YWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0CiAg
ICAgT2JqZWN0Q29udGVudFR5cGUgcGx1Z0luVHlwZSA9IE9iamVjdENvbnRlbnROb25lOwogICAg
IGlmIChhcmVQbHVnaW5zRW5hYmxlZCAmJiBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lu
cygpLT5pc01JTUVUeXBlUmVnaXN0ZXJlZChtaW1lVHlwZSkpCiAgICAgICAgIHBsdWdJblR5cGUg
PSBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47Ci0gICAgZWxzZSBpZiAobV9mcmFtZS0+cGFn
ZSgpICYmIG1fZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpICYmIG1fZnJhbWUtPnBhZ2UoKS0+
cGx1Z2luRGF0YSgpLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSkKLSAgICAgICAgcGx1Z0lu
VHlwZSA9IE9iamVjdENvbnRlbnRPdGhlclBsdWdpbjsKLSAgICAgICAgCisgICAgZWxzZSBpZiAo
bV9mcmFtZS0+cGFnZSgpICYmIG1fZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7CisgICAg
ICAgIGJvb2wgYWxsb3dQbHVnaW5zID0gbV9mcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVy
KCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pOworICAgICAgICBp
ZiAoKG1fZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVU
eXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBhbGxvd1BsdWdpbnMpCisgICAgICAgICAg
ICB8fCBtX2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS0+c3VwcG9ydHNNaW1lVHlwZShtaW1l
VHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucykpCisgICAgICAgICAgICAg
ICAgcGx1Z0luVHlwZSA9IE9iamVjdENvbnRlbnRPdGhlclBsdWdpbjsKKyAgICB9CisKICAgICBp
ZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSkK
ICAgICAgICAgcmV0dXJuIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMgJiYgcGx1Z0luVHlw
ZSAhPSBPYmplY3RDb250ZW50Tm9uZSA/IHBsdWdJblR5cGUgOiBPYmplY3RDb250ZW50SW1hZ2U7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggYzYwZDJkYS4uNGQ4YWViMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFBERlBsdWdpbnMgZG9uJ3QgbG9hZCB3aGVuIHBs
dWdpbnMgYXJlIGRpc2FibGVkLCBidXQgdGhleSBzaG91bGQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMTY1MDE5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6Y2FuU2hvd01JTUVUeXBlKToK
KyAgICAgICAgUHJldmlvdXNseSwgdGhpcyBjYWxsZXIgZGVwZW5kZWQgb24gcGx1Z2luRGF0YSgp
IHJldHVybmluZyBudWxsIGlmCisgICAgICAgIHBsdWctaW5zIHdlcmUgZGlzYWJsZWQuIFNpbmNl
IHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLCB3ZSBoYXZlIHRvCisgICAgICAgIGNoZWNrIGlm
IHdlIGNhbiB1c2UgcGx1Zy1pbnMsIGFuZCBvdGhlcndpc2UgaWdub3JlIG5vbi1hcHBsaWNhdGlv
bi1wbHVnLWlucy4KKwogMjAxMy0wNC0yOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1dpbmRvd3MsIFdpbkNhaXJvXSBSZW1vdmUgcHRocmVhZCBwYXRo
cyBmb3IgV2ViS2l0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAwM2MwYTE1Li4wYWU4
NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMjUyNiwxMSArMjUyNiwyMCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNhblNob3dNSU1FVHlwZSgKICAgICBpZiAoIWNh
blNob3cpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqY2FuU2hvdyA9IE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZVN0cikgfHwKLSAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKG1pbWVU
eXBlU3RyKSB8fAotICAgICAgICAobV9wYWdlICYmIG1fcGFnZS0+cGx1Z2luRGF0YSgpICYmIG1f
cGFnZS0+cGx1Z2luRGF0YSgpLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlU3RyKSkgfHwKLSAg
ICAgICAgc2hvdWxkVXNlRW1iZWRkZWRWaWV3KG1pbWVUeXBlU3RyKTsKLSAgICAKKyAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7CisgICAgYm9vbCBhbGxvd1BsdWdpbnMg
PSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxs
b3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbik7CisKKyAgICAqY2FuU2hvdyA9
IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZVN0cikK
KyAgICAgICAgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
KG1pbWVUeXBlU3RyKTsKKworICAgIGlmICghKmNhblNob3cgJiYgbV9wYWdlICYmIG1fcGFnZS0+
cGx1Z2luRGF0YSgpKSB7CisgICAgICAgICpjYW5TaG93ID0gKG1fcGFnZS0+cGx1Z2luRGF0YSgp
LT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlU3RyLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAm
JiBhbGxvd1BsdWdpbnMpCisgICAgICAgICAgICB8fCBtX3BhZ2UtPnBsdWdpbkRhdGEoKS0+c3Vw
cG9ydHNNaW1lVHlwZShtaW1lVHlwZVN0ciwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1
Z2lucyk7CisgICAgfQorCisgICAgaWYgKCEqY2FuU2hvdykKKyAgICAgICAgKmNhblNob3cgPSBz
aG91bGRVc2VFbWJlZGRlZFZpZXcobWltZVR5cGVTdHIpOworCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA5NzQ0MTM5Li4yNmVmZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODYgQEAKKzIwMTMtMDUtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUERGUGx1Z2lucyBkb24ndCBsb2FkIHdoZW4gcGx1Z2lucyBhcmUgZGlzYWJs
ZWQsIGJ1dCB0aGV5IHNob3VsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzU3OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExNjUwMTk3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgbG9h
ZGluZyAiYXBwbGljYXRpb24iIHBsdWctaW5zIGV2ZW4gaWYgcGx1Zy1pbnMgYXJlIGV4cGxpY2l0
bHkgZGlzYWJsZWQuCisKKyAgICAgICAgTWFrZSBQREZQbHVnaW4gYW5kIFNpbXBsZVBERlBsdWdp
biAiYXBwbGljYXRpb24iIHBsdWctaW5zLCBzbyB0aGV5IGNhbgorICAgICAgICBiZSBsb2FkZWQg
ZXZlbiBpZiBwbHVnLWlucyBhcmUgZGlzYWJsZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1iZXJGdW5jdGlv
bik6CisgICAgICAgIEFkZCBhIDUtYXJndW1lbnQsIDMtcmVwbHkgdmVyc2lvbiBvZiBjYWxsTWVt
YmVyRnVuY3Rpb24uCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0
c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgTlBBUEkgcGx1Zy1pbnMgYXJlIG5vdCBh
cHBsaWNhdGlvbiBwbHVnLWlucy4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQ
Qzo6OjpkZWNvZGUpOgorICAgICAgICBFbmNvZGUvZGVjb2RlIHRoZSBuZXcgaXNBcHBsaWNhdGlv
blBsdWdpbiBmaWVsZCBvbiBQbHVnaW5JbmZvLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3Jl
OjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3Rv
cmU6OmZpbmRQbHVnaW5Gb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZv
U3RvcmU6OmZpbmRQbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5oOgorICAgICAgICAoUGx1Z2luSW5mb1N0b3JlKToKKyAgICAgICAgR2l2ZSBQbHVn
aW5JbmZvU3RvcmUncyBmaW5kUGx1Z2luIG1ldGhvZCBhbmQgaXRzIHByaXZhdGUgaGVscGVyCisg
ICAgICAgIG1ldGhvZHMgYW4gYXJndW1lbnQgYWxsb3dpbmcgdGhlbSB0byBvbmx5IG1hdGNoIGFw
cGxpY2F0aW9uIHBsdWctaW5zLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIFJlbW92ZSBwZGZB
bmRQb3N0U2NyaXB0TUlNRVR5cGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpjYW5TaG93TUlNRVR5cGUp
OiBNb3ZlIHRvIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6
aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQpOiBNYWtlIHVzZSBvZiBXZWJDb3JlJ3MKKyAgICAgICAg
bmV3Zm91bmQga25vd2xlZGdlIG9mIFBERiBhbmQgUG9zdFNjcmlwdCBNSU1FIHR5cGVzLCBzbyB3
ZSBkb24ndCBoYXZlIHRvCisgICAgICAgIGR1cGxpY2F0ZSBpdCB1bm5lY2Vzc2FyaWx5IGluIFdl
YktpdDIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICBBZGQgY29k
ZSB3aGljaCB1c2VkIHRvIGJlIGluIFdlYkZyYW1lUHJveHk6OmNhblNob3dNSU1FVHlwZSwgYW5k
IGFkYXB0IGl0CisgICAgICAgIHRvIHVzZSBXZWJDb3JlJ3Mga25vd2xlZGdlIG9mIFBERiBhbmQg
UG9zdFNjcmlwdCBNSU1FIHR5cGVzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZmluZFBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICBBZGQgYW4gYXJndW1lbnQgYWxsb3dpbmcgZmluZFBsdWdpbiB0byBy
ZXN0cmljdCBpdHMgc2VhcmNoIHRvIG9ubHkgYXBwbGljYXRpb24gcGx1Zy1pbnMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgV2UgcHJldmlv
dXNseSBzdXBwb3J0ZWQgdGhlICJ0ZXh0L3BkZiIgTUlNRSB0eXBlIGZvciBQREZWaWV3Q29udHJv
bGxlciwKKyAgICAgICAgc28gU2ltcGxlUERGUGx1Z2luIGFuZCBQREZQbHVnaW4gc2hvdWxkIHN1
cHBvcnQgaXQgYXMgd2VsbC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUpOgorICAgICAgICBQcmV2aW91c2x5LCB0aGlzIGNh
bGxlciBkZXBlbmRlZCBvbiBwbHVnaW5EYXRhKCkgcmV0dXJuaW5nIG51bGwgaWYKKyAgICAgICAg
cGx1Zy1pbnMgd2VyZSBkaXNhYmxlZC4gU2luY2UgdGhhdCBpcyBubyBsb25nZXIgdGhlIGNhc2Us
IHdlIGhhdmUgdG8KKyAgICAgICAgY2hlY2sgaWYgd2UgY2FuIHVzZSBwbHVnLWlucywgYW5kIG90
aGVyd2lzZSBpZ25vcmUgbm9uLWFwcGxpY2F0aW9uLXBsdWctaW5zLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
cmVhdGVQbHVnaW4pOgorICAgICAgICBXaGVuIGdvaW5nIHRvIHNlYXJjaCBmb3IgYSBwbHVnLWlu
LCBhc2sgc3ViZnJhbWVMb2FkZXIgd2hldGhlciBvciBub3QKKyAgICAgICAgaXQncyBPSyB0byB1
c2Ugb3JkaW5hcnkgbm9uLWFwcGxpY2F0aW9uIHBsdWctaW5zLCBhbmQgcGFzcyB0aGF0IGluZm9y
bWF0aW9uCisgICAgICAgIG9uIHRvIHRoZSBVSVByb2Nlc3Mgd2hlbiBwZXJmb3JtaW5nIHRoZSBz
ZWFyY2guCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblBsdWdpbkhhbmRsZVJlc3BvbnNl
KToKKyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblNob3dNSU1F
VHlwZSk6CisgICAgICAgIEVuc3VyZSB0aGF0IGNhblNob3dNSU1FVHlwZSByZXR1cm5zIHRydWUg
aWYgd2UgaGF2ZSBhbiBhcHBsaWNhdGlvbiBwbHVnLWluCisgICAgICAgIHRoYXQgY2FuIGRpc3Bs
YXkgYSBwYXJ0aWN1bGFyIE1JTUUgdHlwZSwgZXZlbiBpZiB3ZSdyZSBub3QgYWxsb3dlZCB0byBs
b2FkIHBsdWctaW5zLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKTogUmVtb3ZlIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgUmVt
b3ZlIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMuIEluc3RlYWQsIGNvbnN1bHQgTUlNRVR5cGVS
ZWdpc3RyeS4KKwogMjAxMy0wNC0zMCAgRG9uZ3dvbyBKb3NodWEgSW0gIDxkdy5pbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkLCBFRkwgYnVpbGQgZml4IGFmdGVyIHIx
NDk0MTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxl
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdl
LmgKaW5kZXggMTczNTE4ZC4uNTRmNmYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE5Nyw2ICsxOTcsMTIgQEAgdm9pZCBjYWxs
TWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzNDxQMSwgUDIsIFAzLCBQND4mIGFyZ3MsIEFy
Z3VtZW50czM8UjEsIFIKICAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBh
cmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1lbnQ0LCByZXBseUFyZ3Mu
YXJndW1lbnQxLCByZXBseUFyZ3MuYXJndW1lbnQyLCByZXBseUFyZ3MuYXJndW1lbnQzKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUjEs
IHR5cGVuYW1lIFIyLCB0eXBlbmFtZSBSMz4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0
IEFyZ3VtZW50czU8UDEsIFAyLCBQMywgUDQsIFA1PiYgYXJncywgQXJndW1lbnRzMzxSMSwgUjIs
IFIzPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQoreworICAgIChvYmplY3Qt
PipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3MuYXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50
MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1lbnQ1LCByZXBseUFyZ3MuYXJndW1lbnQxLCBy
ZXBseUFyZ3MuYXJndW1lbnQyLCByZXBseUFyZ3MuYXJndW1lbnQzKTsKK30KKwogLy8gRGlzcGF0
Y2ggZnVuY3Rpb25zIHdpdGggZGVsYXllZCByZXBseSBhcmd1bWVudHMuCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUj4KIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9u
KGNvbnN0IEFyZ3VtZW50czAmLCBQYXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpp
bmRleCAwOTE5NzQ5Li5jMjcyNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9k
dWxlTWFjLm1tCkBAIC0zOTAsNiArMzkwLDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUkKICAg
ICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IHBsdWdpbi5pbmZvLmZpbGU7CiAgICAgaWYgKHBsdWdp
bi5pbmZvLmRlc2MuaXNOdWxsKCkpCiAgICAgICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBwbHVnaW4u
aW5mby5maWxlOworCisgICAgcGx1Z2luLmluZm8uaXNBcHBsaWNhdGlvblBsdWdpbiA9IGZhbHNl
OwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlZThjZmE4Li43ZWZmM2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY2
LDcgKzE2Niw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxNaW1lQ2xhc3NJbmZvPjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgTWltZUNsYXNzSW5mCiAKIHZvaWQgQXJndW1lbnRDb2Rl
cjxQbHVnaW5JbmZvPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGx1
Z2luSW5mbyYgcGx1Z2luSW5mbykKIHsKLSAgICBlbmNvZGVyIDw8IHBsdWdpbkluZm8ubmFtZSA8
PCBwbHVnaW5JbmZvLmZpbGUgPDwgcGx1Z2luSW5mby5kZXNjIDw8IHBsdWdpbkluZm8ubWltZXM7
CisgICAgZW5jb2RlciA8PCBwbHVnaW5JbmZvLm5hbWUgPDwgcGx1Z2luSW5mby5maWxlIDw8IHBs
dWdpbkluZm8uZGVzYyA8PCBwbHVnaW5JbmZvLm1pbWVzIDw8IHBsdWdpbkluZm8uaXNBcHBsaWNh
dGlvblBsdWdpbjsKIH0KICAgICAKIGJvb2wgQXJndW1lbnRDb2RlcjxQbHVnaW5JbmZvPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGx1Z2luSW5mbyYgcGx1Z2luSW5mbykKQEAg
LTE3OSw2ICsxNzksOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGx1Z2luSW5mbz46OmRlY29kZShB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFBsdWdpbkluZm8mIHBsdQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLm1pbWVzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5pc0Fw
cGxpY2F0aW9uUGx1Z2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcAppbmRleCBhYjg4MGJkLi4xZTE4ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTEyMiwx
MiArMTIyLDE1IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBQbHVnaW5JbmZvU3RvcmU6OnBs
dWdpbnMoKQogICAgIHJldHVybiBtX3BsdWdpbnM7CiB9CiAKLVBsdWdpbk1vZHVsZUluZm8gUGx1
Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3QKK1BsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBvbmx5QXBwbGljYXRpb25QbHVn
aW5zKSBjb25zdAogewogICAgIEFTU0VSVCghbWltZVR5cGUuaXNOdWxsKCkpOwogICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiA9IG1fcGx1Z2luc1tpXTsKKworICAgICAg
ICBpZiAob25seUFwcGxpY2F0aW9uUGx1Z2lucyAmJiAhcGx1Z2luLmluZm8uaXNBcHBsaWNhdGlv
blBsdWdpbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCBwbHVnaW4uaW5mby5taW1lcy5zaXplKCk7ICsraikgewogICAgICAg
ICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNsYXNzSW5mbyA9IHBsdWdpbi5pbmZvLm1p
bWVzW2pdOwpAQCAtMTM5LDE2ICsxNDIsMTkgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZv
U3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAg
IHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAKLVBsdWdpbk1vZHVsZUluZm8gUGx1Z2lu
SW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3Rv
cmU6OmZpbmRQbHVnaW5Gb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgb25seUFwcGxpY2F0aW9uUGx1Z2lucykgY29uc3QKIHsKICAgICBB
U1NFUlQoIWV4dGVuc2lvbi5pc051bGwoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwotICAgICAgICAKKworICAgICAgICBpZiAob25s
eUFwcGxpY2F0aW9uUGx1Z2lucyAmJiAhcGx1Z2luLmluZm8uaXNBcHBsaWNhdGlvblBsdWdpbikK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
cGx1Z2luLmluZm8ubWltZXMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNvbnN0IE1pbWVD
bGFzc0luZm8mIG1pbWVDbGFzc0luZm8gPSBwbHVnaW4uaW5mby5taW1lc1tqXTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1p
bWVDbGFzc0luZm8uZXh0ZW5zaW9uczsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGZp
bmQoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25zLmVuZCgpLCBleHRlbnNpb24pICE9IGV4
dGVuc2lvbnMuZW5kKCkpIHsKQEAgLTE5OSwxMyArMjA1LDEzIEBAIFBsdWdpbk1vZHVsZUluZm8g
UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJikKIAogI2VuZGlmCiAKLVBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5k
UGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkKK1BsdWdpbk1vZHVsZUlu
Zm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBvbmx5QXBwbGljYXRpb25QbHVnaW5zKQogewogICAgIGxvYWRQbHVnaW5z
SWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgd2UgY2FuIGdldCB0
aGUgcGx1Zy1pbiBiYXNlZCBvbiBpdHMgTUlNRSB0eXBlLgogICAgIGlmICghbWltZVR5cGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5kUGx1Z2luRm9y
TUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IGZp
bmRQbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSwgb25seUFwcGxpY2F0aW9uUGx1Z2lucyk7CiAg
ICAgICAgIGlmICghcGx1Z2luLnBhdGguaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gcGx1
Z2luOwogICAgIH0KQEAgLTIxMywxNCArMjE5LDE0IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2lu
SW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkK
ICAgICAvLyBOZXh0LCBjaGVjayBpZiBhbnkgcGx1Zy1pbnMgY2xhaW0gdG8gc3VwcG9ydCB0aGUg
VVJMIGV4dGVuc2lvbi4KICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gcGF0aEV4dGVuc2lvbih1cmwp
Lmxvd2VyKCk7CiAgICAgaWYgKCFleHRlbnNpb24uaXNOdWxsKCkgJiYgbWltZVR5cGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gZmluZFBsdWdpbkZvckV4
dGVuc2lvbihleHRlbnNpb24sIG1pbWVUeXBlKTsKKyAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBw
bHVnaW4gPSBmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbiwgbWltZVR5cGUsIG9ubHlB
cHBsaWNhdGlvblBsdWdpbnMpOwogICAgICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHBsdWdpbjsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmFsbHks
IHRyeSB0byBnZXQgdGhlIE1JTUUgdHlwZSBmcm9tIHRoZSBleHRlbnNpb24gaW4gYSBwbGF0Zm9y
bSBzcGVjaWZpYyBtYW5uZXIgYW5kIHVzZSB0aGF0LgogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9u
TWltZVR5cGUgPSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwogICAgICAgICBp
ZiAoIWV4dGVuc2lvbk1pbWVUeXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBQbHVnaW5Nb2R1
bGVJbmZvIHBsdWdpbiA9IGZpbmRQbHVnaW5Gb3JNSU1FVHlwZShleHRlbnNpb25NaW1lVHlwZSk7
CisgICAgICAgICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IGZpbmRQbHVnaW5Gb3JNSU1F
VHlwZShleHRlbnNpb25NaW1lVHlwZSwgb25seUFwcGxpY2F0aW9uUGx1Z2lucyk7CiAgICAgICAg
ICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgbWltZVR5
cGUgPSBleHRlbnNpb25NaW1lVHlwZTsKICAgICAgICAgICAgICAgICByZXR1cm4gcGx1Z2luOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
aAppbmRleCBmYzViOTA2Li4wNWFlYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0
aGUgZ2l2ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhl
IGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRo
ZQogICAgIC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZp
bGxlZCBpbiB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBm
aW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGJvb2wgb25seUFwcGxpY2F0aW9uUGx1Z2lucyA9IGZhbHNlKTsKIAogICAgIC8v
IFJldHVybnMgdGhlIGluZm8gZm9yIHRoZSBwbHVnLWluIHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBp
ZGVudGlmaWVyLgogICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbldpdGhCdW5kbGVJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcik7CkBAIC03Niw4ICs3Niw4IEBA
IHB1YmxpYzoKICAgICBQbHVnaW5JbmZvU3RvcmVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7Ci0gICAgUGx1Z2lu
TW9kdWxlSW5mbyBmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVn
aW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIG9ubHlBcHBsaWNhdGlv
blBsdWdpbnMpIGNvbnN0OworICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbkZvckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBvbmx5
QXBwbGljYXRpb25QbHVnaW5zKSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFBsdWdpbnNJZk5lY2Vz
c2FyeSgpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRQbHVnaW4oVmVjdG9yPFBsdWdpbk1vZHVsZUlu
Zm8+JiBwbHVnaW5zLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGRjOTgyNWEuLjNjZjk4MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTkwMSwxOCArOTAxLDYgQEAgRG93bmxv
YWRQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlRG93bmxvYWRQcm94eSgpCiAgICAgcmV0dXJuIGVu
c3VyZVNoYXJlZFdlYlByb2Nlc3MoKS0+Y3JlYXRlRG93bmxvYWRQcm94eSgpOwogfQogCi0vLyBG
SVhNRTogVGhpcyBpcyBub3QgdGhlIGlkZWFsIHBsYWNlIGZvciB0aGlzIGZ1bmN0aW9uLgotSGFz
aFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gV2ViQ29udGV4dDo6cGRmQW5kUG9zdFNjcmlw
dE1JTUVUeXBlcygpCi17Ci0gICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbWlt
ZVR5cGVzOwotCi0gICAgbWltZVR5cGVzLmFkZCgiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgbWlt
ZVR5cGVzLmFkZCgiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgIG1pbWVUeXBlcy5hZGQo
InRleHQvcGRmIik7Ci0gICAgCi0gICAgcmV0dXJuIG1pbWVUeXBlczsKLX0KLQogdm9pZCBXZWJD
b250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
KQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKaW5kZXggODY3NTg4ZC4uYjZlMDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCkBAIC0yMTIsOCArMjEyLDYgQEAgcHVibGljOgogICAgIFdlYkhpc3RvcnlD
bGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiBtX2hpc3RvcnlDbGllbnQ7IH0KICAgICBX
ZWJDb250ZXh0Q2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCi0gICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IHBkZkFuZFBvc3RTY3JpcHRNSU1F
VHlwZXMoKTsKLQogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBXZWJCYXR0ZXJ5TWFu
YWdlclByb3h5KiBiYXR0ZXJ5TWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9iYXR0ZXJ5
TWFuYWdlclByb3h5LmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAppbmRleCAzNTkwZmZkLi5iZTdmNjM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBl
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC05NSwxNiArOTYsNyBAQCBib29sIFdlYkZyYW1lUHJveHk6OmNhblNob3dN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9wYWdlLT5jYW5TaG93TUlNRVR5cGUo
bWltZVR5cGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAvLyBPbiBNYWMsIHdlIGNhbiBzaG93IFBERnMuCi0gICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBXZWJDb250ZXh0OjpwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVz
KCkuY29udGFpbnMobWltZVR5cGUpICYmICFXZWJDb250ZXh0OjpvbWl0UERGU3VwcG9ydCgpOwot
I2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2FuU2hvd01J
TUVUeXBlKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdT
dGFuZGFsb25lSW1hZ2VEb2N1bWVudCgpIGNvbnN0CkBAIC0xMjMsNyArMTE1LDcgQEAgYm9vbCBX
ZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0CiAgICAgaWYgKG1f
TUlNRVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
V2ViQ29udGV4dDo6cGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpLmNvbnRhaW5zKG1fTUlNRVR5
cGUpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVU
eXBlKG1fTUlNRVR5cGUpOwogfQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA5NWE2MzVjLi4yYWI2YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTMzLDYgKzkzMywxMyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAg
ICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSAmJiBtX3BhZ2VHcm91cC0+cHJlZmVyZW5jZXMo
KS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gT24g
TWFjLCB3ZSBjYW4gc2hvdyBQREZzLgorICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9y
UG9zdFNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSAmJiAhV2ViQ29udGV4dDo6b21pdFBERlN1cHBv
cnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMzcwLDE0ICsxMzc3LDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50KQogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBw
YWdlVVJMU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIFN0cmluZyYgbmV3TWltZVR5cGUsIHVp
bnQzMl90JiBwbHVnaW5Mb2FkUG9saWN5KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4o
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgY29uc3Qg
Ym9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMsIFN0cmluZyYgcGx1Z2luUGF0aCwgU3Ry
aW5nJiBuZXdNaW1lVHlwZSwgdWludDMyX3QmIHBsdWdpbkxvYWRQb2xpY3kpCiB7CiAgICAgTUVT
U0FHRV9DSEVDS19VUkwodXJsU3RyaW5nKTsKIAogICAgIG5ld01pbWVUeXBlID0gbWltZVR5cGUu
bG93ZXIoKTsKIAogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFs
bHk7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+
cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJMKCksIHVy
bFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250
ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VS
TCgpLCB1cmxTdHJpbmcpLCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpOwogICAgIGlmICgh
cGx1Z2luLnBhdGgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDcxYmYzNTguLjI5ODhjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEwNTMsNyArMTA1Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgU3RyaW5nJiBwbHVnaW5QYXRoLCBT
dHJpbmcmIG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSk7CisgICAgdm9p
ZCBmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxT
dHJpbmcsIGNvbnN0IGJvb2wgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zLCBTdHJpbmcmIHBs
dWdpblBhdGgsIFN0cmluZyYgbmV3TUlNRVR5cGUsIHVpbnQzMl90JiBwbHVnaW5Mb2FkUG9saWN5
KTsKICNlbmRpZgogCiAgICAgUGFnZUNsaWVudCogbV9wYWdlQ2xpZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjFkYjQ2
Yi4uNDNmN2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTUsNyArMzE1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgRmlu
ZFBsdWdpbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nLCBXVEY6
OlN0cmluZyBmcmFtZVVSTFN0cmluZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykgLT4gKFdU
Rjo6U3RyaW5nIHBsdWdpblBhdGgsIFdURjo6U3RyaW5nIG5ld01JTUVUeXBlLCB1aW50MzJfdCBw
bHVnaW5Mb2FkUG9saWN5KQorICAgIEZpbmRQbHVnaW4oV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdU
Rjo6U3RyaW5nIHVybFN0cmluZywgV1RGOjpTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFdURjo6U3Ry
aW5nIHBhZ2VVUkxTdHJpbmcsIGJvb2wgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zKSAtPiAo
V1RGOjpTdHJpbmcgcGx1Z2luUGF0aCwgV1RGOjpTdHJpbmcgbmV3TUlNRVR5cGUsIHVpbnQzMl90
IHBsdWdpbkxvYWRQb2xpY3kpCiAjZW5kaWYKIAogICAgIERpZFVwZGF0ZUluV2luZG93U3RhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1Np
bXBsZVBERlBsdWdpbi5tbQppbmRleCAyMTMyNWMyLi5iM2Q3MDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5t
bQpAQCAtMTc4LDEyICsxNzgsMTkgQEAgUGx1Z2luSW5mbyBTaW1wbGVQREZQbHVnaW46OnBsdWdp
bkluZm8oKQogewogICAgIFBsdWdpbkluZm8gaW5mbzsKICAgICBpbmZvLm5hbWUgPSBidWlsdElu
UERGUGx1Z2luTmFtZSgpOworICAgIGluZm8uaXNBcHBsaWNhdGlvblBsdWdpbiA9IHRydWU7CiAK
ICAgICBNaW1lQ2xhc3NJbmZvIHBkZk1pbWVDbGFzc0luZm87CiAgICAgcGRmTWltZUNsYXNzSW5m
by50eXBlID0gImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgcGRmTWltZUNsYXNzSW5mby5kZXNjID0g
cGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmV4dGVu
c2lvbnMuYXBwZW5kKCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZChwZGZNaW1lQ2xhc3NJ
bmZvKTsKKyAgICAKKyAgICBNaW1lQ2xhc3NJbmZvIHRleHRQREZNaW1lQ2xhc3NJbmZvOworICAg
IHRleHRQREZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAidGV4dC9wZGYiOworICAgIHRleHRQREZNaW1l
Q2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOworICAgIHRleHRQ
REZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiKTsKKyAgICBpbmZvLm1pbWVz
LmFwcGVuZCh0ZXh0UERGTWltZUNsYXNzSW5mbyk7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHBvc3RT
Y3JpcHRNaW1lQ2xhc3NJbmZvOwogICAgIHBvc3RTY3JpcHRNaW1lQ2xhc3NJbmZvLnR5cGUgPSBw
b3N0U2NyaXB0TUlNRVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDg4MDA1OTUuLmM1NjVlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xNDI1LDcgKzE0MjUsOSBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdAogICAgIGJvb2wgcGx1
Z0luU3VwcG9ydHNNSU1FVHlwZSA9IGZhbHNlOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0g
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGx1Z2luRGF0YSgpKSB7Ci0gICAgICAgICAgICBpZiAocGx1
Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpCisgICAgICAgICAgICBpZiAocGx1
Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lu
cykgJiYgd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigp
LT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICAgICAgICAg
ICAgICBwbHVnSW5TdXBwb3J0c01JTUVUeXBlID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6Ok9ubHlB
cHBsaWNhdGlvblBsdWdpbnMpKQogICAgICAgICAgICAgICAgIHBsdWdJblN1cHBvcnRzTUlNRVR5
cGUgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk4YjU5ODUuLjUyZjRjODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzMiw3ICs1MzIs
OCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBm
cmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9
IGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
VVJMKCkuc3RyaW5nKCk7CiAgICAgU3RyaW5nIHBhZ2VVUkxTdHJpbmcgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmco
KTsKIAotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdp
bihwYXJhbWV0ZXJzLm1pbWVUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgZnJhbWVVUkxT
dHJpbmcsIHBhZ2VVUkxTdHJpbmcpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2lu
OjpSZXBseShwbHVnaW5QYXRoLCBuZXdNSU1FVHlwZSwgcGx1Z2luTG9hZFBvbGljeSkpKSB7Cisg
ICAgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMgPSAhZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0
YW50aWF0ZVBsdWdpbik7CisgICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpGaW5kUGx1Z2luKHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygp
LCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZywgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVn
aW5zKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6UmVwbHkocGx1Z2luUGF0
aCwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3kpKSkgewogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKQEAgLTU1Niw4ICs1NTcsNyBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6
Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAg
IGlmIChwbHVnaW5QYXRoLmlzTnVsbCgpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBT
dHJpbmcgcGF0aCA9IHBhcmFtZXRlcnMudXJsLnBhdGgoKTsKLSAgICAgICAgaWYgKChwYXJhbWV0
ZXJzLm1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IHBhcmFtZXRlcnMubWltZVR5cGUg
PT0gImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKQotICAgICAgICAgICAgfHwgKHBhcmFtZXRlcnMu
bWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpIHx8IHBh
dGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkpKSB7CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWltZVR5cGUpIHx8IChw
YXJhbWV0ZXJzLm1pbWVUeXBlLmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0aCgiLnBkZiIsIGZh
bHNlKSB8fCBwYXRoLmVuZHNXaXRoKCIucHMiLCBmYWxzZSkpKSkgewogI2lmIEVOQUJMRShQREZL
SVRfUExVR0lOKQogICAgICAgICAgICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBQREZQbHVnaW46OmNyZWF0ZShmcmFtZSk7CkBAIC0zNzY5LDggKzM3
NjksMTAgQEAgYm9vbCBXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBTdHJpbmcgcGx1Z2luUGF0aDsKICAgICBTdHJp
bmcgbmV3TUlNRVR5cGU7CiAgICAgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeTsKLSAgICAKLSAg
ICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW4ocmVzcG9u
c2UubWltZVR5cGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLnVybCgpLnN0
cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblBhdGgsIG5ld01JTUVUeXBlLCBwbHVnaW5Mb2FkUG9s
aWN5KSkpCisKKyAgICAvLyBGSVhNRTogSXMgaXQgcmlnaHQgdG8gZGVwZW5kIG9uIHRoZSBtYWlu
IGZyYW1lIGhlcmU/CisgICAgYm9vbCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMgPSAhbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQ
bHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbik7CisgICAgaWYgKCFzZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHJlc3BvbnNlLm1pbWVUeXBlKCksIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCksIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBsdWdpblBhdGgsIG5ld01JTUVUeXBlLCBw
bHVnaW5Mb2FkUG9saWN5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBw
bHVnaW5Mb2FkUG9saWN5ICE9IFBsdWdpbk1vZHVsZUJsb2NrZWQgJiYgIXBsdWdpblBhdGguaXNF
bXB0eSgpOwpAQCAtMzkxOSw3ICszOTIxLDExIEBAIGJvb2wgV2ViUGFnZTo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBtX3BhZ2UtPnBsdWdpbkRhdGEoKSkg
ewotICAgICAgICBpZiAocGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShNSU1FVHlwZSkgJiYg
bV9wYWdlLT5zZXR0aW5ncygpLT5hcmVQbHVnaW5zRW5hYmxlZCgpKQorICAgICAgICBpZiAocGx1
Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZShNSU1FVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lu
cykgJiYgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigp
LT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgIC8vIFdlIGNhbiB1c2UgYXBwbGljYXRpb24gcGx1Z2lu
cyBldmVuIGlmIHBsdWdpbnMgYXJlbid0IGVuYWJsZWQuCisgICAgICAgIGlmIChwbHVnaW5EYXRh
LT5zdXBwb3J0c01pbWVUeXBlKE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25Q
bHVnaW5zKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzJmNDFkOC4uNjA3MTQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MzMs
MTAgKzYzMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PiBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgc2F2ZVBE
RlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYg
cGRmVVVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KaW5kZXggZDRiYzU4Yy4uNzQzNzcxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTQsNiAr
NTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05l
dHdvcmtpbmdDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CkBAIC0xMDQsOSArMTA1LDkgQEAgdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQogCiAgICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3VwcG9y
dCJdOwogICAgIGlmICghc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgIW9taXRQREZTdXBwb3J0KSB7
Ci0gICAgICAgIC8vIFdlIHdhbnQgdG8gdXNlIGEgUERGIHZpZXcgaW4gdGhlIFVJIHByb2Nlc3Mg
Zm9yIFBERiBNSU1FIHR5cGVzLgotICAgICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBtaW1lVHlwZXMgPSBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7Ci0gICAgICAgIGZv
ciAoSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46Oml0ZXJhdG9yIGl0ID0gbWltZVR5
cGVzLmJlZ2luKCk7IGl0ICE9IG1pbWVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgLy8gSWYg
d2UgZG9uJ3QgaGF2ZSBQREZQbHVnaW4sIHdlIHdpbGwgdXNlIGEgUERGIHZpZXcgaW4gdGhlIFVJ
IHByb2Nlc3MgZm9yIFBERiBhbmQgUG9zdFNjcmlwdCBNSU1FIHR5cGVzLgorICAgICAgICBIYXNo
U2V0PFN0cmluZz4gbWltZVR5cGVzID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGQW5kUG9zdFNj
cmlwdE1JTUVUeXBlcygpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Ig
aXQgPSBtaW1lVHlwZXMuYmVnaW4oKTsgaXQgIT0gbWltZVR5cGVzLmVuZCgpOyArK2l0KQogICAg
ICAgICAgICAgbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zLmFkZCgqaXQpOwog
ICAgIH0KIH0KQEAgLTEwMDIsMTYgKzEwMDMsNCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1Rv
UERGRnJvbVBERkRvY3VtZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBQREZEb2N1bWVudCAqcAog
ICAgIH0KIH0KIAotLy8gRklYTUU6IFRoaXMgaXMgbm90IHRoZSBpZGVhbCBwbGFjZSBmb3IgdGhp
cyBmdW5jdGlvbiAoYW5kIG5vdyBpdCdzIGR1cGxpY2F0ZWQgaGVyZSBhbmQgaW4gV2ViQ29udGV4
dE1hYykuCi1IYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBXZWJQYWdlOjpwZGZBbmRQ
b3N0U2NyaXB0TUlNRVR5cGVzKCkKLXsKLSAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBtaW1lVHlwZXM7Ci0gICAgCi0gICAgbWltZVR5cGVzLmFkZCgiYXBwbGljYXRpb24vcGRm
Iik7Ci0gICAgbWltZVR5cGVzLmFkZCgiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgIG1p
bWVUeXBlcy5hZGQoInRleHQvcGRmIik7Ci0gICAgCi0gICAgcmV0dXJuIG1pbWVUeXBlczsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200507</attachid>
            <date>2013-05-03 16:38:44 -0700</date>
            <delta_ts>2013-05-16 14:50:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-no-plugin.diff</filename>
            <type>text/plain</type>
            <size>36787</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNzlkOWQyLi5mN2FhYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTMtMDUtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2lucyBkb24ndCBsb2FkIHdoZW4gcGx1Z2lucyBhcmUgZGlzYWJsZWQs
IGJ1dCB0aGV5IHNob3VsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzU3OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExNjUwMTk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgdG8gbG9hZCAiYXBwbGljYXRpb24iIHBsdWctaW5zIGV2ZW4gaWYgc2V0dGluZ3Mgb3IgdGhl
IEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIHNheSB0aGF0IHBsdWctaW5zIHNob3VsZCBiZSBk
aXNhYmxlZCwgcHJvdmlkaW5nIGEgbWVjaGFuaXNtIGZvciBXZWJLaXQqIHRvIG9mZmVyIGJ1aWx0
LWluCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFwcGVucyB0byB1c2UgdGhlIHBsdWct
aW4gaW5mcmFzdHJ1Y3R1cmUsIGFuZCB3aGljaCBhbHNvIGRvZXNuJ3QKKyAgICAgICAgdW5leHBl
Y3RlZGx5IGRpc2FwcGVhciBmb3IgdXNlcnMgd2l0aCBwbHVnLWlucyBvZmYuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgRXhwb3J0IFN1YmZyYW1lTG9hZGVyOjphbGxvd1Bs
dWdpbnMoKS4KKyAgICAgICAgVXBkYXRlIHNpZ25hdHVyZSBmb3IgUGx1Z2luRGF0YTo6c3VwcG9y
dHNNaW1lVHlwZSB0byBpbmNsdWRlIHRoZSBBbGxvd2VkUGx1Z2luVHlwZXMgYXJndW1lbnQuCisK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgTG9hZCBQbHVnaW5E
YXRhIGV2ZW4gaWYgcGx1Zy1pbnMgYXJlIGRpc2FibGVkLCBidXQgaWYgdGhhdCBpcyB0aGUgY2Fz
ZSwgb25seQorICAgICAgICBjcmVhdGUgYSBQbHVnaW5Eb2N1bWVudCBmb3IgYXBwbGljYXRpb24g
cGx1Zy1pbnMuCisKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgIERv
bid0IGJhaWwgaWYgcGx1Zy1pbnMgYXJlIGRpc2FibGVkLCBiZWNhdXNlIHdlIGNvdWxkIHN0aWxs
IGJlIGEgUGx1Z2luRG9jdW1lbnQKKyAgICAgICAgZm9yIGFuIGFwcGxpY2F0aW9uIHBsdWctaW4u
CisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGx1
Z2luRGF0YSk6CisgICAgICAgIEFsbG93IFBsdWdpbkRhdGEgdG8gYmUgY29uc3RydWN0ZWQgZXZl
biBpZiBwbHVnLWlucyBhcmUgZGlzYWJsZWQsIGFzIHRoZXJlIG1pZ2h0CisgICAgICAgIGJlIGFw
cGxpY2F0aW9uIHBsdWctaW5zIHRoYXQgd2Ugd2FudCB0byBsb2FkIGFueXdheS4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy9NSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKToKKyAgICAg
ICAgT24gTWFjLCBpZiB3ZSBoYXZlIFBERlBsdWdpbiwgd2UgY2FuIHN1cHBvcnQgUERGIGFuZCBQ
b3N0U2NyaXB0IHdpdGggYSBuYXRpdmUgYXBwbGljYXRpb24gcGx1Zy1pbi4KKworICAgICAgICAq
IHBsdWdpbnMvUGx1Z2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpz
dXBwb3J0c01pbWVUeXBlKToKKyAgICAgICAgQWRkIGFuIEFsbG93ZWRQbHVnaW5UeXBlcyBhcmd1
bWVudCB0byBzdXBwb3J0c01pbWVUeXBlLCBhbGxvd2luZyBjYWxsZXJzIHRvIHNwZWNpZnkKKyAg
ICAgICAgd2hldGhlciB0aGV5IGFyZSBsb29raW5nIGZvciBhbnkgcGx1Zy1pbiwgb3IgYXJlIGxv
b2tpbmcgb25seSBmb3IgYXBwbGljYXRpb24gcGx1Zy1pbnMuCisKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbkRhdGEuaDoKKyAgICAgICAgKFBsdWdpbkluZm8pOiBBZGRlZCBhbiBpc0FwcGxpY2F0
aW9uUGx1Z2luIGZpZWxkLCB0byBzcGVjaWZ5IHdoZXRoZXIgdGhpcyBpcyBhICJidWlsdC1pbiIg
cGx1Zy1pbi4KKyAgICAgICAgKFBsdWdpbkRhdGEpOiBBZGQgdGhlIGFmb3JlbWVudGlvbmVkIEFs
bG93ZWRQbHVnaW5UeXBlcyBlbnVtIGFuZCB0aGUgYXJndW1lbnQgdG8gc3VwcG9ydHNNaW1lVHlw
ZS4KKwogMjAxMy0wNS0wMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEdTdHJlYW1lciBsb2cgY3Jhc2hlcyBpbiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIGJlY2F1c2Ugb2YgdW5pbml0aWFsaXplZCBj
YXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhZGYwZDBjLi42M2YyNDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMzAwLDYgKzMwMCw3IEBAIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxNnJlc3BvbnNlUmVjZWl2ZWRFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNlJlc291
CiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMThhZGRBcmNoaXZlUmVzb3VyY2VFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfMTVBcmNoaXZlUmVzb3VyY2VFRUUKIF9fWk43V2ViQ29yZTE0Rm9ybUNv
bnRyb2xsZXIyMmdldFJlZmVyZW5jZWRGaWxlUGF0aHNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJp
bmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxv
YWRlcjMyZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFUktOU18yM0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRQorX19aTjdXZWJDb3JlMTRTdWJmcmFtZUxvYWRlcjEyYWxsb3dQbHVnaW5z
RU5TXzI4UmVhc29uRm9yQ2FsbGluZ0FsbG93UGx1Z2luc0UKIF9fWk43V2ViQ29yZTE0Y29va2ll
c0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVM1XwogX19a
TjdXZWJDb3JlMTRzZWxlY3Rpb25JbWFnZUVQTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTE2U2Ny
aXB0Q29udHJvbGxlcjE3amF2YVNjcmlwdENvbnRleHRFdgpAQCAtMTI1MCw3ICsxMjUxLDcgQEAg
X19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExcGVyc2lzdGVuY2VFdgogX19aTks3V2ViQ29yZTEw
Q3JlZGVudGlhbDR1c2VyRXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWw3aXNFbXB0eUV2CiBf
X1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsOHBhc3N3b3JkRXYKLV9fWk5LN1dlYkNvcmUxMFBsdWdp
bkRhdGExNnN1cHBvcnRzTWltZVR5cGVFUktOM1dURjZTdHJpbmdFCitfX1pOSzdXZWJDb3JlMTBQ
bHVnaW5EYXRhMTZzdXBwb3J0c01pbWVUeXBlRVJLTjNXVEY2U3RyaW5nRU5TMF8xOEFsbG93ZWRQ
bHVnaW5UeXBlc0UKIF9fWk5LN1dlYkNvcmUxMFJlbmRlclRleHQxNmxpbmVzQm91bmRpbmdCb3hF
dgogX19aTks3V2ViQ29yZTEwUmVuZGVyVGV4dDlmaXJzdFJ1blhFdgogX19aTks3V2ViQ29yZTEw
UmVuZGVyVGV4dDlmaXJzdFJ1bllFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKaW5kZXggOTcwYzNiNS4uMzFiZDY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCkBAIC0zOTcsMTIgKzM5NywxNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBG
cmFtZQogI2VuZGlmCiAKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gMDsKLSAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVy
KCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgIFBsdWdp
bkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRh
OjpPbmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgp
KSB7CisgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93
UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICAgICAgYWxsb3dl
ZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6QWxsUGx1Z2luczsKKwogICAgICAgICBwbHVnaW5E
YXRhID0gZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpOworICAgIH0KIAogICAgIC8vIFBERiBp
cyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92ZXJyaWRlIGJ1aWx0LWlu
IHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1lIHRvIHRha2Ugb3ZlciBh
bGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KLSAgICBpZiAoKE1JTUVUeXBlUmVnaXN0cnk6Omlz
UERGT3JQb3N0U2NyaXB0TUlNRVR5cGUodHlwZSkpICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0
YS0+c3VwcG9ydHNNaW1lVHlwZSh0eXBlKSkKKyAgICBpZiAoKE1JTUVUeXBlUmVnaXN0cnk6Omlz
UERGT3JQb3N0U2NyaXB0TUlNRVR5cGUodHlwZSkpICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0
YS0+c3VwcG9ydHNNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKQogICAgICAgICBy
ZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICAgICBpZiAoSW1hZ2U6
OnN1cHBvcnRzVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgdXJsKTsKQEAgLTQxOCw3ICs0MjMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBE
T01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFt
ZQogICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBleGNlcHQgdGV4dC9wbGFpbiBjYW4gYmUgb3ZlcnJp
ZGRlbiBieSBwbHVnaW5zLiBJbiBwYXJ0aWN1bGFyLCBBZG9iZSBTVkcgVmlld2VyIHNob3VsZCBi
ZSB1c2VkIGZvciBTVkcsIGlmIGluc3RhbGxlZC4KICAgICAvLyBEaXNhbGxvd2luZyBwbHVnLWlu
cyB0byB1c2UgdGV4dC9wbGFpbiBwcmV2ZW50cyBwbHVnLWlucyBmcm9tIGhpamFja2luZyBhIGZ1
bmRhbWVudGFsIHR5cGUgdGhhdCB0aGUgYnJvd3NlciBpcyBleHBlY3RlZCB0byBoYW5kbGUsCiAg
ICAgLy8gYW5kIGFsc28gc2VydmVzIGFzIGFuIG9wdGltaXphdGlvbiB0byBwcmV2ZW50IGxvYWRp
bmcgdGhlIHBsdWctaW4gZGF0YWJhc2UgaW4gdGhlIGNvbW1vbiBjYXNlLgotICAgIGlmICh0eXBl
ICE9ICJ0ZXh0L3BsYWluIiAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWlt
ZVR5cGUodHlwZSkpCisgICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmIHBsdWdpbkRhdGEg
JiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMp
KQogICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKICAg
ICBpZiAoaXNUZXh0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
aW5kZXggMThkZDNmZi4uOGNmYzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBl
bmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5z
ZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MgfHwgIWZyYW1lLT5sb2FkZXIoKS0+c3ViZnJh
bWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpCisg
ICAgaWYgKCFzZXR0aW5ncykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRl
eCBhYzE2MWMzLi4yYzViZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAKQEAgLTE0Nyw3ICsxNDcsNiBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xv
YWRhYmxlKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbgogCiBib29s
IFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQogewotCiAgICAgLy8gQXBwbGljYXRpb24gcGx1Zy1p
bnMgYXJlIHBsdWctaW5zIGltcGxlbWVudGVkIGJ5IHRoZSB1c2VyIGFnZW50LCBmb3IgZXhhbXBs
ZSBRdCBwbHVnLWlucywKICAgICAvLyBhcyBvcHBvc2VkIHRvIHRoaXJkLXBhcnR5IGNvZGUgc3Vj
aCBhcyBGbGFzaC4gVGhlIHVzZXIgYWdlbnQgZGVjaWRlcyB3aGV0aGVyIG9yIG5vdCB0aGV5IGFy
ZQogICAgIC8vIHBlcm1pdHRlZCwgcmF0aGVyIHRoYW4gV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggMjNhMDgyZS4uMTUwZWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01MDYsOCArNTA2
LDYgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCkKIAogUGx1Z2luRGF0
YSogUGFnZTo6cGx1Z2luRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtYWluRnJhbWUoKS0+bG9h
ZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlh
dGVQbHVnaW4pKQotICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1fcGx1Z2luRGF0YSkKICAg
ICAgICAgbV9wbHVnaW5EYXRhID0gUGx1Z2luRGF0YTo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVy
biBtX3BsdWdpbkRhdGEuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9NSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tCmluZGV4IDM3OTJiNWEuLmQyMmUyYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tCkBA
IC01OSw4ICs1OSwxNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB3a0dldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKHR5cGUpOwogfQogCi1ib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJpbmcmKQorYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSkKIHsKKyNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKKyAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgdGVzdCBpZiB3ZSdyZSBhY3R1YWxseSBnb2luZyB0byB1c2UgUERGUGx1Z2lu
LAorICAgIC8vIGJ1dCB3ZSBvbmx5IGtub3cgdGhhdCBpbiBXZWJLaXQyIGF0IHRoZSBtb21lbnQu
IFRoaXMgaXMgbm90IGEgcHJvYmxlbQorICAgIC8vIGluIHByYWN0aWNlIGJlY2F1c2UgaWYgd2Ug
ZG9uJ3QgaGF2ZSBQREZQbHVnaW4gYW5kIHdlIGdvIHRvIGluc3RhbnRpYXRlIHRoZQorICAgIC8v
IHBsdWdpbiwgdGhlcmUgd29uJ3QgZXhpc3QgYW4gYXBwbGljYXRpb24gcGx1Z2luIHN1cHBvcnRp
bmcgdGhlc2UgTUlNRSB0eXBlcy4KKyAgICBpZiAoaXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShN
SU1FVHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCmluZGV4IGNjZGYxMGQu
LmZjNzE0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcApAQCAtNDQsMTEg
KzQ0LDEyIEBAIFBsdWdpbkRhdGE6OlBsdWdpbkRhdGEoY29uc3QgUGFnZSogcGFnZSkKICAgICB9
CiB9CiAKLWJvb2wgUGx1Z2luRGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdAorYm9vbCBQbHVnaW5EYXRhOjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IEFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlw
ZXMpIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWltZXMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGlmIChtX21pbWVzW2ldLnR5cGUgPT0gbWltZVR5cGUpCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fbWltZXNbaV0udHlwZSA9PSBtaW1lVHlwZSAmJiAoYWxsb3dlZFBsdWdpblR5cGVzID09IEFs
bFBsdWdpbnMgfHwgbV9wbHVnaW5zW21fbWltZVBsdWdpbkluZGljZXNbaV1dLmlzQXBwbGljYXRp
b25QbHVnaW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCA2NGZhNGI3Li5m
ZWM3YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNDUsNiArNDUsNyBA
QCBzdHJ1Y3QgUGx1Z2luSW5mbyB7CiAgICAgU3RyaW5nIGZpbGU7CiAgICAgU3RyaW5nIGRlc2M7
CiAgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOworICAgIGJvb2wgaXNBcHBsaWNhdGlv
blBsdWdpbjsKIH07CiAKIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRo
ZSBmdXR1cmUKQEAgLTU1LDggKzU2LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UGx1
Z2luSW5mbz4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnM7IH0KICAgICBjb25z
dCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzKCkgY29uc3QgeyByZXR1cm4gbV9taW1lczsg
fQogICAgIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBtaW1lUGx1Z2luSW5kaWNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbWltZVBsdWdpbkluZGljZXM7IH0KLSAgICAKLSAgICBib29sIHN1cHBvcnRzTWlt
ZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CisKKyAgICBlbnVtIEFsbG93ZWRQ
bHVnaW5UeXBlcyB7CisgICAgICAgIEFsbFBsdWdpbnMsCisgICAgICAgIE9ubHlBcHBsaWNhdGlv
blBsdWdpbnMKKyAgICB9OworCisgICAgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IEFsbG93ZWRQbHVnaW5UeXBlcykgY29uc3Q7CiAgICAgU3RyaW5n
IHBsdWdpbk5hbWVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKICAg
ICBTdHJpbmcgcGx1Z2luRmlsZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWRjYzExNi4uZWZhNDE4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA1LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFBERlBsdWdpbnMgZG9uJ3QgbG9hZCB3aGVuIHBs
dWdpbnMgYXJlIGRpc2FibGVkLCBidXQgdGhleSBzaG91bGQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMTY1MDE5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYkJh
c2VQbHVnaW5QYWNrYWdlIGdldFBsdWdpbkluZm9Gcm9tUExpc3RzXSk6CisgICAgICAgICogUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBl
UGx1Z2luUGFja2FnZSBnZXRQbHVnaW5JbmZvRnJvbVJlc291cmNlc10pOgorICAgICAgICBOb3Ro
aW5nIGxvYWRlZCB2aWEgV2ViQmFzZVBsdWdpblBhY2thZ2Ugb3IgV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlCisgICAgICAgIGlzIGFuIGFwcGxpY2F0aW9uIHBsdWdpbi4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9jdW1l
bnRTb3VyY2VdKToKKyAgICAgICAgUHJldmlvdXNseSwgdGhpcyBjYWxsZXIgZGVwZW5kZWQgb24g
cGx1Z2luRGF0YSgpIHJldHVybmluZyBudWxsIGlmCisgICAgICAgIHBsdWctaW5zIHdlcmUgZGlz
YWJsZWQuIFNpbmNlIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLCB3ZSBoYXZlIHRvCisgICAg
ICAgIGNoZWNrIGlmIHdlIGNhbiB1c2UgcGx1Zy1pbnMsIGFuZCBvdGhlcndpc2UgaWdub3JlIG5v
bi1hcHBsaWNhdGlvbi1wbHVnLWlucy4KKwogMjAxMS0wNS0wMSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTWFjXSBXZWJLaXQgZG9lc24ndCBlbmFibGUgb3Ig
ZGlzYWJsZSBhdXRvY29ycmVjdGlvbnMgd2hlbiBzeXN0ZW0gcHJlZmVyZW5jZXMgYXJlIGNoYW5n
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBh
Y2thZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdl
Lm1tCmluZGV4IGViMDVmMjcuLjE5ODRhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMjYzLDYgKzI2Myw4IEBAIHN0YXRp
YyBOU1N0cmluZyAqcGF0aEJ5UmVzb2x2aW5nU3ltbGlua3NBbmRBbGlhc2VzKE5TU3RyaW5nICp0
aGVQYXRoKQogICAgICAgICBkZXNjcmlwdGlvbiA9IGZpbGVuYW1lOwogICAgIHBsdWdpbkluZm8u
ZGVzYyA9IGRlc2NyaXB0aW9uOwogCisgICAgcGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2lu
ID0gZmFsc2U7CisKICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDUwMjRkYjQu
LjU4YjUxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5QYWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5QYWNrYWdlLm1tCkBAIC0xNDQsNiArMTQ0LDggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgICAgaWYgKCF0aGVOYW1lKQogICAgICAgICB0aGVOYW1lID0gZmlsZW5hbWU7
CiAgICAgcGx1Z2luSW5mby5uYW1lID0gdGhlTmFtZTsKKworICAgIHBsdWdpbkluZm8uaXNBcHBs
aWNhdGlvblBsdWdpbiA9IGZhbHNlOwogICAgIAogICAgIFtzZWxmIGNsb3NlUmVzb3VyY2VGaWxl
OnJlc1JlZl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBi
NzExNTk5Li5iODcyMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTgwNCw5ICs4MDQsMTAgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNl
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRv
Y3VtZW50KCktPmxvYWRlcigpLT53cml0ZXIoKS0+bWltZVR5cGUoKTsKICAgICBQbHVnaW5EYXRh
KiBwbHVnaW5EYXRhID0gZnJhbWUtPnBhZ2UoKSA/IGZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEo
KSA6IDA7CiAKLSAgICBpZiAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKG1pbWVUeXBlKSB8fAotICAgICAgICBJbWFnZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKSB8
fAotICAgICAgICAocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKG1p
bWVUeXBlKSkpCisgICAgaWYgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1F
VHlwZShtaW1lVHlwZSkKKyAgICAgICAgfHwgSW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1lVHlwZSkK
KyAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZSht
aW1lVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgZnJhbWUtPmxvYWRlcigpLT5zdWJm
cmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkK
KyAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNNaW1lVHlwZSht
aW1lVHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucykpKQogICAgICAgICBy
ZXR1cm4gTk87CiAKICAgICByZXR1cm4gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1ZjRiYWU0Li40
ZTU4Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNS0wMyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBQREZQbHVnaW5z
IGRvbid0IGxvYWQgd2hlbiBwbHVnaW5zIGFyZSBkaXNhYmxlZCwgYnV0IHRoZXkgc2hvdWxkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTE2NTAxOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENv
bnRlbnRUeXBlKToKKyAgICAgICAgUHJldmlvdXNseSwgdGhpcyBjYWxsZXIgZGVwZW5kZWQgb24g
cGx1Z2luRGF0YSgpIHJldHVybmluZyBudWxsIGlmCisgICAgICAgIHBsdWctaW5zIHdlcmUgZGlz
YWJsZWQuIFNpbmNlIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLCB3ZSBoYXZlIHRvCisgICAg
ICAgIGNoZWNrIGlmIHdlIGNhbiB1c2UgcGx1Zy1pbnMsIGFuZCBvdGhlcndpc2UgaWdub3JlIG5v
bi1hcHBsaWNhdGlvbi1wbHVnLWlucy4KKwogMjAxMy0wNS0wMyAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVSZXNvbHZlcjogSGF2ZSAibGlzdCBvZiBt
YXRjaGVkIHJ1bGVzIiBBUEkgdmVuZCBpbnRlcm5hbCB0eXBlcyBpbnN0ZWFkIG9mIENTU09NIHdy
YXBwZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggMTY0ODQ0Ny4uYTk4MzYwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCkBAIC0xMzU4LDkgKzEzNTgsMTMgQEAgT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdAogICAgIE9i
amVjdENvbnRlbnRUeXBlIHBsdWdJblR5cGUgPSBPYmplY3RDb250ZW50Tm9uZTsKICAgICBpZiAo
YXJlUGx1Z2luc0VuYWJsZWQgJiYgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+
aXNNSU1FVHlwZVJlZ2lzdGVyZWQobWltZVR5cGUpKQogICAgICAgICBwbHVnSW5UeXBlID0gT2Jq
ZWN0Q29udGVudE5ldHNjYXBlUGx1Z2luOwotICAgIGVsc2UgaWYgKG1fZnJhbWUtPnBhZ2UoKSAm
JiBtX2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPnBsdWdp
bkRhdGEoKS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpCi0gICAgICAgIHBsdWdJblR5cGUg
PSBPYmplY3RDb250ZW50T3RoZXJQbHVnaW47Ci0gICAgICAgIAorICAgIGVsc2UgaWYgKG1fZnJh
bWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKSkgeworICAgICAgICBi
b29sIGFsbG93UGx1Z2lucyA9IG1fZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5h
bGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKTsKKyAgICAgICAgaWYgKCht
X2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwg
UGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgYWxsb3dQbHVnaW5zKQorICAgICAgICAgICAgfHwg
bV9mcmFtZS0+cGFnZSgpLT5wbHVnaW5EYXRhKCktPnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUs
IFBsdWdpbkRhdGE6Ok9ubHlBcHBsaWNhdGlvblBsdWdpbnMpKQorICAgICAgICAgICAgICAgIHBs
dWdJblR5cGUgPSBPYmplY3RDb250ZW50T3RoZXJQbHVnaW47CisgICAgfQorCiAgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAg
ICAgIHJldHVybiBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzICYmIHBsdWdJblR5cGUgIT0g
T2JqZWN0Q29udGVudE5vbmUgPyBwbHVnSW5UeXBlIDogT2JqZWN0Q29udGVudEltYWdlOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IGZlZDNlZjIuLmJmMjdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNS0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KKworICAgICAgICBQREZQbHVnaW5zIGRvbid0IGxvYWQgd2hlbiBwbHVnaW5z
IGFyZSBkaXNhYmxlZCwgYnV0IHRoZXkgc2hvdWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTE2
NTAxOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmNhblNob3dNSU1FVHlwZSk6CisgICAg
ICAgIFByZXZpb3VzbHksIHRoaXMgY2FsbGVyIGRlcGVuZGVkIG9uIHBsdWdpbkRhdGEoKSByZXR1
cm5pbmcgbnVsbCBpZgorICAgICAgICBwbHVnLWlucyB3ZXJlIGRpc2FibGVkLiBTaW5jZSB0aGF0
IGlzIG5vIGxvbmdlciB0aGUgY2FzZSwgd2UgaGF2ZSB0bworICAgICAgICBjaGVjayBpZiB3ZSBj
YW4gdXNlIHBsdWctaW5zLCBhbmQgb3RoZXJ3aXNlIGlnbm9yZSBub24tYXBwbGljYXRpb24tcGx1
Zy1pbnMuCisKIDIwMTMtMDUtMDEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgU2hvdyBhIGJsb2NrIGN1cnNvciBpbiBvdmVydHlwZSBtb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCmluZGV4IDAzYzBhMTUuLjBhZTg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCkBAIC0yNTI2LDExICsyNTI2LDIwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6Y2FuU2hvd01JTUVUeXBlKAogICAgIGlmICghY2FuU2hvdykKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKIAotICAgICpjYW5TaG93ID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlU3RyKSB8fAotICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGVTdHIpIHx8Ci0gICAgICAgICht
X3BhZ2UgJiYgbV9wYWdlLT5wbHVnaW5EYXRhKCkgJiYgbV9wYWdlLT5wbHVnaW5EYXRhKCktPnN1
cHBvcnRzTWltZVR5cGUobWltZVR5cGVTdHIpKSB8fAotICAgICAgICBzaG91bGRVc2VFbWJlZGRl
ZFZpZXcobWltZVR5cGVTdHIpOwotICAgIAorICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1f
bWFpbkZyYW1lKTsKKyAgICBib29sIGFsbG93UGx1Z2lucyA9IGNvcmVGcmFtZSAmJiBjb3JlRnJh
bWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0lu
c3RhbnRpYXRlUGx1Z2luKTsKKworICAgICpjYW5TaG93ID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlU3RyKQorICAgICAgICB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWltZVR5cGVTdHIpOworCisgICAg
aWYgKCEqY2FuU2hvdyAmJiBtX3BhZ2UgJiYgbV9wYWdlLT5wbHVnaW5EYXRhKCkpIHsKKyAgICAg
ICAgKmNhblNob3cgPSAobV9wYWdlLT5wbHVnaW5EYXRhKCktPnN1cHBvcnRzTWltZVR5cGUobWlt
ZVR5cGVTdHIsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIGFsbG93UGx1Z2lucykKKyAgICAg
ICAgICAgIHx8IG1fcGFnZS0+cGx1Z2luRGF0YSgpLT5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBl
U3RyLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKTsKKyAgICB9CisKKyAgICBp
ZiAoISpjYW5TaG93KQorICAgICAgICAqY2FuU2hvdyA9IHNob3VsZFVzZUVtYmVkZGVkVmlldyht
aW1lVHlwZVN0cik7CisKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU5Njlh
NWEuLjQ3ODkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MyBAQAogMjAxMy0wNS0wMyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAorICAgICAgICBQREZQbHVnaW5z
IGRvbid0IGxvYWQgd2hlbiBwbHVnaW5zIGFyZSBkaXNhYmxlZCwgYnV0IHRoZXkgc2hvdWxkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTE2NTAxOTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBsb2FkaW5nICJhcHBsaWNhdGlvbiIgcGx1
Zy1pbnMgZXZlbiBpZiBwbHVnLWlucyBhcmUgZXhwbGljaXRseSBkaXNhYmxlZC4KKworICAgICAg
ICBNYWtlIFBERlBsdWdpbiBhbmQgU2ltcGxlUERGUGx1Z2luICJhcHBsaWNhdGlvbiIgcGx1Zy1p
bnMsIHNvIHRoZXkgY2FuCisgICAgICAgIGJlIGxvYWRlZCBldmVuIGlmIHBsdWctaW5zIGFyZSBk
aXNhYmxlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oOgor
ICAgICAgICAoQ29yZUlQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgQWRkIGEgNS1h
cmd1bWVudCwgMy1yZXBseSB2ZXJzaW9uIG9mIGNhbGxNZW1iZXJGdW5jdGlvbi4KKworICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8p
OgorICAgICAgICBOUEFQSSBwbHVnLWlucyBhcmUgbm90IGFwcGxpY2F0aW9uIHBsdWctaW5zLgor
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAg
IEVuY29kZS9kZWNvZGUgdGhlIG5ldyBpc0FwcGxpY2F0aW9uUGx1Z2luIGZpZWxkIG9uIFBsdWdp
bkluZm8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVu
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmg6CisgICAgICAgIChQ
bHVnaW5JbmZvU3RvcmUpOgorICAgICAgICBHaXZlIFBsdWdpbkluZm9TdG9yZSdzIGZpbmRQbHVn
aW4gbWV0aG9kIGFuZCBpdHMgcHJpdmF0ZSBoZWxwZXIKKyAgICAgICAgbWV0aG9kcyBhbiBhcmd1
bWVudCBhbGxvd2luZyB0aGVtIHRvIG9ubHkgbWF0Y2ggYXBwbGljYXRpb24gcGx1Zy1pbnMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBhbiBh
cmd1bWVudCBhbGxvd2luZyBmaW5kUGx1Z2luIHRvIHJlc3RyaWN0IGl0cyBzZWFyY2ggdG8gb25s
eSBhcHBsaWNhdGlvbiBwbHVnLWlucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUpOgorICAgICAgICBQcmV2aW91c2x5LCB0
aGlzIGNhbGxlciBkZXBlbmRlZCBvbiBwbHVnaW5EYXRhKCkgcmV0dXJuaW5nIG51bGwgaWYKKyAg
ICAgICAgcGx1Zy1pbnMgd2VyZSBkaXNhYmxlZC4gU2luY2UgdGhhdCBpcyBubyBsb25nZXIgdGhl
IGNhc2UsIHdlIGhhdmUgdG8KKyAgICAgICAgY2hlY2sgaWYgd2UgY2FuIHVzZSBwbHVnLWlucywg
YW5kIG90aGVyd2lzZSBpZ25vcmUgbm9uLWFwcGxpY2F0aW9uLXBsdWctaW5zLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICBXaGVuIGdvaW5nIHRvIHNlYXJjaCBmb3IgYSBw
bHVnLWluLCBhc2sgc3ViZnJhbWVMb2FkZXIgd2hldGhlciBvciBub3QKKyAgICAgICAgaXQncyBP
SyB0byB1c2Ugb3JkaW5hcnkgbm9uLWFwcGxpY2F0aW9uIHBsdWctaW5zLCBhbmQgcGFzcyB0aGF0
IGluZm9ybWF0aW9uCisgICAgICAgIG9uIHRvIHRoZSBVSVByb2Nlc3Mgd2hlbiBwZXJmb3JtaW5n
IHRoZSBzZWFyY2guCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuUGx1Z2luSGFuZGxl
UmVzcG9uc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuU2hvd01JTUVU
eXBlKToKKyAgICAgICAgRW5zdXJlIHRoYXQgY2FuU2hvd01JTUVUeXBlIHJldHVybnMgdHJ1ZSBp
ZiB3ZSBoYXZlIGFuIGFwcGxpY2F0aW9uIHBsdWctaW4KKyAgICAgICAgdGhhdCBjYW4gZGlzcGxh
eSBhIHBhcnRpY3VsYXIgTUlNRSB0eXBlLCBldmVuIGlmIHdlJ3JlIG5vdCBhbGxvd2VkIHRvIGxv
YWQgcGx1Zy1pbnMuCisKKzIwMTMtMDUtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CisKICAgICAgICAgUERGUGx1Z2luOiBDaGFuZ2VzIGJlaW5nIG1hZGUgdG8gYWN0
aXZlIGFubm90YXRpb24gYXJlbid0IHNhdmVkIHdoZW4gdGhlIFBERiBpcyBleHBvcnRlZAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ0CiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMzgwMTc4OT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggMTczNTE4ZC4uNTRmNmYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE5
Nyw2ICsxOTcsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzNDxQ
MSwgUDIsIFAzLCBQND4mIGFyZ3MsIEFyZ3VtZW50czM8UjEsIFIKICAgICAob2JqZWN0LT4qZnVu
Y3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFy
Z3MuYXJndW1lbnQ0LCByZXBseUFyZ3MuYXJndW1lbnQxLCByZXBseUFyZ3MuYXJndW1lbnQyLCBy
ZXBseUFyZ3MuYXJndW1lbnQzKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUg
TUYsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0
eXBlbmFtZSBQNSwgdHlwZW5hbWUgUjEsIHR5cGVuYW1lIFIyLCB0eXBlbmFtZSBSMz4KK3ZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czU8UDEsIFAyLCBQMywgUDQsIFA1PiYg
YXJncywgQXJndW1lbnRzMzxSMSwgUjIsIFIzPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1
bmN0aW9uKQoreworICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3Mu
YXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1lbnQ1
LCByZXBseUFyZ3MuYXJndW1lbnQxLCByZXBseUFyZ3MuYXJndW1lbnQyLCByZXBseUFyZ3MuYXJn
dW1lbnQzKTsKK30KKwogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggZGVsYXllZCByZXBseSBh
cmd1bWVudHMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUj4K
IHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czAmLCBQYXNzUmVmUHRyPFI+
IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRleCAwOTE5NzQ5Li5jMjcyNDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVn
aW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCkBAIC0zOTAsNiArMzkwLDggQEAgYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBsdWdpbk1vZHVsZUkKICAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IHBsdWdpbi5p
bmZvLmZpbGU7CiAgICAgaWYgKHBsdWdpbi5pbmZvLmRlc2MuaXNOdWxsKCkpCiAgICAgICAgIHBs
dWdpbi5pbmZvLmRlc2MgPSBwbHVnaW4uaW5mby5maWxlOworCisgICAgcGx1Z2luLmluZm8uaXNB
cHBsaWNhdGlvblBsdWdpbiA9IGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBl
ZThjZmE4Li43ZWZmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxN
aW1lQ2xhc3NJbmZvPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTWltZUNsYXNz
SW5mCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxQbHVnaW5JbmZvPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luSW5mbykKIHsKLSAgICBlbmNv
ZGVyIDw8IHBsdWdpbkluZm8ubmFtZSA8PCBwbHVnaW5JbmZvLmZpbGUgPDwgcGx1Z2luSW5mby5k
ZXNjIDw8IHBsdWdpbkluZm8ubWltZXM7CisgICAgZW5jb2RlciA8PCBwbHVnaW5JbmZvLm5hbWUg
PDwgcGx1Z2luSW5mby5maWxlIDw8IHBsdWdpbkluZm8uZGVzYyA8PCBwbHVnaW5JbmZvLm1pbWVz
IDw8IHBsdWdpbkluZm8uaXNBcHBsaWNhdGlvblBsdWdpbjsKIH0KICAgICAKIGJvb2wgQXJndW1l
bnRDb2RlcjxQbHVnaW5JbmZvPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGx1
Z2luSW5mbyYgcGx1Z2luSW5mbykKQEAgLTE3OSw2ICsxNzksOCBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8UGx1Z2luSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBsdWdpbklu
Zm8mIHBsdQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
bHVnaW5JbmZvLm1pbWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBhYjg4MGJkLi4xZTE4
ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHAKQEAgLTEyMiwxMiArMTIyLDE1IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJ
bmZvPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnMoKQogICAgIHJldHVybiBtX3BsdWdpbnM7CiB9
CiAKLVBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK1BsdWdpbk1vZHVsZUluZm8gUGx1Z2lu
SW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBvbmx5QXBwbGljYXRpb25QbHVnaW5zKSBjb25zdAogewogICAgIEFTU0VSVCghbWltZVR5
cGUuaXNOdWxsKCkpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5z
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiA9
IG1fcGx1Z2luc1tpXTsKKworICAgICAgICBpZiAob25seUFwcGxpY2F0aW9uUGx1Z2lucyAmJiAh
cGx1Z2luLmluZm8uaXNBcHBsaWNhdGlvblBsdWdpbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBwbHVnaW4uaW5mby5taW1l
cy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNs
YXNzSW5mbyA9IHBsdWdpbi5pbmZvLm1pbWVzW2pdOwpAQCAtMTM5LDE2ICsxNDIsMTkgQEAgUGx1
Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBQbHVnaW5Nb2R1bGVJbmZvKCk7CiB9CiAK
LVBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorUGx1Z2lu
TW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIFN0cmluZyYgbWltZVR5cGUsIGJvb2wgb25seUFwcGxpY2F0aW9u
UGx1Z2lucykgY29uc3QKIHsKICAgICBBU1NFUlQoIWV4dGVuc2lvbi5pc051bGwoKSk7CiAgICAg
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwotICAg
ICAgICAKKworICAgICAgICBpZiAob25seUFwcGxpY2F0aW9uUGx1Z2lucyAmJiAhcGx1Z2luLmlu
Zm8uaXNBcHBsaWNhdGlvblBsdWdpbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgcGx1Z2luLmluZm8ubWltZXMuc2l6ZSgpOyArK2opIHsK
ICAgICAgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWVDbGFzc0luZm8gPSBwbHVnaW4u
aW5mby5taW1lc1tqXTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1pbWVDbGFzc0luZm8uZXh0ZW5zaW9uczsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGZpbmQoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25z
LmVuZCgpLCBleHRlbnNpb24pICE9IGV4dGVuc2lvbnMuZW5kKCkpIHsKQEAgLTE5OSwxMyArMjA1
LDEzIEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luV2l0aEJ1
bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJikKIAogI2VuZGlmCiAKLVBsdWdpbk1vZHVsZUlu
Zm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtV
UkwmIHVybCkKK1BsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBvbmx5QXBwbGljYXRpb25QbHVn
aW5zKQogewogICAgIGxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICAvLyBGaXJz
dCwgY2hlY2sgaWYgd2UgY2FuIGdldCB0aGUgcGx1Zy1pbiBiYXNlZCBvbiBpdHMgTUlNRSB0eXBl
LgogICAgIGlmICghbWltZVR5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgUGx1Z2luTW9kdWxlSW5m
byBwbHVnaW4gPSBmaW5kUGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICBQbHVn
aW5Nb2R1bGVJbmZvIHBsdWdpbiA9IGZpbmRQbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSwgb25s
eUFwcGxpY2F0aW9uUGx1Z2lucyk7CiAgICAgICAgIGlmICghcGx1Z2luLnBhdGguaXNOdWxsKCkp
CiAgICAgICAgICAgICByZXR1cm4gcGx1Z2luOwogICAgIH0KQEAgLTIxMywxNCArMjE5LDE0IEBA
IFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkKICAgICAvLyBOZXh0LCBjaGVjayBpZiBhbnkgcGx1Zy1p
bnMgY2xhaW0gdG8gc3VwcG9ydCB0aGUgVVJMIGV4dGVuc2lvbi4KICAgICBTdHJpbmcgZXh0ZW5z
aW9uID0gcGF0aEV4dGVuc2lvbih1cmwpLmxvd2VyKCk7CiAgICAgaWYgKCFleHRlbnNpb24uaXNO
dWxsKCkgJiYgbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFBsdWdpbk1vZHVsZUluZm8g
cGx1Z2luID0gZmluZFBsdWdpbkZvckV4dGVuc2lvbihleHRlbnNpb24sIG1pbWVUeXBlKTsKKyAg
ICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGV4
dGVuc2lvbiwgbWltZVR5cGUsIG9ubHlBcHBsaWNhdGlvblBsdWdpbnMpOwogICAgICAgICBpZiAo
IXBsdWdpbi5wYXRoLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIHBsdWdpbjsKICAgICAg
ICAgCiAgICAgICAgIC8vIEZpbmFsbHksIHRyeSB0byBnZXQgdGhlIE1JTUUgdHlwZSBmcm9tIHRo
ZSBleHRlbnNpb24gaW4gYSBwbGF0Zm9ybSBzcGVjaWZpYyBtYW5uZXIgYW5kIHVzZSB0aGF0Lgog
ICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uTWltZVR5cGUgPSBnZXRNSU1FVHlwZUZvckV4dGVuc2lv
bihleHRlbnNpb24pOwogICAgICAgICBpZiAoIWV4dGVuc2lvbk1pbWVUeXBlLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IGZpbmRQbHVnaW5Gb3JNSU1F
VHlwZShleHRlbnNpb25NaW1lVHlwZSk7CisgICAgICAgICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBs
dWdpbiA9IGZpbmRQbHVnaW5Gb3JNSU1FVHlwZShleHRlbnNpb25NaW1lVHlwZSwgb25seUFwcGxp
Y2F0aW9uUGx1Z2lucyk7CiAgICAgICAgICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpKSB7
CiAgICAgICAgICAgICAgICAgbWltZVR5cGUgPSBleHRlbnNpb25NaW1lVHlwZTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gcGx1Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBmYzViOTA2Li4wNWFlYjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBw
bHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRo
ZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwg
d2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAgIC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBj
YXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUu
Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgb25seUFwcGxpY2F0aW9uUGx1
Z2lucyA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGluZm8gZm9yIHRoZSBwbHVnLWlu
IHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyLgogICAgIFBsdWdpbk1vZHVsZUluZm8g
ZmluZFBsdWdpbldpdGhCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRp
Zmllcik7CkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICBQbHVnaW5JbmZvU3RvcmVDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHByaXZhdGU6Ci0gICAg
UGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3Q7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKKyAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIG9ubHlBcHBsaWNhdGlvblBsdWdpbnMpIGNvbnN0OworICAgIFBsdWdpbk1vZHVs
ZUluZm8gZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBvbmx5QXBwbGljYXRpb25QbHVnaW5zKSBjb25zdDsKIAogICAg
IHZvaWQgbG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRQbHVn
aW4oVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+JiBwbHVnaW5zLCBjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2
YjdlNTEyLi41MzZlYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTM3OSwxNCArMTM3OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5
Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIH0KIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVn
aW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBTdHJpbmcmIG5ld01pbWVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9h
ZFBvbGljeSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IGJvb2wgYWxsb3dPbmx5QXBw
bGljYXRpb25QbHVnaW5zLCBTdHJpbmcmIHBsdWdpblBhdGgsIFN0cmluZyYgbmV3TWltZVR5cGUs
IHVpbnQzMl90JiBwbHVnaW5Mb2FkUG9saWN5KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVy
bFN0cmluZyk7CiAKICAgICBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlLmxvd2VyKCk7CiAKICAgICBw
bHVnaW5Mb2FkUG9saWN5ID0gUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OwotICAgIFBsdWdpbk1v
ZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgp
LmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCB1cmxTdHJpbmcpKTsKKyAgICBQ
bHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZv
U3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwg
YWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zKTsKICAgICBpZiAoIXBsdWdpbi5wYXRoKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA3MWJmMzU4Li4yOTg4YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFdoZWVsRXZl
bnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgdm9pZCBmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIFN0cmluZyYgcGx1Z2luUGF0aCwgU3RyaW5nJiBuZXdNSU1FVHlw
ZSwgdWludDMyX3QmIHBsdWdpbkxvYWRQb2xpY3kpOworICAgIHZvaWQgZmluZFBsdWdpbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5n
JiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBib29s
IGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucywgU3RyaW5nJiBwbHVnaW5QYXRoLCBTdHJpbmcm
IG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSk7CiAjZW5kaWYKIAogICAg
IFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGYxZGI0NmIuLjQzZjdiMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMzE1LDcgKzMxNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIEZpbmRQbHVnaW4oV1RGOjpTdHJp
bmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVybFN0cmluZywgV1RGOjpTdHJpbmcgZnJhbWVVUkxT
dHJpbmcsIFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5Q
YXRoLCBXVEY6OlN0cmluZyBuZXdNSU1FVHlwZSwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSkK
KyAgICBGaW5kUGx1Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1cmxTdHJp
bmcsIFdURjo6U3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBXVEY6OlN0cmluZyBwYWdlVVJMU3RyaW5n
LCBib29sIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucykgLT4gKFdURjo6U3RyaW5nIHBsdWdp
blBhdGgsIFdURjo6U3RyaW5nIG5ld01JTUVUeXBlLCB1aW50MzJfdCBwbHVnaW5Mb2FkUG9saWN5
KQogI2VuZGlmCiAKICAgICBEaWRVcGRhdGVJbldpbmRvd1N0YXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0K
aW5kZXggOTM4ZTA2NC4uYjNkNzAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTE3OCw2ICsxNzgs
NyBAQCBQbHVnaW5JbmZvIFNpbXBsZVBERlBsdWdpbjo6cGx1Z2luSW5mbygpCiB7CiAgICAgUGx1
Z2luSW5mbyBpbmZvOwogICAgIGluZm8ubmFtZSA9IGJ1aWx0SW5QREZQbHVnaW5OYW1lKCk7Cisg
ICAgaW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luID0gdHJ1ZTsKIAogICAgIE1pbWVDbGFzc0luZm8g
cGRmTWltZUNsYXNzSW5mbzsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBwbGljYXRp
b24vcGRmIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODgwMDU5NS4u
YzU2NWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0MjUsNyAr
MTQyNSw5IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RD
b250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0CiAgICAgYm9vbCBwbHVnSW5TdXBwb3J0
c01JTUVUeXBlID0gZmFsc2U7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpIHsKICAgICAgICAgaWYgKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSB3ZWJQYWdlLT5j
b3JlUGFnZSgpLT5wbHVnaW5EYXRhKCkpIHsKLSAgICAgICAgICAgIGlmIChwbHVnaW5EYXRhLT5z
dXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIGlmIChwbHVnaW5EYXRhLT5z
dXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiB3ZWJG
cmFtZSgpLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1
Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICAgICAgICAgIHBsdWdJ
blN1cHBvcnRzTUlNRVR5cGUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAocGx1Z2luRGF0
YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9u
UGx1Z2lucykpCiAgICAgICAgICAgICAgICAgcGx1Z0luU3VwcG9ydHNNSU1FVHlwZSA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggODJmZjQ3ZC4uMDY3YzM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTMyLDcgKzUzMiw4IEBAIFBhc3NS
ZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1M
UGx1Z0luRWxlbWVudCogcGx1CiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gZnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJp
bmcoKTsKICAgICBTdHJpbmcgcGFnZVVSTFN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwogCi0gICAg
aWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luKHBhcmFtZXRl
cnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBmcmFtZVVSTFN0cmluZywgcGFn
ZVVSTFN0cmluZyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVnaW46OlJlcGx5KHBs
dWdpblBhdGgsIG5ld01JTUVUeXBlLCBwbHVnaW5Mb2FkUG9saWN5KSkpIHsKKyAgICBib29sIGFs
bG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyA9ICFmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1
Z2luKTsKKyAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRQbHVn
aW4ocGFyYW1ldGVycy5taW1lVHlwZSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJM
U3RyaW5nLCBwYWdlVVJMU3RyaW5nLCBhbGxvd09ubHlBcHBsaWNhdGlvblBsdWdpbnMpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpGaW5kUGx1Z2luOjpSZXBseShwbHVnaW5QYXRoLCBuZXdNSU1F
VHlwZSwgcGx1Z2luTG9hZFBvbGljeSkpKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApA
QCAtMzc2OSw3ICszNzcwLDggQEAgYm9vbCBXZWJQYWdlOjpjYW5QbHVnaW5IYW5kbGVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBTdHJpbmcgbmV3TUlNRVR5
cGU7CiAgICAgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeTsKIAotICAgIGlmICghc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbihyZXNwb25zZS5taW1lVHlwZSgpLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdpbjo6UmVw
bHkocGx1Z2luUGF0aCwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3kpKSkKKyAgICBib29s
IGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucyA9ICFtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3Rh
bnRpYXRlUGx1Z2luKTsKKyAgICBpZiAoIXNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZpbmRQbHVnaW4ocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgYWxsb3dP
bmx5QXBwbGljYXRpb25QbHVnaW5zKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFBsdWdp
bjo6UmVwbHkocGx1Z2luUGF0aCwgbmV3TUlNRVR5cGUsIHBsdWdpbkxvYWRQb2xpY3kpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHBsdWdpbkxvYWRQb2xpY3kgIT0gUGx1
Z2luTW9kdWxlQmxvY2tlZCAmJiAhcGx1Z2luUGF0aC5pc0VtcHR5KCk7CkBAIC0zOTE4LDcgKzM5
MjAsMTEgQEAgYm9vbCBXZWJQYWdlOjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSA9IG1fcGFnZS0+cGx1Z2luRGF0YSgpKSB7Ci0gICAgICAgIGlmIChwbHVnaW5E
YXRhLT5zdXBwb3J0c01pbWVUeXBlKE1JTUVUeXBlKSAmJiBtX3BhZ2UtPnNldHRpbmdzKCktPmFy
ZVBsdWdpbnNFbmFibGVkKCkpCisgICAgICAgIGlmIChwbHVnaW5EYXRhLT5zdXBwb3J0c01pbWVU
eXBlKE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBjb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91
dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgLy8gV2UgY2FuIHVzZSBhcHBsaWNhdGlvbiBwbHVnaW5zIGV2ZW4gaWYgcGx1Z2lucyBhcmVu
J3QgZW5hYmxlZC4KKyAgICAgICAgaWYgKHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUoTUlN
RVR5cGUsIFBsdWdpbkRhdGE6Ok9ubHlBcHBsaWNhdGlvblBsdWdpbnMpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="221937"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>