<?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>61222</bug_id>
          
          <creation_ts>2011-05-20 16:11:08 -0700</creation_ts>
          <short_desc>Improve handling in WebCore of low memory situations</short_desc>
          <delta_ts>2011-05-24 16:44:00 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>joepeck</cc>
    
    <cc>psolanki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>407378</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-05-20 16:11:08 -0700</bug_when>
    <thetext>WebCore has several caches and generally cleans up those caches and GC&apos;s as needed.  During a system low memory situation, it makes sense to be more aggressive in returning such memory to the system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407397</commentid>
    <comment_count>1</comment_count>
      <attachid>94287</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-05-20 16:42:48 -0700</bug_when>
    <thetext>Created attachment 94287
Patch implementing memory pressure framework and handling for Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407410</commentid>
    <comment_count>2</comment_count>
      <attachid>94287</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-20 16:53:45 -0700</bug_when>
    <thetext>Comment on attachment 94287
Patch implementing memory pressure framework and handling for Mac

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

&gt; Source/WebCore/platform/MemoryPressure.h:33
&gt; +class MemoryPressure {

I don&apos;t really like the name of this class; it doesn&apos;t say what it does. MemoryPressureResponder?

&gt; Source/WebCore/platform/mac/MemoryPressureMac.mm:88
&gt; +    // FIXME: releaseFastMallocFreeMemory() seems to deadlock or buzy the TCMalloc 

buzy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407427</commentid>
    <comment_count>3</comment_count>
      <attachid>94287</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-20 17:16:02 -0700</bug_when>
    <thetext>Comment on attachment 94287
Patch implementing memory pressure framework and handling for Mac

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

r=me, but:
- I think you should make the changes specified here;
- Please don&apos;t commit this if &lt;dispatch/source_private.h&gt; is not a publicly available header.

&gt; Source/WebCore/loader/cache/MemoryCache.h:197
&gt; +    void pruneDeadResources();
&gt; +    void pruneLiveResources();
&gt; +    void forcePruneDeadResources(float prunePercentage);
&gt; +    void forcePruneLiveResources(float prunePercentage);
&gt; +    void pruneDeadResourcesToTarget(unsigned targetSize); // Flush decoded and encoded data from resources not referenced by Web pages.
&gt; +    void pruneLiveResourcesToTarget(unsigned targetSize); // Flush decoded data from resources still referenced by Web pages.

&quot;forcePrune&quot; is kind of a funny name, since it doesn&apos;t actually force -- there are conditions under which it returns early. The real difference between these functions is not between force and not, but between percentages as units and bytes as units. I&apos;d recommend:

pruneDeadResources(); // Automatically decides how much to prune
pruneDeadResourcesToSize(size_t)
pruneDeadResourcesToPercentage(float)
// Same for LiveResources

&gt; Source/WebCore/platform/MemoryPressure.cpp:33
&gt; +    static MemoryPressure* staticMemoryPressure = new MemoryPressure;

Please use DEFINE_STATIC_LOCAL, as is our custom.

&gt; Source/WebCore/platform/MemoryPressure.cpp:39
&gt; +MemoryPressure::MemoryPressure()
&gt; +{
&gt; +}

You can remove this -- the compiler will generate it automatically.

&gt; Source/WebCore/platform/MemoryPressure.h:37
&gt; +    void installMemoryPressureHandler();

I&apos;d suggest &quot;MemoryPressureHandler&quot; as the name of the class, and &quot;install&quot; as the name of this function.

Then you have &quot;memoryPressureHandler()-&gt;install()&quot;, which tells a noun to perform a verb, instead of &quot;memoryPressure()-&gt;installMemoryPressureHandler()&quot;, which tells an abstract concept (&quot;memory pressure&quot;) to perform an action with some unspecified other noun (&quot;memory pressure handler&quot;).

&gt; Source/WebCore/platform/mac/MemoryPressureMac.mm:35
&gt; +#if !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; +#import &lt;dispatch/source_private.h&gt;
&gt; +#endif

Is this available as a public header? If not, your patch will break OpenSource builds.

&gt; Source/WebCore/platform/mac/MemoryPressureMac.mm:47
&gt; +        dispatch_async(dispatch_get_main_queue(), ^{

Why does installation of the handler need to be asynchronous?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407443</commentid>
    <comment_count>4</comment_count>
      <attachid>94287</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-05-20 17:47:40 -0700</bug_when>
    <thetext>Comment on attachment 94287
Patch implementing memory pressure framework and handling for Mac

Marking as r- as Geoff is right, the libdispatch header you’re using isn’t a public header so can’t be used from WebCore as it will break builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409288</commentid>
    <comment_count>5</comment_count>
      <attachid>94708</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-05-24 16:10:39 -0700</bug_when>
    <thetext>Created attachment 94708
Updated patch

Addressed the concerns in the prior review.  Made suggested name changes. Added new files to WebCore.vcproj.

Provided private definitions of VM dispatch #defines.

Kept empty MemoryPressureHandler constructor, seems to be needed to compile for singleton pattern.  Probably due to being private.

Using dispatch_async as I lifted example code from another source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409289</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-24 16:12:12 -0700</bug_when>
    <thetext>Attachment 94708 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/MemoryPressureHandler.cpp:39:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409296</commentid>
    <comment_count>7</comment_count>
      <attachid>94708</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-24 16:31:02 -0700</bug_when>
    <thetext>Comment on attachment 94708
Updated patch

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

&gt; Source/WebCore/loader/cache/MemoryCache.h:197
&gt; +    void PruneDeadResourcesToPercentage(float prunePercentage);
&gt; +    void PruneLiveResourcesToPercentage(float prunePercentage);

Percentage of what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409297</commentid>
    <comment_count>8</comment_count>
      <attachid>94708</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 16:31:22 -0700</bug_when>
    <thetext>Comment on attachment 94708
Updated patch

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

r=me

&gt; Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm:89
&gt; +    pageCache()-&gt;setCapacity(pageCache()-&gt;pageCount()&gt;&gt;1);

The compiler will do this for you, so there&apos;s no need to be clever.

&gt; Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm:95
&gt; +    [nsurlCache setMemoryCapacity:[nsurlCache currentMemoryUsage]&gt;&gt;1];

The compiler will do this for you, so there&apos;s no need to be clever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409305</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-05-24 16:44:00 -0700</bug_when>
    <thetext>Committed r87228: &lt;http://trac.webkit.org/changeset/87228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94287</attachid>
            <date>2011-05-20 16:42:48 -0700</date>
            <delta_ts>2011-05-24 16:10:39 -0700</delta_ts>
            <desc>Patch implementing memory pressure framework and handling for Mac</desc>
            <filename>61222.patch</filename>
            <type>text/plain</type>
            <size>26781</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2OTk4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDUtMjAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBoYW5kbGluZyBpbiBXZWJDb3JlIG9mIGxvdyBt
ZW1vcnkgc2l0dWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjEyMjIKKworICAgICAgICBBZGRlZCBuZXcgY2xhc3MsIE1lbW9yeVByZXNzdXJl
LCB0byBwbGF0Zm9ybSB0byByZXNwb25kIHRvIGxvdyBzeXN0ZW0KKyAgICAgICAgbWVtb3J5IGV2
ZW50cy4gQWRkZWQgTWFjIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIHRoYXQgcmVkdWNlcyB0aGUK
KyAgICAgICAgcGFnZSBjYWNoZSwgTlNVUkwgY2FjaGUsIFdlYkNvcmUgY2FjaGUgYnkgaGFsZiB0
aGVpciBjdXJyZW50IHVzYWdlCisgICAgICAgIGFuZCB0aGVuIGdhcmJhZ2UgY29sbGVjdHMuICBU
aGlzIGNhbiBhbGxvdyBTYWZhcmkgdG8gY29udGludWUgb3BlcmF0aW5nCisgICAgICAgIGluIGEg
bG93IG1lbW9yeSBzaXR1YXRpb24gd2l0aCBtaW5pbWFsIHBhZ2luZy4KKyAgICAgICAgU3BsaXQg
dXAgcHJ1bmUgb3BlcmF0aW9ucyBpbiBNZW1vcnlDYWNoZSB0byBhbGxvdyBmb3IgcHJ1bmluZyB0
byBhCisgICAgICAgIHNwZWNpZmljIGFjdHVhbCBzaXplIHRvIHN1cHBvcnQgdGhpcyBjaGFuZ2Uu
CisKKyAgICAgICAgTm8gdGVzdHMgYWRkZWQgYXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgV2ViS2l0
IHdhc24ndCBjaGFuZ2VkLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpmb3JjZVBydW5lTGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzVG9UYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6Zm9yY2VQcnVuZURlYWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlc1RvVGFyZ2V0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hl
Ojpmb3JjZVBydW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6bWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5UHJlc3N1cmU6Ok1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlOjppbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeVByZXNzdXJlOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL01lbW9yeVByZXNzdXJlTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eVByZXNzdXJlOjppbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSk6CisKIDIwMTEtMDUt
MjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biA4Njk3MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1MjMsNiArMjUyMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4Njk3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNiArMjE0LDgg
QEAgX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljcwogX19aTjdXZWJDb3Jl
MTFNZW1vcnlDYWNoZTEzc2V0Q2FwYWNpdGllc0VqamoKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2Fj
aGUxNGV2aWN0UmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOWdldE9yaWdp
bnNXaXRoQ2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdp
bkVFRU5TXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQorX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTIzZm9yY2VQcnVuZUxpdmVSZXNvdXJjZXNFZgorX19aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTIzZm9yY2VQcnVuZURlYWRSZXNvdXJjZXNFZgogX19aTjdXZWJD
b3JlMTFNZW1vcnlDYWNoZTI1cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbkVQTlNfMTRTZWN1cml0
eU9yaWdpbkUKIF9fWk43V2ViQ29yZTExUmVuZGVyTGF5ZXIxOXNjcm9sbFJlY3RUb1Zpc2libGVF
UktOU183SW50UmVjdEViUktOU18xNVNjcm9sbEFsaWdubWVudEVTNl8KIF9fWk43V2ViQ29yZTEx
Z2xvYmFsUG9pbnRFUks4X05TUG9pbnRQOE5TV2luZG93CkBAIC0zNTYsNiArMzU4LDcgQEAgX19a
TjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZtb2RpZnlFTlMwXwogX19aTjdXZWJDb3JlMTRGcmFt
ZVNlbGVjdGlvbjVjbGVhckV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uOXNlbGVjdEFs
bEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5TXzVGcmFtZUUKK19fWk43V2Vi
Q29yZTE0TWVtb3J5UHJlc3N1cmUyOGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXJFdgogX19a
TjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYKIF9fWk43V2ViQ29yZTE0
UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKQEAgLTM4MCw2ICszODMsNyBAQCBfX1pON1dl
YkNvcmUxNFNlY3VyaXR5T3JpZ2luNDBzZXREb21haW5SCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9pCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRWkKIF9fWk43V2ViQ29yZTE0ZW5kT2ZQYXJhZ3JhcGhF
UktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUK
K19fWk43V2ViQ29yZTE0bWVtb3J5UHJlc3N1cmVFdgogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVz
b3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180
S1VSTEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdX
ZWJDb3JlMTVET01XcmFwcGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVE
T01XcmFwcGVyV29ybGREMUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4Njk3MikK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYg
Kzc2MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9Mb2dnaW5nLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCcsCkBAIC0zNTY5LDYgKzM1NzAsNyBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL0xpbmtIYXNoLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xvZ2dpbmcuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDg2OTcyKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEwMTksNiArMTAxOSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlNsaWNlLmggXAogICAgIHBsYXRm
b3JtL0xpbmtIYXNoLmNwcCBcCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAgXAorICAgIHBsYXRm
b3JtL01lbW9yeVByZXNzdXJlLmNwcCBcCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAgXAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCBc
CiAgICAgcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIFwKQEAgLTE5OTYs
NiArMTk5Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0xpbmtIYXNoLmggXAogICAg
IHBsYXRmb3JtL0xvZ2dpbmcuaCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuaCBcCisgICAgcGxh
dGZvcnkvTWVtb3J5UHJlc3N1cmUuaCBcCiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2xpZW50LmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gODY5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0NzUsNiArMTQ3NSw5IEBACiAJCTY1NkQzNzQx
MEFEQkE1REUwMEE0NTU0RCAvKiBNYWluUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzI5MEFEQkE1REUwMEE0NTU0RCAv
KiBNYWluUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKIAkJNjU2RDM3NDMwQURCQTVERTAwQTQ1NTRE
IC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyQjBBREJBNURFMDBBNDU1NEQgLyogTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NTZEMzc0ODBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VM
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NkQzNzMwMEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTY1NzFEQ0M4MTM4NUU2QTQw
MDcwMkREMCAvKiBNZW1vcnlQcmVzc3VyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNz
dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NjU3RURBMDgxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0VEQTA2MTM4NUNCOTcwMDRF
MDY0NSAvKiBNZW1vcnlQcmVzc3VyZS5jcHAgKi87IH07CisJCTY1N0VEQTBCMTM4NUNCRDgwMDRF
MDY0NSAvKiBNZW1vcnlQcmVzc3VyZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0VEQTBBMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVz
c3VyZU1hYy5tbSAqLzsgfTsKIAkJNjU4MkExNjMwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRp
bWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU4MkExNTUwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwICovOyB9OwogCQk2
NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUz
NzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5
QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07CkBAIC04MDI2LDYgKzgwMjksOSBAQAog
CQk2NTZEMzcyOTBBREJBNURFMDBBNDU1NEQgLyogTWFpblJlc291cmNlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluUmVzb3VyY2VMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MkIwQURCQTVERTAwQTQ1NTREIC8qIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTZEMzczMDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1N0VEQTA2MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1v
cnlQcmVzc3VyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1v
cnlQcmVzc3VyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1N0VEQTA3MTM4
NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZW1vcnlQcmVzc3VyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2NTdFREEwQTEzODVDQkQ4MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4MkExNTUwOTk5OUQ2RDAwQkVFQjZEIC8q
IFN5c3RlbVRpbWVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN5c3RlbVRpbWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTg0MzY4
NTBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1VSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDA3NCw2ICsxNDA4MCw3IEBACiAJCQkJMDZFODFFRUIwQUI1REE5NzAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKIAkJCQlCQzI1QjUy
ODEzMUM2RDM5MDAxODBFMTAgLyogTG9jYWxpemVkU3RyaW5nc01hYy5tbSAqLywKIAkJCQkxNDAy
NjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSAqLywKKwkJCQk2NTdFREEwQTEz
ODVDQkQ4MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVNYWMubW0gKi8sCiAJCQkJQkM3NzJDNUQw
QzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gKi8sCiAJCQkJQTdEM0M1
MjMwQjU3NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAqLywKIAkJCQk0QjI3MDk4
MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKQEAgLTE4NTQ5LDYgKzE4
NTU2LDggQEAKIAkJCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5n
cy5oICovLAogCQkJCUE4MjM5REZFMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCAqLywK
IAkJCQlBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oICovLAorCQkJCTY1N0VE
QTA2MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZS5jcHAgKi8sCisJCQkJNjU3RURB
MDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlLmggKi8sCiAJCQkJQkM3NzJDNEMw
QzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuY3BwICovLAogCQkJCUJDNzcyQzRE
MEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmggKi8sCiAJCQkJOThFQjFGOTQx
MzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8sCkBAIC0yMjgyOCw2ICsyMjgz
Nyw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Q
b2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTcxRENDODEzODVFNkE0MDA3MDJERDAgLyogTWVt
b3J5UHJlc3N1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU1MDIsNiArMjU1MTIsOCBAQAogCQkJ
CUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNjU3RURBMDgxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVBy
ZXNzdXJlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1N0VEQTBCMTM4NUNCRDgwMDRFMDY0NSAv
KiBNZW1vcnlQcmVzc3VyZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiA4Njk3MikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3Miw2ICsxNzIsMjYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2Vz
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjYXBhY2l0eSAqIGNUYXJnZXRQcnVuZVBlcmNlbnRhZ2UpOyAvLyBDdXQg
YnkgYSBwZXJjZW50YWdlIHRvIGF2b2lkIGltbWVkaWF0ZWx5IHBydW5pbmcgYWdhaW4uCisKKyAg
ICBwcnVuZUxpdmVSZXNvdXJjZXNUb1RhcmdldCh0YXJnZXRTaXplKTsKK30KKwordm9pZCBNZW1v
cnlDYWNoZTo6Zm9yY2VQcnVuZUxpdmVSZXNvdXJjZXMoZmxvYXQgcHJ1bmVQZXJjZW50YWdlKQor
eworICAgIGlmICghbV9wcnVuZUVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChw
cnVuZVBlcmNlbnRhZ2UgPCAwLjBmICB8fCBwcnVuZVBlcmNlbnRhZ2UgPiAwLjk1ZikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBtX2xpdmVTaXplICsgbV9k
ZWFkU2l6ZTsKKyAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGN1cnJlbnRTaXplICogcHJ1bmVQZXJjZW50YWdlKTsKKworICAgIHBydW5lTGl2ZVJlc291cmNl
c1RvVGFyZ2V0KHRhcmdldFNpemUpOworfQorCit2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVS
ZXNvdXJjZXNUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRTaXplKQorewogICAgIGRvdWJsZSBjdXJy
ZW50VGltZSA9IEZyYW1lVmlldzo6Y3VycmVudFBhaW50VGltZVN0YW1wKCk7CiAgICAgaWYgKCFj
dXJyZW50VGltZSkgLy8gSW4gY2FzZSBwcnVuZSBpcyBjYWxsZWQgZGlyZWN0bHksIG91dHNpZGUg
b2YgYSBGcmFtZSBwYWludC4KICAgICAgICAgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CkBAIC0yMTYsOCArMjM2LDI3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291
cmNlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY2FwYWNpdHkgKiBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlKTsgLy8g
Q3V0IGJ5IGEgcGVyY2VudGFnZSB0byBhdm9pZCBpbW1lZGlhdGVseSBwcnVuaW5nIGFnYWluLgor
ICAgIHBydW5lRGVhZFJlc291cmNlc1RvVGFyZ2V0KHRhcmdldFNpemUpOworfQorCit2b2lkIE1l
bW9yeUNhY2hlOjpmb3JjZVBydW5lRGVhZFJlc291cmNlcyhmbG9hdCBwcnVuZVBlcmNlbnRhZ2Up
Cit7CisgICAgaWYgKCFtX3BydW5lRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KHBydW5lUGVyY2VudGFnZSA8IDAuMGYgIHx8IHBydW5lUGVyY2VudGFnZSA+IDAuOTVmKQorICAg
ICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBjdXJyZW50U2l6ZSA9IG1fbGl2ZVNpemUgKyBt
X2RlYWRTaXplOworICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY3VycmVudFNpemUgKiBwcnVuZVBlcmNlbnRhZ2UpOworCisgICAgcHJ1bmVEZWFkUmVzb3Vy
Y2VzVG9UYXJnZXQodGFyZ2V0U2l6ZSk7Cit9CisKK3ZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVh
ZFJlc291cmNlc1RvVGFyZ2V0KHVuc2lnbmVkIHRhcmdldFNpemUpCit7IAogICAgIGludCBzaXpl
ID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpOwotICAgIAorIAogICAgIGlmICghbV9pblBydW5lRGVh
ZFJlc291cmNlcykgewogICAgICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbnkgcHVyZ2VkIHJlc291
cmNlcyB3ZSBjYW4gZXZpY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkocmV2
aXNpb24gODY5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHBy
dW5lTGl2ZVJlc291cmNlcygpOwogICAgIH0KIAorICAgIHZvaWQgZm9yY2VQcnVuZShmbG9hdCB0
YXJnZXRQZXJjZW50TGl2ZSkKKyAgICB7CisgICAgICAgIGZvcmNlUHJ1bmVEZWFkUmVzb3VyY2Vz
KHRhcmdldFBlcmNlbnRMaXZlKTsgLy8gUHJ1bmUgZGVhZCBmaXJzdCwgaW4gY2FzZSBpdCB3YXMg
ImJvcnJvd2luZyIgY2FwYWNpdHkgZnJvbSBsaXZlLgorICAgICAgICBmb3JjZVBydW5lTGl2ZVJl
c291cmNlcyh0YXJnZXRQZXJjZW50TGl2ZSk7CisgICAgfQorCiAgICAgdm9pZCBzZXREZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgeyBtX2RlYWREZWNvZGVk
RGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogICAgIGRvdWJsZSBkZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFE
ZWxldGlvbkludGVydmFsOyB9CiAKQEAgLTE4Miw5ICsxODgsMTMgQEAgcHJpdmF0ZToKIAogICAg
IHVuc2lnbmVkIGxpdmVDYXBhY2l0eSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGRlYWRDYXBhY2l0
eSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCk7IC8vIEZsdXNo
IGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBi
eSBXZWIgcGFnZXMuCi0gICAgdm9pZCBwcnVuZUxpdmVSZXNvdXJjZXMoKTsgLy8gRmx1c2ggZGVj
b2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgor
IAorICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCk7CisgICAgdm9pZCBwcnVuZUxpdmVSZXNv
dXJjZXMoKTsKKyAgICB2b2lkIGZvcmNlUHJ1bmVEZWFkUmVzb3VyY2VzKGZsb2F0IHBydW5lUGVy
Y2VudGFnZSk7CisgICAgdm9pZCBmb3JjZVBydW5lTGl2ZVJlc291cmNlcyhmbG9hdCBwcnVuZVBl
cmNlbnRhZ2UpOworICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzVG9UYXJnZXQodW5zaWduZWQg
dGFyZ2V0U2l6ZSk7IC8vIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291
cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCisgICAgdm9pZCBwcnVuZUxpdmVSZXNv
dXJjZXNUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRTaXplKTsgLy8gRmx1c2ggZGVjb2RlZCBkYXRh
IGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgogCiAgICAgYm9v
bCBtYWtlUmVzb3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGV2aWN0
KENhY2hlZFJlc291cmNlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5
UHJlc3N1cmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVt
b3J5UHJlc3N1cmUqIG1lbW9yeVByZXNzdXJlKCkKK3sKKyAgICBzdGF0aWMgTWVtb3J5UHJlc3N1
cmUqIHN0YXRpY01lbW9yeVByZXNzdXJlID0gbmV3IE1lbW9yeVByZXNzdXJlOworICAgIHJldHVy
biBzdGF0aWNNZW1vcnlQcmVzc3VyZTsKK30KKworTWVtb3J5UHJlc3N1cmU6Ok1lbW9yeVByZXNz
dXJlKCkKK3sKK30KKworI2lmICFQTEFURk9STShNQUMpIHx8IGRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCit2b2lkIE1lbW9y
eVByZXNzdXJlOjppbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkgeyB9OworCit2b2lkIE1l
bW9yeVByZXNzdXJlOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpIHsgfTsKKyNlbmRpZgorIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5UHJlc3N1cmVf
aAorI2RlZmluZSBNZW1vcnlQcmVzc3VyZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZW1vcnlQcmVzc3VyZSB7CitwdWJsaWM6
CisgICAgZnJpZW5kIE1lbW9yeVByZXNzdXJlKiBtZW1vcnlQcmVzc3VyZSgpOworCisgICAgdm9p
ZCBpbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CisKK3ByaXZhdGU6CisgICAgTWVtb3J5
UHJlc3N1cmUoKTsKKyAgICB+TWVtb3J5UHJlc3N1cmUoKTsKKworICAgIHZvaWQgcmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmUoKTsKK307CisgCisvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2Jh
bCBtZW1vcnkgcHJlc3N1cmUgb2JqZWN0LgorTWVtb3J5UHJlc3N1cmUqIG1lbW9yeVByZXNzdXJl
KCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lbW9yeVByZXNzdXJl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1
cmVNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVt
b3J5UHJlc3N1cmVNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIk1lbW9yeVByZXNzdXJlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0dDQ29udHJvbGxl
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlQ2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisjaW1wb3J0IDxkaXNwYXRjaC9zb3VyY2VfcHJpdmF0ZS5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKworc3RhdGljIGRpc3BhdGNoX3NvdXJjZV90
IF9jYWNoZV9ldmVudF9zb3VyY2UgPSAwOworc3RhdGljIGRpc3BhdGNoX3NvdXJjZV90IF9jYWNo
ZV9ldmVudF9zb3VyY2UyID0gMDsKKwordm9pZCBNZW1vcnlQcmVzc3VyZTo6aW5zdGFsbE1lbW9y
eVByZXNzdXJlSGFuZGxlcigpCit7CisgICAgaWYgKCFfY2FjaGVfZXZlbnRfc291cmNlKSB7Cisg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgICAgICBfY2FjaGVfZXZlbnRfc291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQ
QVRDSF9TT1VSQ0VfVFlQRV9WTSwgMCwgRElTUEFUQ0hfVk1fUFJFU1NVUkUsIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOworICAgICAgICAgICAgaWYgKF9jYWNoZV9ldmVudF9zb3VyY2UpIHsK
KyAgICAgICAgICAgICAgICBkaXNwYXRjaF9zZXRfY29udGV4dChfY2FjaGVfZXZlbnRfc291cmNl
LCB0aGlzKTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRs
ZXIoX2NhY2hlX2V2ZW50X3NvdXJjZSwgXnsgbWVtb3J5UHJlc3N1cmUoKS0+cmVzcG9uZFRvTWVt
b3J5UHJlc3N1cmUoKTt9KTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUoX2NhY2hl
X2V2ZW50X3NvdXJjZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworI2lm
bmRlZiBOREVCVUcKKyAgICBpZiAoIV9jYWNoZV9ldmVudF9zb3VyY2UyKSB7CisgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBf
Y2FjaGVfZXZlbnRfc291cmNlMiA9IGRpc3BhdGNoX3NvdXJjZV9jcmVhdGUoRElTUEFUQ0hfU09V
UkNFX1RZUEVfU0lHTkFMLCBTSUdVU1IyLCAwLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
KyAgICAgICAgICAgIGlmIChfY2FjaGVfZXZlbnRfc291cmNlMikgeworICAgICAgICAgICAgICAg
IGRpc3BhdGNoX3NldF9jb250ZXh0KF9jYWNoZV9ldmVudF9zb3VyY2UyLCB0aGlzKTsKKyAgICAg
ICAgICAgICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIoX2NhY2hlX2V2ZW50
X3NvdXJjZTIsIF57IG1lbW9yeVByZXNzdXJlKCktPnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKCk7
fSk7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hfcmVzdW1lKF9jYWNoZV9ldmVudF9zb3VyY2Uy
KTsKKyAgICAgICAgICAgICAgICBzaWduYWwoKGludClTSUdVU1IyLCBTSUdfSUdOKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgTWVtb3J5UHJl
c3N1cmU6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKCkKK3sKKyAgICBpbnQgc2F2ZWRQYWdlQ2Fj
aGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOworICAgIHBhZ2VDYWNoZSgpLT5z
ZXRDYXBhY2l0eShwYWdlQ2FjaGUoKS0+cGFnZUNvdW50KCk+PjEpOworICAgIHBhZ2VDYWNoZSgp
LT5zZXRDYXBhY2l0eShzYXZlZFBhZ2VDYWNoZUNhcGFjaXR5KTsKKyAgICBwYWdlQ2FjaGUoKS0+
cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzTm93KCk7CisKKyAgICBOU1VSTENhY2hlICpuc3VybENh
Y2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdOworICAgIE5TVUludGVnZXIgc2F2ZWRO
c3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07Cisg
ICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6W25zdXJsQ2FjaGUgY3VycmVudE1lbW9y
eVVzYWdlXT4+MV07CisgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6c2F2ZWROc3Vy
bENhY2hlTWVtb3J5Q2FwYWNpdHldOworIAorICAgIG1lbW9yeUNhY2hlKCktPmZvcmNlUHJ1bmUo
MC41Zik7CisKKyAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOworCisgICAg
Ly8gRklYTUU6IHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpIHNlZW1zIHRvIGRlYWRsb2Nr
IG9yIGJ1enkgdGhlIFRDTWFsbG9jIAorICAgIC8vIGluY3JlbWVudGFsIHNjYXZlbmdlci4gIFNl
ZSAKKyAgICAvLworICAgIC8vIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Cit9
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gODY5OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wNS0yMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXByb3ZlIGhhbmRsaW5nIGluIFdlYkNvcmUgb2YgbG93IG1lbW9yeSBzaXR1YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIyMgorCisgICAg
ICAgIEFkZGVkIGNhbGwgdG8gZW5hYmxlIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGluZyBmb3IgTWFj
IGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisKIDIwMTEtMDUtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiA4Njk3MikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Mb2dnaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVtb3J5UHJlc3N1cmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3Vw
Lmg+CkBAIC0xNjQsNiArMTY1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2VzcyhjbwogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBh
cmd1bWVudHMpOwogCisgICAgbWVtb3J5UHJlc3N1cmUoKS0+aW5zdGFsbE1lbW9yeVByZXNzdXJl
SGFuZGxlcigpOworCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gaW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhOwogICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIG1l
c3NhZ2VEZWNvZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4Njk5OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA1LTIwICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcHJvdmUgaGFuZGxpbmcgaW4gV2ViQ29yZSBvZiBsb3cgbWVtb3J5IHNp
dHVhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxMjIyCisKKyAgICAgICAgQWRkZWQgY2FsbCB0byBlbmFibGUgbWVtb3J5IHByZXNzdXJlIGhh
bmRsaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1
bWVudFZpZXdzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIw
MTEtMDUtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkocmV2aXNpb24gODY5NzIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9K
U0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Mb2dnaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lbW9yeVByZXNzdXJlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxp
c3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgpAQCAtNzk4LDYgKzc5OSw4IEBAIC0gKHZv
aWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBbc2VsZiBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOltzZWxmIHByZWZlcmVuY2VzXV07CiAgICAgW1tzZWxmIHByZWZlcmVuY2VzXSBf
cG9zdFByZWZlcmVuY2VzQ2hhbmdlZEFQSU5vdGlmaWNhdGlvbl07CiAKKyAgICBtZW1vcnlQcmVz
c3VyZSgpLT5pbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CisKICAgICBpZiAoIVdlYktp
dExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQ0FMX1JFU09VUkNF
X1NFQ1VSSVRZX1JFU1RSSUNUSU9OKSkgewogICAgICAgICAvLyBPcmlnaW5hbGx5LCB3ZSBhbGxv
d2VkIGFsbCBsb2NhbCBsb2Fkcy4KICAgICAgICAgU2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9h
ZFBvbGljeShTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsKTsK
</data>
<flag name="review"
          id="87581"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94708</attachid>
            <date>2011-05-24 16:10:39 -0700</date>
            <delta_ts>2011-05-24 16:31:22 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>61222-1.patch</filename>
            <type>text/plain</type>
            <size>27342</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MTU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDUtMjQgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBoYW5kbGluZyBpbiBXZWJDb3JlIG9mIGxvdyBt
ZW1vcnkgc2l0dWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjEyMjIKKworICAgICAgICBBZGRlZCBuZXcgY2xhc3MsIE1lbW9yeVByZXNzdXJl
SGFuZGxlciwgdG8gcGxhdGZvcm0gdG8gcmVzcG9uZCB0byBsb3cKKyAgICAgICAgc3lzdGVtIG1l
bW9yeSBldmVudHMuIEFkZGVkIE1hYyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlZHVj
ZXMgdGhlCisgICAgICAgIHBhZ2UgY2FjaGUsIE5TVVJMIGNhY2hlLCBXZWJDb3JlIGNhY2hlIGJ5
IGhhbGYgdGhlaXIgY3VycmVudCB1c2FnZQorICAgICAgICBhbmQgdGhlbiBnYXJiYWdlIGNvbGxl
Y3RzLiAgVGhpcyBjYW4gYWxsb3cgU2FmYXJpIHRvIGNvbnRpbnVlIG9wZXJhdGluZworICAgICAg
ICBpbiBhIGxvdyBtZW1vcnkgc2l0dWF0aW9uIHdpdGggbWluaW1hbCBwYWdpbmcuCisgICAgICAg
IFNwbGl0IHVwIHBydW5lIG9wZXJhdGlvbnMgaW4gTWVtb3J5Q2FjaGUgdG8gYWxsb3cgZm9yIHBy
dW5pbmcgdG8gYQorICAgICAgICBzcGVjaWZpYyBhY3R1YWwgc2l6ZSB0byBzdXBwb3J0IHRoaXMg
Y2hhbmdlLgorCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIGFzIHRoZSBmdW5jdGlvbmFsaXR5IG9m
IFdlYktpdCB3YXNuJ3QgY2hhbmdlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlD
YWNoZTo6Zm9yY2VQcnVuZUxpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlc1RvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpwcnVuZURlYWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OmZvcmNlUHJ1bmVEZWFkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpwcnVuZURlYWRSZXNvdXJjZXNUb1RhcmdldCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Zm9yY2VQ
cnVuZSk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjptZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNz
dXJlKToKKwogMjAxMS0wNS0yNCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5Acmlt
LmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODcxNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMzLDYgKzI1MzMsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4NzE1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNiArNTQ1LDggQEAgX19aTjdXZWJDb3Jl
MjBVc2VyR2VzdHVyZUluZGljYXRvckQxRXYKIF9fWk43V2ViQ29yZTIwbWFrZVJHQkEzMkZyb21G
bG9hdHNFZmZmZgogX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVtQXRJbmRleEVp
CitfX1pON1dlYkNvcmUyMW1lbW9yeVByZXNzdXJlSGFuZGxlckV2CitfX1pON1dlYkNvcmUyMU1l
bW9yeVByZXNzdXJlSGFuZGxlcjdpbnN0YWxsRXYKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXli
b2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlMwXzRUeXBlRWIKIF9fWk43V2Vi
Q29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUyMVJl
c291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxv
YWRQcmlvcml0eUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg3MTU4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNiArNzYxLDcg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0xvZ2dpbmcuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCcsCkBAIC0zNTcxLDYgKzM1NzIsNyBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL0xpbmtIYXNoLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xvZ2dpbmcuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGFzdGVib2FyZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4NzE1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE4LDYgKzEwMTgsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJTbGljZS5oIFwKICAg
ICBwbGF0Zm9ybS9MaW5rSGFzaC5jcHAgXAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKKyAg
ICBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcCBcCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suY3BwIFwKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5j
cHAgXApAQCAtMTk5Miw2ICsxOTkzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vTGlu
a0hhc2guaCBcCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5oIFwKICAgICBwbGF0Zm9ybS9MYW5ndWFn
ZS5oIFwKKyAgICBwbGF0Zm9yeS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBcCiAgICAgcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9u
Q2xpZW50LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDg3MTU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MDcwLDYgKzI2MDcwLDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXE1lbW9yeVByZXNzdXJlSGFuZGxlci5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxOb3RJbXBsZW1lbnRlZC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDg3MTU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgxLDYgKzE0ODEsOSBAQAogCQk2NTZEMzc0MTBBREJB
NURFMDBBNDU1NEQgLyogTWFpblJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyOTBBREJBNURFMDBBNDU1NEQgLyogTWFp
blJlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTY1NkQzNzQzMEFEQkE1REUwMEE0NTU0RCAvKiBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MkIwQURCQTVERTAwQTQ1NTREIC8qIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjU2RDM3NDgwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcz
MDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTcxRENDODEzODVFNkE0MDA3MDJE
RDAgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdFREEwNzEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNjU3RURBMDgxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdF
REEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLzsgfTsK
KwkJNjU3RURBMEIxMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0VEQTBB
MTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0gKi87IH07CiAJ
CTY1ODJBMTYzMDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1UaW1lTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTU1MDk5OTlENkQwMEJF
RUI2RCAvKiBTeXN0ZW1UaW1lTWFjLmNwcCAqLzsgfTsKIAkJNjU4NDM2ODYwQUUwMUI3NDAwRTUz
NzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1
ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtV
UkwuY3BwICovOyB9OwpAQCAtODA0NSw2ICs4MDQ4LDkgQEAKIAkJNjU2RDM3MjkwQURCQTVERTAw
QTQ1NTREIC8qIE1haW5SZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFpblJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1NkQzNzJCMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MzAwQURCQTVE
RTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2NTdFREEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1N0VEQTA3MTM4NUNCOTcw
MDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1N0VEQTBBMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODJB
MTU1MDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1UaW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1UaW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZFJlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFG
IC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxMDAsNiArMTQxMDYsNyBAQAog
CQkJCTA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQubW0gKi8sCiAJCQkJQkMyNUI1MjgxMzFDNkQzOTAwMTgwRTEwIC8qIExvY2FsaXplZFN0cmlu
Z3NNYWMubW0gKi8sCiAJCQkJMTQwMjY0NUQwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMu
bW0gKi8sCisJCQkJNjU3RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFu
ZGxlck1hYy5tbSAqLywKIAkJCQlCQzc3MkM1RDBDNEVCMzQ0MDA4MzI4NUYgLyogTUlNRVR5cGVS
ZWdpc3RyeU1hYy5tbSAqLywKIAkJCQlBN0QzQzUyMzBCNTc2QjRCMDAyQ0E0NTAgLyogUGFzdGVi
b2FyZEhlbHBlci5oICovLAogCQkJCTRCMjcwOTgxMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0ZWJv
YXJkTWFjLm1tICovLApAQCAtMTg1ODEsNiArMTg1ODgsOCBAQAogCQkJCTkzNTIwN0JEMDlCRDQx
MEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi8sCiAJCQkJQTgyMzlERkUwOUIzQ0Y4
QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0
MSAvKiBMb2dnaW5nLmggKi8sCisJCQkJNjU3RURBMDYxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAgKi8sCisJCQkJNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8q
IE1lbW9yeVByZXNzdXJlSGFuZGxlci5oICovLAogCQkJCUJDNzcyQzRDMEM0RUIzMDQwMDgzMjg1
RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCAqLywKIAkJCQlCQzc3MkM0RDBDNEVCMzA0MDA4MzI4
NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oICovLAogCQkJCTk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFF
QSAvKiBOb3RJbXBsZW1lbnRlZC5oICovLApAQCAtMjI4NjgsNiArMjI4NzcsNyBAQAogCQkJCUUx
QkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNjU3MURDQzgxMzg1RTZBNDAwNzAyREQwIC8qIE1lbW9yeVByZXNzdXJlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk4MzY1REQxMzU1RjU1NzAwMUIxODVEIC8qIEpT
UG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk4MzY1REYxMzU1RjU2MjAw
MUIxODVEIC8qIEpTUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MUU1NDU3QjEzNDYyOTFGMDA5MkE1NDUgLyogR2VuZXJhdGVkU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKQEAgLTI1NTQ2LDYgKzI1NTU2LDggQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1N0VE
QTA4MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNjU3RURBMEIxMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFu
ZGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU5ODM2NUU0MTM1NUY2MDQwMDFCMTg1RCAv
KiBKU1Bvc2l0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk4MzY1RTYxMzU1
RjYwRDAwMUIxODVEIC8qIEpTUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIxRTU0NTdBMTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAJKHJldmlzaW9uIDg3MTU4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3MiwyNiBAQCB2b2lk
IE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoKQogICAgICAgICByZXR1cm47CiAKICAg
ICB1bnNpZ25lZCB0YXJnZXRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcGFjaXR5ICog
Y1RhcmdldFBydW5lUGVyY2VudGFnZSk7IC8vIEN1dCBieSBhIHBlcmNlbnRhZ2UgdG8gYXZvaWQg
aW1tZWRpYXRlbHkgcHJ1bmluZyBhZ2Fpbi4KKworICAgIHBydW5lTGl2ZVJlc291cmNlc1RvU2l6
ZSh0YXJnZXRTaXplKTsKK30KKwordm9pZCBNZW1vcnlDYWNoZTo6UHJ1bmVMaXZlUmVzb3VyY2Vz
VG9QZXJjZW50YWdlKGZsb2F0IHBydW5lUGVyY2VudGFnZSkKK3sKKyAgICBpZiAoIW1fcHJ1bmVF
bmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocHJ1bmVQZXJjZW50YWdlIDwgMC4w
ZiAgfHwgcHJ1bmVQZXJjZW50YWdlID4gMC45NWYpCisgICAgICAgIHJldHVybjsKKworICAgIHVu
c2lnbmVkIGN1cnJlbnRTaXplID0gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7CisgICAgdW5zaWdu
ZWQgdGFyZ2V0U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjdXJyZW50U2l6ZSAqIHBydW5l
UGVyY2VudGFnZSk7CisKKyAgICBwcnVuZUxpdmVSZXNvdXJjZXNUb1NpemUodGFyZ2V0U2l6ZSk7
Cit9CisKK3ZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlc1RvU2l6ZSh1bnNpZ25l
ZCB0YXJnZXRTaXplKQorewogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IEZyYW1lVmlldzo6Y3Vy
cmVudFBhaW50VGltZVN0YW1wKCk7CiAgICAgaWYgKCFjdXJyZW50VGltZSkgLy8gSW4gY2FzZSBw
cnVuZSBpcyBjYWxsZWQgZGlyZWN0bHksIG91dHNpZGUgb2YgYSBGcmFtZSBwYWludC4KICAgICAg
ICAgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CkBAIC0yMTYsOCArMjM2LDI3IEBA
IHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlcygpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FwYWNp
dHkgKiBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlKTsgLy8gQ3V0IGJ5IGEgcGVyY2VudGFnZSB0byBh
dm9pZCBpbW1lZGlhdGVseSBwcnVuaW5nIGFnYWluLgorICAgIHBydW5lRGVhZFJlc291cmNlc1Rv
U2l6ZSh0YXJnZXRTaXplKTsKK30KKwordm9pZCBNZW1vcnlDYWNoZTo6UHJ1bmVEZWFkUmVzb3Vy
Y2VzVG9QZXJjZW50YWdlKGZsb2F0IHBydW5lUGVyY2VudGFnZSkKK3sKKyAgICBpZiAoIW1fcHJ1
bmVFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocHJ1bmVQZXJjZW50YWdlIDwg
MC4wZiAgfHwgcHJ1bmVQZXJjZW50YWdlID4gMC45NWYpCisgICAgICAgIHJldHVybjsKKworICAg
IHVuc2lnbmVkIGN1cnJlbnRTaXplID0gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7CisgICAgdW5z
aWduZWQgdGFyZ2V0U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjdXJyZW50U2l6ZSAqIHBy
dW5lUGVyY2VudGFnZSk7CisKKyAgICBwcnVuZURlYWRSZXNvdXJjZXNUb1NpemUodGFyZ2V0U2l6
ZSk7Cit9CisKK3ZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlc1RvU2l6ZSh1bnNp
Z25lZCB0YXJnZXRTaXplKQoreyAKICAgICBpbnQgc2l6ZSA9IG1fYWxsUmVzb3VyY2VzLnNpemUo
KTsKLSAgICAKKyAKICAgICBpZiAoIW1faW5QcnVuZURlYWRSZXNvdXJjZXMpIHsKICAgICAgICAg
Ly8gU2VlIGlmIHdlIGhhdmUgYW55IHB1cmdlZCByZXNvdXJjZXMgd2UgY2FuIGV2aWN0LgogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDg3MTU4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw2ICsxMzksMTIgQEAgcHVibGljOgogICAgICAgICBwcnVuZUxpdmVSZXNvdXJjZXMoKTsKICAg
ICB9CiAKKyAgICB2b2lkIHBydW5lVG9QZXJjZW50YWdlKGZsb2F0IHRhcmdldFBlcmNlbnRMaXZl
KQorICAgIHsKKyAgICAgICAgUHJ1bmVEZWFkUmVzb3VyY2VzVG9QZXJjZW50YWdlKHRhcmdldFBl
cmNlbnRMaXZlKTsgLy8gUHJ1bmUgZGVhZCBmaXJzdCwgaW4gY2FzZSBpdCB3YXMgImJvcnJvd2lu
ZyIgY2FwYWNpdHkgZnJvbSBsaXZlLgorICAgICAgICBQcnVuZUxpdmVSZXNvdXJjZXNUb1BlcmNl
bnRhZ2UodGFyZ2V0UGVyY2VudExpdmUpOworICAgIH0KKwogICAgIHZvaWQgc2V0RGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIHsgbV9kZWFkRGVjb2RlZERh
dGFEZWxldGlvbkludGVydmFsID0gaW50ZXJ2YWw7IH0KICAgICBkb3VibGUgZGVhZERlY29kZWRE
YXRhRGVsZXRpb25JbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbDsgfQogCkBAIC0xODIsOSArMTg4LDE1IEBAIHByaXZhdGU6CiAKICAgICB1
bnNpZ25lZCBsaXZlQ2FwYWNpdHkoKSBjb25zdDsKICAgICB1bnNpZ25lZCBkZWFkQ2FwYWNpdHko
KSBjb25zdDsKLSAgICAKLSAgICB2b2lkIHBydW5lRGVhZFJlc291cmNlcygpOyAvLyBGbHVzaCBk
ZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgbm90IHJlZmVyZW5jZWQgYnkg
V2ViIHBhZ2VzLgotICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzKCk7IC8vIEZsdXNoIGRlY29k
ZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KKwor
ICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9t
IHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCisgICAgLy8gcHJ1bmVMaXZl
KigpIC0gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQg
YnkgV2ViIHBhZ2VzLgorICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCk7IC8vIEF1dG9tYXRp
Y2FsbHkgZGVjaWRlIGhvdyBtdWNoIHRvIHBydW5lLgorICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3Vy
Y2VzKCk7CisgICAgdm9pZCBQcnVuZURlYWRSZXNvdXJjZXNUb1BlcmNlbnRhZ2UoZmxvYXQgcHJ1
bmVQZXJjZW50YWdlKTsKKyAgICB2b2lkIFBydW5lTGl2ZVJlc291cmNlc1RvUGVyY2VudGFnZShm
bG9hdCBwcnVuZVBlcmNlbnRhZ2UpOworICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzVG9TaXpl
KHVuc2lnbmVkIHRhcmdldFNpemUpOworICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXpl
KHVuc2lnbmVkIHRhcmdldFNpemUpOwogCiAgICAgYm9vbCBtYWtlUmVzb3VyY2VQdXJnZWFibGUo
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGV2aWN0KENhY2hlZFJlc291cmNlKik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lbW9yeVByZXNzdXJlSGFuZGxlciYg
bWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1lbW9y
eVByZXNzdXJlSGFuZGxlciwgc3RhdGljTWVtb3J5UHJlc3N1cmVIYW5kbGVyLCAoKSk7CisgICAg
cmV0dXJuIHN0YXRpY01lbW9yeVByZXNzdXJlSGFuZGxlcjsKK30KKworTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKSB7fQorCisjaWYgIVBMQVRGT1JNKE1BQykg
fHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkgeyB9Owor
Cit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKSB7
IH07CisjZW5kaWYKKyAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1lbW9yeVByZXNzdXJlSGFuZGxlcl9oCisjZGVmaW5lIE1l
bW9yeVByZXNzdXJlSGFuZGxlcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeworcHVibGlj
OgorICAgIGZyaWVuZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuZGxl
cigpOworCisgICAgdm9pZCBpbnN0YWxsKCk7CisKK3ByaXZhdGU6CisgICAgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyKCk7CisgICAgfk1lbW9yeVByZXNzdXJlSGFuZGxlcigpOworCisgICAgdm9pZCBy
ZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpOworfTsKKyAKKy8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0
aGUgZ2xvYmFsIG1lbW9yeSBwcmVzc3VyZSBvYmplY3QuCitNZW1vcnlQcmVzc3VyZUhhbmRsZXIm
IG1lbW9yeVByZXNzdXJlSGFuZGxlcigpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNZW1vcnlQcmVzc3VyZUhhbmRsZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFu
ZGxlck1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorI2ltcG9ydCA8V2ViQ29yZS9HQ0NvbnRyb2xs
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UGFnZUNhY2hlLmg+CisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorCisjaWYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQorI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKworI2lmbmRlZiBESVNQQVRDSF9TT1VS
Q0VfVFlQRV9WTQorI2RlZmluZSBESVNQQVRDSF9TT1VSQ0VfVFlQRV9WTSAoJl9kaXNwYXRjaF9z
b3VyY2VfdHlwZV92bSkKK0RJU1BBVENIX0VYUE9SVCBjb25zdCBzdHJ1Y3QgZGlzcGF0Y2hfc291
cmNlX3R5cGVfcyBfZGlzcGF0Y2hfc291cmNlX3R5cGVfdm07CisjZW5kaWYKKworI2lmZGVmIERJ
U1BBVENIX1ZNX1BSRVNTVVJFCitlbnVtIHsKKyBESVNQQVRDSF9WTV9QUkVTU1VSRSA9IDB4ODAw
MDAwMDAsCit9OworI2VuZGlmCisKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisKK3N0YXRpYyBkaXNwYXRjaF9zb3VyY2VfdCBfY2FjaGVfZXZlbnRfc291
cmNlID0gMDsKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgZGlzcGF0Y2hfc291cmNlX3QgX2NhY2hl
X2V2ZW50X3NvdXJjZTIgPSAwOworI2VuZGlmCisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKCkKK3sKKyAgICBpZiAoIV9jYWNoZV9ldmVudF9zb3VyY2UpIHsKKyAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAg
IF9jYWNoZV9ldmVudF9zb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NP
VVJDRV9UWVBFX1ZNLCAwLCBESVNQQVRDSF9WTV9QUkVTU1VSRSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSk7CisgICAgICAgICAgICBpZiAoX2NhY2hlX2V2ZW50X3NvdXJjZSkgeworICAgICAg
ICAgICAgICAgIGRpc3BhdGNoX3NldF9jb250ZXh0KF9jYWNoZV9ldmVudF9zb3VyY2UsIHRoaXMp
OworICAgICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihfY2Fj
aGVfZXZlbnRfc291cmNlLCBeeyBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5yZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSgpO30pOworICAgICAgICAgICAgICAgIGRpc3BhdGNoX3Jlc3VtZShfY2FjaGVf
ZXZlbnRfc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisjaWZu
ZGVmIE5ERUJVRworICAgIGlmICghX2NhY2hlX2V2ZW50X3NvdXJjZTIpIHsKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIF9j
YWNoZV9ldmVudF9zb3VyY2UyID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQQVRDSF9TT1VS
Q0VfVFlQRV9TSUdOQUwsIFNJR1VTUjIsIDAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwor
ICAgICAgICAgICAgaWYgKF9jYWNoZV9ldmVudF9zb3VyY2UyKSB7CisgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hfc2V0X2NvbnRleHQoX2NhY2hlX2V2ZW50X3NvdXJjZTIsIHRoaXMpOworICAgICAg
ICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihfY2FjaGVfZXZlbnRf
c291cmNlMiwgXnsgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkucmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmUoKTt9KTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9yZXN1bWUoX2NhY2hlX2V2ZW50X3Nv
dXJjZTIpOworICAgICAgICAgICAgICAgIHNpZ25hbCgoaW50KVNJR1VTUjIsIFNJR19JR04pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKCkKK3sKKyAgICBpbnQg
c2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOworICAgIHBh
Z2VDYWNoZSgpLT5zZXRDYXBhY2l0eShwYWdlQ2FjaGUoKS0+cGFnZUNvdW50KCk+PjEpOworICAg
IHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShzYXZlZFBhZ2VDYWNoZUNhcGFjaXR5KTsKKyAgICBw
YWdlQ2FjaGUoKS0+cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzTm93KCk7CisKKyAgICBOU1VSTENh
Y2hlICpuc3VybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdOworICAgIE5TVUlu
dGVnZXIgc2F2ZWROc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBtZW1vcnlD
YXBhY2l0eV07CisgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6W25zdXJsQ2FjaGUg
Y3VycmVudE1lbW9yeVVzYWdlXT4+MV07CisgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNp
dHk6c2F2ZWROc3VybENhY2hlTWVtb3J5Q2FwYWNpdHldOworIAorICAgIG1lbW9yeUNhY2hlKCkt
PnBydW5lVG9QZXJjZW50YWdlKDAuNWYpOworCisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNv
bGxlY3ROb3coKTsKKworICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Cit9
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gODcxNTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wNS0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXByb3ZlIGhhbmRsaW5nIGluIFdlYkNvcmUgb2YgbG93IG1lbW9yeSBzaXR1YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIyMgorCisgICAg
ICAgIEFkZGVkIGNhbGwgdG8gZW5hYmxlIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGluZyBmb3IgTWFj
IGNhc2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisKIDIwMTEtMDUtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBhZnRlciByODcxNTMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gODcxNTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2
ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlR3JvdXAuaD4KQEAgLTE2NCw2ICsxNjUsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxp
emVXZWJQcm9jZXNzKGNvCiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKHBhcmFt
ZXRlcnMsIGFyZ3VtZW50cyk7CiAKKyAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5pbnN0YWxs
KCk7CisKICAgICBSZWZQdHI8QVBJT2JqZWN0PiBpbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGE7CiAgICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURl
Y29kZXIoaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKTsKICAgICBpZiAoIWFy
Z3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg3MTU4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMjQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wcm92ZSBoYW5kbGluZyBpbiBXZWJDb3JlIG9mIGxvdyBtZW1vcnkgc2l0dWF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMjIK
KworICAgICAgICBBZGRlZCBjYWxsIHRvIGVuYWJsZSBtZW1vcnkgcHJlc3N1cmUgaGFuZGxpbmcu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmll
d3M6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAxMS0wNS0y
MCAgSmVyZW15IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiA4NzE1OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvZ2dpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgpAQCAtNzk4LDYgKzc5OSw4IEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBbc2VsZiBfcHJl
ZmVyZW5jZXNDaGFuZ2VkOltzZWxmIHByZWZlcmVuY2VzXV07CiAgICAgW1tzZWxmIHByZWZlcmVu
Y2VzXSBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZEFQSU5vdGlmaWNhdGlvbl07CiAKKyAgICBtZW1v
cnlQcmVzc3VyZUhhbmRsZXIoKS5pbnN0YWxsKCk7CisKICAgICBpZiAoIVdlYktpdExpbmtlZE9u
T3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0xPQ0FMX1JFU09VUkNFX1NFQ1VSSVRZ
X1JFU1RSSUNUSU9OKSkgewogICAgICAgICAvLyBPcmlnaW5hbGx5LCB3ZSBhbGxvd2VkIGFsbCBs
b2NhbCBsb2Fkcy4KICAgICAgICAgU2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9hZFBvbGljeShT
ZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsKTsK
</data>
<flag name="review"
          id="88056"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>