<?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>31020</bug_id>
          
          <creation_ts>2009-11-02 10:36:54 -0800</creation_ts>
          <short_desc>String::crossThreadString is badly named.</short_desc>
          <delta_ts>2011-10-23 18:05:49 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>70698</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dimich</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159844</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-02 10:36:54 -0800</bug_when>
    <thetext>It makes it sound like the returned string may be used on more than one thread.

The fix is to rename this to &quot;copy&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159846</commentid>
    <comment_count>1</comment_count>
      <attachid>42325</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-02 10:44:00 -0800</bug_when>
    <thetext>Created attachment 42325
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159847</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-02 10:46:22 -0800</bug_when>
    <thetext>This part is only for the crossThreadString method.

One issue: Should the copy method in String not be const anymore? (The const seems to imply that it is threadsafe like the length method but the copy method isn&apos;t threadsafe.)

There needs to be another patch to change the threadsafeCopy method to something else (which I haven&apos;t yet figured out a good name for).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160741</commentid>
    <comment_count>3</comment_count>
      <attachid>42325</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-04 23:07:49 -0800</bug_when>
    <thetext>Comment on attachment 42325
Proposed fix.

I&apos;m unsure about this name -- it doesn&apos;t seem to imply thread safety except by implying that it&apos;s a &quot;real&quot; copy, eg. implying that it&apos;s slow :-/

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161011</commentid>
    <comment_count>4</comment_count>
      <attachid>42325</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-05 16:26:03 -0800</bug_when>
    <thetext>Comment on attachment 42325
Proposed fix.

I understand that crossThreadString is a poor name. But copy doesn&apos;t seem to be better. Since a StringImpl is immutable it makes little sense to talk about copying a handle to one. I think the name has to say *something* about threading or at least something that mentions the storage or reference count. Maybe createDetachedCopy or deepCopy would be best?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161654</commentid>
    <comment_count>5</comment_count>
      <attachid>42325</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-09 11:12:36 -0800</bug_when>
    <thetext>Comment on attachment 42325
Proposed fix.

Marking r- to move out of review queue per bug comments about a better name being needed.

Must go off and brainstorm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189738</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-11 10:43:37 -0800</bug_when>
    <thetext>I&apos;ve brainstormed a lot of potential names below:

  createForAnotherThread

  instanceForAnotherThread
  getInstanceForAnotherThread
  createInstanceForAnotherThread

  getReferenceForAnotherThread
  referenceForAnotherThread
  createReferenceForAnotherThread

  createNewInstance

  createDuplicateInstance


Personally, I like createDuplicateInstance because it doesn&apos;t imply the slowness of &quot;copy&quot; but yet seemed to indicate that there is a new instance with the same information which is what you need for another thread.

Is everyone (who wants to give an opinion) fine with &quot;createDuplicateInstance&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189764</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-11 11:53:43 -0800</bug_when>
    <thetext>createDuplicateInstance sounds good.

How about simply &quot;clone&quot;? It is usually the same as &apos;deepCopy&apos;, but hopefully without mandatory slowness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190103</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-12 11:14:53 -0800</bug_when>
    <thetext>I’d like to help.

Could someone briefly review here when code needs to call this function and how it should be used? A quick how-to paragraph. I’m hoping that some of the words in that explanation could provide the inspiration for an even-better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190107</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-12 11:32:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I’d like to help.
&gt; 
&gt; Could someone briefly review here when code needs to call this function and how
&gt; it should be used? A quick how-to paragraph. I’m hoping that some of the words
&gt; in that explanation could provide the inspiration for an even-better name.

The method should be called when code wants a string with the same contents for use on another thread.

It returns a duplicate of the string that is safe to pass to another thread. It attempts to do this efficiently by only doing a real copy for &quot;small&quot; strings. For other strings, it makes the string switch to a (relatively efficient) threadsafe ref counting mechanism for the underlying buffer.

Due to the way this method works, it is not threadsafe (when it does the switch to the threadsafe ref counting mechanism) unlike a read-only copy method would be., so the &quot;const&quot; attribute for the method should probably be removed to make this more clear. (I&apos;ve been strongly considering this for another patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489090</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-23 18:05:49 -0700</bug_when>
    <thetext>This is being cleaned up in 70698.

*** This bug has been marked as a duplicate of bug 70698 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42325</attachid>
            <date>2009-11-02 10:44:00 -0800</date>
            <delta_ts>2010-06-10 20:55:30 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug31020.txt</filename>
            <type>text/plain</type>
            <size>25455</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQzMjZlNC4uMmMzNDNjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAwOS0xMS0wMiAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RyaW5nOjpjcm9zc1RocmVhZFN0cmluZyBpcyBiYWRseSBuYW1lZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMDIwCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgY29uc2lzdCBvZiBzL2Nyb3NzVGhyZWFkU3RyaW5nL2NvcHkv
LgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIChvbmx5IGEgZnVuY3Rpb24gbmFt
ZSBjaGFuZ2UpLCBzbyBubyBuZXcgdGVzdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkT2JqZWN0
OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNvbnZl
cnRJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAqIGxvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6Om9wZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRm9yUGFnZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6Omljb25VUkxGb3JQYWdlVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9yUGFnZVVSTCk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBTdHJpbmc+Ojpjb3B5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNvcHkpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQ
SGVhZGVyTWFwOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6Y29w
eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNvcHlEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6Y29weSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0ltcGw6
OmNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAq
IHN0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hh
bmdlVmVyc2lvbldyYXBwZXI6OkNoYW5nZVZlcnNpb25XcmFwcGVyKToKKyAgICAgICAgKiBzdG9y
YWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCk6CisgICAg
ICAgICogc3RvcmFnZS9TUUxTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMU3Rh
dGVtZW50OjpTUUxTdGF0ZW1lbnQpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6c3luY1RpbWVyRmlyZWQp
OgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcik6CisgICAgICAgICogd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHkpOgorICAgICAgICAqIHdvcmtl
cnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
clRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV4Y2VwdGlvblRhc2s6
OldvcmtlckV4Y2VwdGlvblRhc2spOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
U3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKToKKwogMjAwOS0xMS0wMiAgS2Fp
IEtvZWhuZSAgPGthaS5rb2VobmVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhv
bGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCA0OGNkOTJkLi43OTZlMWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fbmFtZXMu
c2l6ZSgpID09IG1fdmFsdWVzLnNpemUoKSk7Ci0gICAgICAgIG1fbmFtZXMuYXBwZW5kKFN0cmlu
Zyhwcm9wZXJ0eU5hbWUudXN0cmluZygpKS5jcm9zc1RocmVhZFN0cmluZygpLmltcGwoKSk7Cisg
ICAgICAgIG1fbmFtZXMuYXBwZW5kKFN0cmluZyhwcm9wZXJ0eU5hbWUudXN0cmluZygpKS5jb3B5
KCkuaW1wbCgpKTsKICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlKTsKICAgICB9CiAKQEAg
LTYzMyw3ICs2MzMsNyBAQCBzdHJ1Y3QgRGVzZXJpYWxpemluZ1RyZWVXYWxrZXIgOiBwdWJsaWMg
QmFzZVdhbGtlciB7CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6
Ok9iamVjdFR5cGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAg
ICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U3RyaW5nVHlwZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4ganNTdHJpbmcobV9leGVjLCB2YWx1ZS5hc1N0cmluZygpLmNyb3NzVGhy
ZWFkU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhtX2V4ZWMsIHZh
bHVlLmFzU3RyaW5nKCkuY29weSgpKTsKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlw
dFZhbHVlRGF0YTo6SW1tZWRpYXRlVHlwZToKICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUu
YXNJbW1lZGlhdGUoKTsKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0
YTo6TnVtYmVyVHlwZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCmluZGV4IGY4YTEyNmYuLjUzMDU4MWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICAgICAgICAgIDogbV90eXBlKFN0cmluZ1R5cGUpCi0gICAgICAgICAg
ICAsIG1fc3RyaW5nKHN0cmluZy5jcm9zc1RocmVhZFN0cmluZygpKSAvLyBGSVhNRTogU2hvdWxk
IGJlIGFibGUgdG8ganVzdCBzaGFyZSB0aGUgUmVwCisgICAgICAgICAgICAsIG1fc3RyaW5nKHN0
cmluZy5jb3B5KCkpIC8vIEZJWE1FOiBTaG91bGQgYmUgYWJsZSB0byBqdXN0IHNoYXJlIHRoZSBS
ZXAKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggYmQzNjJmNC4uNjgxOTc1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRo
cmVhZGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcih3
b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQcm94eShsb2FkZXJQcm94eSkKLSAg
ICAsIG1fdGFza01vZGUodGFza01vZGUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fdGFz
a01vZGUodGFza01vZGUuY29weSgpKQogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBw
ZXIuZ2V0KCkpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxs
YmFja1Rhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIsIHRoaXMs
IHJlcXVlc3QsIG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRl
eCA0YmUzNjg0Li44NGE1ZjE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBk
YXRhYmFzZVBhdGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX2RhdGFi
YXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VQYXRoLmNyb3NzVGhyZWFkU3RyaW5nKCk7CisgICAgbV9k
YXRhYmFzZURpcmVjdG9yeSA9IGRhdGFiYXNlUGF0aC5jb3B5KCk7CiAKICAgICAvLyBGb3JtdWxh
dGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGZpbGUKICAgICBtX2NvbXBsZXRlRGF0
YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3Rvcnks
IGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEltYWdlKiBJ
Y29uRGF0YWJhc2U6Omljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFs
LCBjb25zdCBJbnRTaXplCiAgICAgCiAgICAgUGFnZVVSTFJlY29yZCogcGFnZVJlY29yZCA9IG1f
cGFnZVVSTFRvUmVjb3JkTWFwLmdldChwYWdlVVJMT3JpZ2luYWwpOwogICAgIGlmICghcGFnZVJl
Y29yZCkgewotICAgICAgICBwYWdlVVJMQ29weSA9IHBhZ2VVUkxPcmlnaW5hbC5jcm9zc1RocmVh
ZFN0cmluZygpOworICAgICAgICBwYWdlVVJMQ29weSA9IHBhZ2VVUkxPcmlnaW5hbC5jb3B5KCk7
CiAgICAgICAgIHBhZ2VSZWNvcmQgPSBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQocGFnZVVSTENv
cHkpOwogICAgIH0KICAgICAKQEAgLTI2Myw3ICsyNjMsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNl
OjppY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50
U2l6ZQogICAgIC8vIG1hcmsgaXQgdG8gYmUgcmVhZCBieSB0aGUgYmFja2dyb3VuZCB0aHJlYWQK
ICAgICBpZiAoaWNvblJlY29yZC0+aW1hZ2VEYXRhU3RhdHVzKCkgPT0gSW1hZ2VEYXRhU3RhdHVz
VW5rbm93bikgewogICAgICAgICBpZiAocGFnZVVSTENvcHkuaXNOdWxsKCkpCi0gICAgICAgICAg
ICBwYWdlVVJMQ29weSA9IHBhZ2VVUkxPcmlnaW5hbC5jcm9zc1RocmVhZFN0cmluZygpOworICAg
ICAgICAgICAgcGFnZVVSTENvcHkgPSBwYWdlVVJMT3JpZ2luYWwuY29weSgpOwogICAgIAogICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICBt
X3BhZ2VVUkxzSW50ZXJlc3RlZEluSWNvbnMuYWRkKHBhZ2VVUkxDb3B5KTsKQEAgLTMxMiw3ICsz
MTIsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjppY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCkKICAgICAKICAgICBQYWdlVVJMUmVjb3JkKiBwYWdlUmVjb3Jk
ID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAuZ2V0KHBhZ2VVUkxPcmlnaW5hbCk7CiAgICAgaWYgKCFw
YWdlUmVjb3JkKQotICAgICAgICBwYWdlUmVjb3JkID0gZ2V0T3JDcmVhdGVQYWdlVVJMUmVjb3Jk
KHBhZ2VVUkxPcmlnaW5hbC5jcm9zc1RocmVhZFN0cmluZygpKTsKKyAgICAgICAgcGFnZVJlY29y
ZCA9IGdldE9yQ3JlYXRlUGFnZVVSTFJlY29yZChwYWdlVVJMT3JpZ2luYWwuY29weSgpKTsKICAg
ICAKICAgICAvLyBJZiBwYWdlUmVjb3JkIGlzIE5VTEwsIG9uZSBvZiB0d28gdGhpbmdzIGlzIHRy
dWUgLQogICAgIC8vIDEgLSBUaGUgaW5pdGlhbCB1cmwgaW1wb3J0IGlzIGluY29tcGxldGUgYW5k
IHRoaXMgcGFnZVVSTCBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCB0byBiZSBub3RpZmllZCBvbmNl
IGl0IGlzIGNvbXBsZXRlIGlmIGFuIGljb25VUkwgZXhpc3RzCkBAIC00MDUsNyArNDA1LDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTE9yaWdpbmFsKQogICAgIFN0cmluZyBwYWdlVVJMOwogICAgIAogICAgIGlmICghcmVjb3Jk
KSB7Ci0gICAgICAgIHBhZ2VVUkwgPSBwYWdlVVJMT3JpZ2luYWwuY3Jvc3NUaHJlYWRTdHJpbmco
KTsKKyAgICAgICAgcGFnZVVSTCA9IHBhZ2VVUkxPcmlnaW5hbC5jb3B5KCk7CiAKICAgICAgICAg
cmVjb3JkID0gbmV3IFBhZ2VVUkxSZWNvcmQocGFnZVVSTCk7CiAgICAgICAgIG1fcGFnZVVSTFRv
UmVjb3JkTWFwLnNldChwYWdlVVJMLCByZWNvcmQpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxP
cmlnaW5hbCkKICAgICAKICAgICBpZiAoIXJlY29yZC0+cmV0YWluKCkpIHsKICAgICAgICAgaWYg
KHBhZ2VVUkwuaXNOdWxsKCkpCi0gICAgICAgICAgICBwYWdlVVJMID0gcGFnZVVSTE9yaWdpbmFs
LmNyb3NzVGhyZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBwYWdlVVJMID0gcGFnZVVSTE9yaWdp
bmFsLmNvcHkoKTsKIAogICAgICAgICAvLyBUaGlzIHBhZ2UganVzdCBoYWQgaXRzIHJldGFpbiBj
b3VudCBidW1wZWQgZnJvbSAwIHRvIDEgLSBSZWNvcmQgdGhhdCBmYWN0CiAgICAgICAgIG1fcmV0
YWluZWRQYWdlVVJMcy5hZGQocGFnZVVSTCk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBJY29u
RGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCkKICAgICAvLyBNYXJrIHN0dWZmIGZvciBkZWxldGlvbiBmcm9tIHRoZSBkYXRhYmFzZSBv
bmx5IGlmIHdlJ3JlIG5vdCBpbiBwcml2YXRlIGJyb3dzaW5nCiAgICAgaWYgKCFtX3ByaXZhdGVC
cm93c2luZ0VuYWJsZWQpIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5
bmNMb2NrKTsKLSAgICAgICAgbV9wYWdlVVJMc1BlbmRpbmdTeW5jLnNldChwYWdlVVJMT3JpZ2lu
YWwuY3Jvc3NUaHJlYWRTdHJpbmcoKSwgcGFnZVJlY29yZC0+c25hcHNob3QodHJ1ZSkpOworICAg
ICAgICBtX3BhZ2VVUkxzUGVuZGluZ1N5bmMuc2V0KHBhZ2VVUkxPcmlnaW5hbC5jb3B5KCksIHBh
Z2VSZWNvcmQtPnNuYXBzaG90KHRydWUpKTsKICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBwYWdl
IGlzIHRoZSBsYXN0IHBhZ2UgdG8gcmVmZXIgdG8gYSBwYXJ0aWN1bGFyIEljb25SZWNvcmQsIHRo
YXQgSWNvblJlY29yZCBuZWVkcyB0bwogICAgICAgICAvLyBiZSBtYXJrZWQgZm9yIGRlbGV0aW9u
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNv
blVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/
IGRhdGFPcmlnaW5hbC0+Y29weSgpIDogMDsKLSAgICBTdHJpbmcgaWNvblVSTCA9IGljb25VUkxP
cmlnaW5hbC5jcm9zc1RocmVhZFN0cmluZygpOworICAgIFN0cmluZyBpY29uVVJMID0gaWNvblVS
TE9yaWdpbmFsLmNvcHkoKTsKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiBwYWdlVVJMczsKICAg
ICB7CkBAIC01ODksOCArNTg5LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25VUkxGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTE9yaWdpbmFsLCBjb25zdCBTdHIKICAgICAgICAg
aWYgKHBhZ2VSZWNvcmQgJiYgcGFnZVJlY29yZC0+aWNvblJlY29yZCgpICYmIHBhZ2VSZWNvcmQt
Pmljb25SZWNvcmQoKS0+aWNvblVSTCgpID09IGljb25VUkxPcmlnaW5hbCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBwYWdlVVJMID0gcGFnZVVSTE9yaWdpbmFs
LmNyb3NzVGhyZWFkU3RyaW5nKCk7Ci0gICAgICAgIGljb25VUkwgPSBpY29uVVJMT3JpZ2luYWwu
Y3Jvc3NUaHJlYWRTdHJpbmcoKTsKKyAgICAgICAgcGFnZVVSTCA9IHBhZ2VVUkxPcmlnaW5hbC5j
b3B5KCk7CisgICAgICAgIGljb25VUkwgPSBpY29uVVJMT3JpZ2luYWwuY29weSgpOwogCiAgICAg
ICAgIGlmICghcGFnZVJlY29yZCkgewogICAgICAgICAgICAgcGFnZVJlY29yZCA9IG5ldyBQYWdl
VVJMUmVjb3JkKHBhZ2VVUkwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1Ro
cmVhZENvcGllci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApp
bmRleCBkMDJkYTZjLi45Y2E2MjZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENyb3NzVGhyZWFk
Q29waWVyQmFzZTxmYWxzZSwgU3RyaW5nPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIFN0cmluZz46OmNvcHkoY29uc3QgU3RyaW5nJiBzdHIpCiB7Ci0gICAgcmV0dXJuIHN0ci5j
cm9zc1RocmVhZFN0cmluZygpOworICAgIHJldHVybiBzdHIuY29weSgpOwogfQogCiBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIFJlc291cmNlRXJyb3I+OjpUeXBlIENyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgUmVzb3VyY2VFcnJvcj46OmNvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmNwcAppbmRleCBjNTgyOWQyLi4zMjY4ZTZhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAg
LTUyOSw3ICs1MjksNyBAQCB2b2lkIEtVUkw6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3Qg
U3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbgogS1VSTCBLVVJMOjpjb3B5
KCkgY29uc3QKIHsKICAgICBLVVJMIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5tX3N0cmlu
ZyA9IHJlc3VsdC5tX3N0cmluZy5jcm9zc1RocmVhZFN0cmluZygpOworICAgIHJlc3VsdC5tX3N0
cmluZyA9IHJlc3VsdC5tX3N0cmluZy5jb3B5KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IDA3YzY2ZTgu
LmZmNDcwYTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVy
TWFwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4g
SFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAogCiAgICAgSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kX2l0ID0gZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGJlZ2luKCk7IGl0ICE9IGVuZF9pdDsgKytpdCkgewotICAgICAgICBk
YXRhLT5hcHBlbmQobWFrZV9wYWlyKGl0LT5maXJzdC5zdHJpbmcoKS5jcm9zc1RocmVhZFN0cmlu
ZygpLCBpdC0+c2Vjb25kLmNyb3NzVGhyZWFkU3RyaW5nKCkpKTsKKyAgICAgICAgZGF0YS0+YXBw
ZW5kKG1ha2VfcGFpcihpdC0+Zmlyc3Quc3RyaW5nKCkuY29weSgpLCBpdC0+c2Vjb25kLmNvcHko
KSkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDk3NDM1YmEuLjM3MDY1MGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApAQCAtMzQs
MTAgKzM0LDEwIEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvckJhc2U6OmNvcHkoKSBjb25z
dAogICAgIGxhenlJbml0KCk7CiAKICAgICBSZXNvdXJjZUVycm9yIGVycm9yQ29weTsKLSAgICBl
cnJvckNvcHkubV9kb21haW4gPSBtX2RvbWFpbi5jcm9zc1RocmVhZFN0cmluZygpOworICAgIGVy
cm9yQ29weS5tX2RvbWFpbiA9IG1fZG9tYWluLmNvcHkoKTsKICAgICBlcnJvckNvcHkubV9lcnJv
ckNvZGUgPSBtX2Vycm9yQ29kZTsKLSAgICBlcnJvckNvcHkubV9mYWlsaW5nVVJMID0gbV9mYWls
aW5nVVJMLmNyb3NzVGhyZWFkU3RyaW5nKCk7Ci0gICAgZXJyb3JDb3B5Lm1fbG9jYWxpemVkRGVz
Y3JpcHRpb24gPSBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyb3NzVGhyZWFkU3RyaW5nKCk7Cisg
ICAgZXJyb3JDb3B5Lm1fZmFpbGluZ1VSTCA9IG1fZmFpbGluZ1VSTC5jb3B5KCk7CisgICAgZXJy
b3JDb3B5Lm1fbG9jYWxpemVkRGVzY3JpcHRpb24gPSBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNv
cHkoKTsKICAgICBlcnJvckNvcHkubV9pc051bGwgPSBtX2lzTnVsbDsKICAgICBlcnJvckNvcHku
bV9pc0NhbmNlbGxhdGlvbiA9IG1faXNDYW5jZWxsYXRpb247CiAgICAgcmV0dXJuIGVycm9yQ29w
eTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cAppbmRleCBlMDcwN2Q5Li5kYTQ2MjczIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC03MywxMyArNzMsMTMgQEAgYXV0b19wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5
RGF0YSgpIGNvbnN0CiAgICAgZGF0YS0+bV9jYWNoZVBvbGljeSA9IGNhY2hlUG9saWN5KCk7CiAg
ICAgZGF0YS0+bV90aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWwoKTsKICAgICBkYXRh
LT5tX2ZpcnN0UGFydHlGb3JDb29raWVzID0gZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5jb3B5KCk7
Ci0gICAgZGF0YS0+bV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZCgpLmNyb3NzVGhyZWFkU3RyaW5n
KCk7CisgICAgZGF0YS0+bV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZCgpLmNvcHkoKTsKICAgICBk
YXRhLT5tX2h0dHBIZWFkZXJzLmFkb3B0KGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpKTsK
IAogICAgIGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKSk7CiAgICAgc2l6ZV90IGVuY29kaW5nQXJyYXlT
aXplID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGVuY29kaW5nQXJyYXlT
aXplOyArK2luZGV4KSB7Ci0gICAgICAgIGRhdGEtPm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuYXBwZW5kKG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaW5kZXhdLmNyb3NzVGhyZWFkU3RyaW5nKCkpOworICAg
ICAgICBkYXRhLT5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LmFwcGVuZChtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5W2luZGV4XS5jb3B5KCkpOwogICAgIH0KICAgICBpZiAobV9odHRwQm9keSkKICAgICAgICAg
ZGF0YS0+bV9odHRwQm9keSA9IG1faHR0cEJvZHktPmRlZXBDb3B5KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBmZDQ0MjI1
Li43ZjhhNGUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKQEAgLTEwOCwxMiArMTA4LDEyIEBAIGF1dG9fcHRyPENyb3NzVGhyZWFk
UmVzb3VyY2VSZXNwb25zZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNv
bnN0CiB7CiAgICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0
YShuZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSgpKTsKICAgICBkYXRhLT5tX3Vy
bCA9IHVybCgpLmNvcHkoKTsKLSAgICBkYXRhLT5tX21pbWVUeXBlID0gbWltZVR5cGUoKS5jcm9z
c1RocmVhZFN0cmluZygpOworICAgIGRhdGEtPm1fbWltZVR5cGUgPSBtaW1lVHlwZSgpLmNvcHko
KTsKICAgICBkYXRhLT5tX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExl
bmd0aCgpOwotICAgIGRhdGEtPm1fdGV4dEVuY29kaW5nTmFtZSA9IHRleHRFbmNvZGluZ05hbWUo
KS5jcm9zc1RocmVhZFN0cmluZygpOwotICAgIGRhdGEtPm1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBz
dWdnZXN0ZWRGaWxlbmFtZSgpLmNyb3NzVGhyZWFkU3RyaW5nKCk7CisgICAgZGF0YS0+bV90ZXh0
RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZSgpLmNvcHkoKTsKKyAgICBkYXRhLT5tX3N1
Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWUoKS5jb3B5KCk7CiAgICAgZGF0YS0+
bV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgZGF0YS0+bV9odHRwU3Rh
dHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0KCkuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKKyAgICBkYXRh
LT5tX2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5jb3B5KCk7CiAgICAgZGF0YS0+
bV9odHRwSGVhZGVycy5hZG9wdChodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKSk7CiAgICAg
ZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlID0gbGFzdE1vZGlmaWVkRGF0ZSgpOwogICAgIHJldHVy
biBkYXRhOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5n
LmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaAppbmRleCA4ZDE5YzE3
Li43NGQxMDk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJp
bmcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaApAQCAtMTk0
LDkgKzE5NCw5IEBAIHB1YmxpYzoKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdl
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ug
b24gYW5vdGhlciB0aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7
CisgICAgU3RyaW5nIGNvcHkoKSBjb25zdDsKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVs
cGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFN0cmluZyBvbiBhbm90aGVyIHRocmVhZAot
ICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcgaWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3Qg
bmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KKyAgICAvLyAodXNlIGNvcHkgaWYgdGhlIG1ldGhvZCBj
YWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAvLyBTaW5jZSB0aGUgdW5k
ZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBubyBvdGhl
ciByZWFzb24KICAgICAvLyB0byBldmVyIHByZWZlciBjb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNz
aWdubWVudC4KICAgICBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1N0cmluZy5jcHAKaW5kZXggNDQ1ODJhOS4uNzNkODk3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAKQEAgLTU5MCwxMSArNTkwLDExIEBAIFN0cmluZyBTdHJpbmc6OnRocmVhZHNhZmVDb3B5
KCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT50aHJlYWRzYWZlQ29weSgpOwogfQogCi1TdHJp
bmcgU3RyaW5nOjpjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0CitTdHJpbmcgU3RyaW5nOjpjb3B5
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIHJldHVybiBtX2ltcGwtPmNyb3NzVGhyZWFkU3RyaW5nKCk7CisgICAgcmV0dXJuIG1faW1w
bC0+Y29weSgpOwogfQogCiBib29sIFN0cmluZzo6aXNFbXB0eSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNWNmNGNlZC4uODAxNzA0NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTAwOCw3ICsxMDA4LDcgQEAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp0aHJlYWRzYWZlQ29weSgpIGNvbnN0CiAgICAgcmV0dXJu
IGNyZWF0ZShtX2RhdGEsIG1fbGVuZ3RoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpjcm9zc1RocmVhZFN0cmluZygpCitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNvcHkoKQogewogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWQgPSBzaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoc2hhcmVkKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaAppbmRl
eCBkYWMyNWIyLi43M2ExZTQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3Ry
aW5nSW1wbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTEw
Nyw5ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNv
bnN0IGNoYXIqKTsKICAgICAKICAgICAvLyBSZXR1cm5zIGEgU3RyaW5nSW1wbCBzdWl0YWJsZSBm
b3IgdXNlIG9uIGFub3RoZXIgdGhyZWFkLgotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3Jv
c3NUaHJlYWRTdHJpbmcoKTsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNvcHkoKTsKICAg
ICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBh
IFN0cmluZyBvbiBhbm90aGVyIHRocmVhZAotICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcg
aWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KKyAgICAv
LyAodXNlIGNvcHkgaWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRz
YWZlKS4KICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhl
cmUncyBubyBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0
b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcAppbmRleCAxN2E5NDA3Li4zMzY2MGU3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAKQEAgLTM0LDggKzM0LDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQ2hhbmdlVmVyc2lvbldyYXBwZXI6OkNoYW5nZVZlcnNpb25XcmFwcGVyKGNv
bnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uKQotICAgIDog
bV9vbGRWZXJzaW9uKG9sZFZlcnNpb24uY3Jvc3NUaHJlYWRTdHJpbmcoKSkKLSAgICAsIG1fbmV3
VmVyc2lvbihuZXdWZXJzaW9uLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgOiBtX29sZFZlcnNp
b24ob2xkVmVyc2lvbi5jb3B5KCkpCisgICAgLCBtX25ld1ZlcnNpb24obmV3VmVyc2lvbi5jb3B5
KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAgYi9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCmluZGV4IDI5Yjk1NTUuLjA5NWVjNTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGUKICAgICA6IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzKGZhbHNlKQogICAgICwgbV9pc1RyYW5z
YWN0aW9uUXVldWVFbmFibGVkKHRydWUpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQotICAg
ICwgbV9uYW1lKG5hbWUuY3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fbmFtZShuYW1lLmNv
cHkoKSkKICAgICAsIG1fZ3VpZCgwKQotICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRW
ZXJzaW9uLmNyb3NzVGhyZWFkU3RyaW5nKCkpCi0gICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlO
YW1lLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3Rl
ZFZlcnNpb24uY29weSgpKQorICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZS5jb3B5KCkp
CiAgICAgLCBtX2VzdGltYXRlZFNpemUoZXN0aW1hdGVkU2l6ZSkKICAgICAsIG1fZGVsZXRlZChm
YWxzZSkKICAgICAsIG1fc3RvcHBlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5j
cHAKaW5kZXggYzBjNDI0Mi4uNDU2ZjM2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5j
cHAKQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2NoZWR1bGVOb3Rp
ZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29ucwogewogICAgIE11
dGV4TG9ja2VyIGxvY2tlcihub3RpZmljYXRpb25NdXRleCgpKTsKIAotICAgIG5vdGlmaWNhdGlv
blF1ZXVlKCkuYXBwZW5kKHBhaXI8U2VjdXJpdHlPcmlnaW4qLCBTdHJpbmc+KG9yaWdpbiwgbmFt
ZS5jcm9zc1RocmVhZFN0cmluZygpKSk7CisgICAgbm90aWZpY2F0aW9uUXVldWUoKS5hcHBlbmQo
cGFpcjxTZWN1cml0eU9yaWdpbiosIFN0cmluZz4ob3JpZ2luLCBuYW1lLmNvcHkoKSkpOwogICAg
IHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9TUUxTdGF0ZW1lbnQuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5jcHAK
aW5kZXggYjRlYjllZi4uOTcwZjc1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL1NRTFN0
YXRlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnQ+IFNRTFN0YXRlbWVudDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBjb25zdCBWZWMKIH0KIAogU1FMU3RhdGVtZW50OjpT
UUxTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIGNvbnN0IFZlY3RvcjxTUUxWYWx1
ZT4mIGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2ss
IFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgYm9v
bCByZWFkT25seSkKLSAgICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudC5jcm9zc1RocmVhZFN0cmlu
ZygpKQorICAgIDogbV9zdGF0ZW1lbnQoc3RhdGVtZW50LmNvcHkoKSkKICAgICAsIG1fYXJndW1l
bnRzKGFyZ3VtZW50cykKICAgICAsIG1fc3RhdGVtZW50Q2FsbGJhY2soY2FsbGJhY2spCiAgICAg
LCBtX3N0YXRlbWVudEVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKaW5kZXggYWQ0MWUyOC4uYmVjNDVhYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhU3luYy5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
c3luY1RpbWVyRmlyZWQoVGltZXI8U3RvcmFnZUFyZWFTeW5jPiopCiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgbV9pdGVtc1BlbmRpbmdT
eW5jLnNldChpdC0+Zmlyc3QuY3Jvc3NUaHJlYWRTdHJpbmcoKSwgaXQtPnNlY29uZC5jcm9zc1Ro
cmVhZFN0cmluZygpKTsKKyAgICAgICAgICAgIG1faXRlbXNQZW5kaW5nU3luYy5zZXQoaXQtPmZp
cnN0LmNvcHkoKSwgaXQtPnNlY29uZC5jb3B5KCkpOwogCiAgICAgICAgIGlmICghbV9zeW5jU2No
ZWR1bGVkKSB7CiAgICAgICAgICAgICBtX3N5bmNTY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMTlmZjZiNC4uYTg4NjJhOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKCkKIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVu
c2lnbmVkIHF1b3RhKQogICAgIDogbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKLSAgICAsIG1f
cGF0aChwYXRoLmNyb3NzVGhyZWFkU3RyaW5nKCkpCisgICAgLCBtX3BhdGgocGF0aC5jb3B5KCkp
CiAgICAgLCBtX3N5bmNNYW5hZ2VyKDApCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9p
c1NodXRkb3duKGZhbHNlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRl
eCBmOTI3NmRkLi40MTZiODFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFn
ZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3lu
Y01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBt
X3BhdGgocGF0aC5jcm9zc1RocmVhZFN0cmluZygpKQorICAgIDogbV9wYXRoKHBhdGguY29weSgp
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3BhdGguaXNF
bXB0eSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9z
aXRvcnkuY3BwCmluZGV4IDhiMWE0ODAuLjY3ZTE4MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IHByaXZhdGU6CiAKIFNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luKQogICAgIDogbV9jbG9zaW5nKGZhbHNlKQotICAgICwgbV9uYW1lKG5hbWUuY3Jvc3NU
aHJlYWRTdHJpbmcoKSkKKyAgICAsIG1fbmFtZShuYW1lLmNvcHkoKSkKICAgICAsIG1fdXJsKHVy
bC5jb3B5KCkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJUaHJlYWQuY3BwCmluZGV4IGU1OWRmNGYuLmRlZDQ4MzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVk
V29ya2VyVGhyZWFkPiBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvCiAKIFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJv
eHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSkKICAgICA6IFdv
cmtlclRocmVhZCh1cmwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHks
IHdvcmtlclJlcG9ydGluZ1Byb3h5KQotICAgICwgbV9uYW1lKG5hbWUuY3Jvc3NUaHJlYWRTdHJp
bmcoKSkKKyAgICAsIG1fbmFtZShuYW1lLmNvcHkoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggMGI2NjY5NC4uMjk4NzhmOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFdvcmtlckV4Y2VwdGlvblRhc2soY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAgICAgICA6IG1fZXJyb3JNZXNz
YWdlKGVycm9yTWVzc2FnZS5jcm9zc1RocmVhZFN0cmluZygpKQorICAgICAgICA6IG1fZXJyb3JN
ZXNzYWdlKGVycm9yTWVzc2FnZS5jb3B5KCkpCiAgICAgICAgICwgbV9saW5lTnVtYmVyKGxpbmVO
dW1iZXIpCi0gICAgICAgICwgbV9zb3VyY2VVUkwoc291cmNlVVJMLmNyb3NzVGhyZWFkU3RyaW5n
KCkpCisgICAgICAgICwgbV9zb3VyY2VVUkwoc291cmNlVVJMLmNvcHkoKSkKICAgICAgICAgLCBt
X21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggMzliMjFjNi4uNTJkNjUwZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRhc2so
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgICAgIDogbV90YXNrKHRhc2spCi0gICAgICAgICwgbV9tb2RlKG1vZGUu
Y3Jvc3NUaHJlYWRTdHJpbmcoKSkKKyAgICAgICAgLCBtX21vZGUobW9kZS5jb3B5KCkpCiAgICAg
ewogICAgIH0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRh
c2soUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogCiB2b2lk
IFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtX21lc3Nh
Z2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRhc2ssIG1vZGUuY3Jvc3NUaHJlYWRTdHJpbmco
KSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5j
b3B5KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcAppbmRleCA0NjcxNTdiLi4yMjI1M2JmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApA
QCAtNzEsOCArNzEsOCBAQCBwcml2YXRlOgogCiBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29y
a2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQogICAgIDogbV9zY3JpcHRVUkwo
c2NyaXB0VVJMLmNvcHkoKSkKLSAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudC5jcm9zc1RocmVh
ZFN0cmluZygpKQotICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUuY3Jvc3NUaHJlYWRTdHJp
bmcoKSkKKyAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudC5jb3B5KCkpCisgICAgLCBtX3NvdXJj
ZUNvZGUoc291cmNlQ29kZS5jb3B5KCkpCiB7CiB9CiAK
</data>
<flag name="review"
          id="23838"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="23839"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>