<?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>233983</bug_id>
          
          <creation_ts>2021-12-07 22:55:10 -0800</creation_ts>
          <short_desc>Move computeUserPrefersSimplified to Language.cpp and add locking around it</short_desc>
          <delta_ts>2022-07-20 14:10:27 -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>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mattwoodrow</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821416</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:55:10 -0800</bug_when>
    <thetext>Move computeUserPrefersSimplified to Language.cpp and add locking around it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821417</commentid>
    <comment_count>1</comment_count>
      <attachid>446309</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:59:55 -0800</bug_when>
    <thetext>Created attachment 446309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821998</commentid>
    <comment_count>2</comment_count>
      <attachid>446309</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-08 21:30:59 -0800</bug_when>
    <thetext>Comment on attachment 446309
Patch

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

&gt; Source/WTF/wtf/Language.cpp:137
&gt; +    Vector&lt;String&gt;&amp; override = preferredLanguagesOverride();

|override| is per-thread? It&apos;s surprising to see it move from inside the critical section to outside.

&gt; Source/WTF/wtf/Language.cpp:149
&gt; -    return isolatedCopy(languages);
&gt; +    return languages;

How confident are you that this is safe?

&gt; Source/WTF/wtf/Language.cpp:164
&gt; +        if (equalIgnoringASCIICase(language, &quot;zh-tw&quot;))
&gt; +            return false;
&gt; +        if (equalIgnoringASCIICase(language, &quot;zh-cn&quot;))
&gt; +            return true;

Wow I can&apos;t believe I wrote this. https://www.rfc-editor.org/rfc/rfc4647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822526</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-09 22:56:24 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #2)
&gt; |override| is per-thread? It&apos;s surprising to see it move from inside the
&gt; critical section to outside.

It&apos;s not.  This function (computeUserPreferredLanguages, which is where the local `override` variable is) is annotated with WTF_REQUIRES_LOCK(languagesLock).

&gt; &gt; Source/WTF/wtf/Language.cpp:149
&gt; &gt; -    return isolatedCopy(languages);
&gt; &gt; +    return languages;
&gt; 
&gt; How confident are you that this is safe?

What I&apos;ve written is safe now, because userPreferredLanguages now does the isolatedCopy, and computeUserPrefersSimplifiedChinese doesn&apos;t let the reference escape.

I really just wanted to avoid having computeUserPrefersSimplifiedChinese clone the array for no good reason.

The thread safety annotations won&apos;t help if someone writes another function that calls computeUserPrefersSimplifiedChinese and does let it escape.  If you have a suggestion for how to rearrange the code to protect against that I&apos;d be happy to entertain it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822529</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-09 22:59:24 -0800</bug_when>
    <thetext>(One way would be to duplicate the contents of computeUserPreferredLanguages into the two functions using it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824260</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 22:56:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/86507413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885305</commentid>
    <comment_count>6</comment_count>
      <attachid>461034</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-19 22:10:44 -0700</bug_when>
    <thetext>Created attachment 461034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885418</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-20 13:17:16 -0700</bug_when>
    <thetext>mattwoodrow@apple.com does not have reviewer permissions according to https://raw.githubusercontent.com/WebKit/WebKit/main/metadata/contributors.json.

Rejecting attachment 461034 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885439</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-20 14:10:24 -0700</bug_when>
    <thetext>Committed 252655@main (352ffc3fc81e): &lt;https://commits.webkit.org/252655@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461034.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446309</attachid>
            <date>2021-12-07 22:59:55 -0800</date>
            <delta_ts>2022-07-19 22:10:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233983-20211208175953.patch</filename>
            <type>text/plain</type>
            <size>11518</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIxZmZjY2Q1MDFlNzM3OThkZWMzMGM5
MDVkZDAzZTM5NjhiZTU2NTkuLmE1M2Y0ODlkNmJhNjE4MTJlMjRiMDVjYmJlNTY5NTVmZTNiY2Fj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTItMDIgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVVc2VyUHJlZmVyc1NpbXBs
aWZpZWQgdG8gTGFuZ3VhZ2UuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM5ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBjYWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZpZWQgaW4gRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAgY2FuIGJlIGNhbGxlZAorICAgICAgICBmcm9tIHdvcmtlciB0aHJlYWRzIHdp
dGggT2Zmc2NyZWVuQ2FudmFzLCBidXQgaXQgdXNlcyBhIHN0YXRpYworICAgICAgICB2YXJpYWJs
ZSB0byBjYWNoZSB0aGUgcmVzdWx0IHdpdGhvdXQgYW55IHN5bmNocm9uaXphdGlvbi4KKworICAg
ICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gYSB1c2VyUHJlZmVy
c1NpbXBsaWZpZWRDaGluZXNlCisgICAgICAgIGZ1bmN0aW9uIGluIExhbmd1YWdlLmNwcCwgd2hp
Y2ggYXZvaWRzIHRoZSBuZWVkIHRvIHJlZ2lzdGVyIGEgbGFuZ3VhZ2UKKyAgICAgICAgY2hhbmdl
IGxpc3RlbmVyLCBhbmQgbWVhbnMgd2UgY2FuIHVzZSB0aGUgc2FtZSBsb2NraW5nIHRoYXQgdGhl
IG90aGVyCisgICAgICAgIGxhbmd1YWdlIHByZWZlcmVuY2UgZnVuY3Rpb25zIHVzZS4KKworICAg
ICAgICBTaW1wbGlmeSB0aGUgbG9ja2luZyBieSBoYXZpbmcgYWxsIGxhbmd1YWdlIHByZWZlcmVu
Y2UgZnVuY3Rpb25zIHVzZQorICAgICAgICB0aGUgc2FtZSBMb2NrLgorCisgICAgICAgICogd3Rm
L0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdURjo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAg
ICAoV1RGOjpsYW5ndWFnZURpZENoYW5nZSk6CisgICAgICAgIChXVEY6OnVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNPdmVycmlkZSk6CisgICAgICAgIChXVEY6Om92ZXJyaWRlVXNlclByZWZlcnJlZExh
bmd1YWdlcyk6CisgICAgICAgIChXVEY6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAg
ICAoV1RGOjp1c2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlKToKKyAgICAgICAgKiB3dGYvTGFu
Z3VhZ2UuaDoKKwogMjAyMS0xMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0
ZURhdGFTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyZDQ4MTQ5YjJhMWUyNDk5OGZiOTMzYmI1NzQ2N2Y4
Y2IyZGY4MDMuLjU4YjI2YzE5YzYxNjMwZWU0NjM1ZDU1MWE5N2IyMGZiMzc3MGVmNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMi0wMiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxo
ZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxp
ZmllZCB0byBMYW5ndWFnZS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzk4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGNhY2hlZFVzZXJQcmVmZXJzU2ltcGxpZmllZCBpbiBGb250R2VuZXJpY0Zh
bWlsaWVzLmNwcCBjYW4gYmUgY2FsbGVkCisgICAgICAgIGZyb20gd29ya2VyIHRocmVhZHMgd2l0
aCBPZmZzY3JlZW5DYW52YXMsIGJ1dCBpdCB1c2VzIGEgc3RhdGljCisgICAgICAgIHZhcmlhYmxl
IHRvIGNhY2hlIHRoZSByZXN1bHQgd2l0aG91dCBhbnkgc3luY2hyb25pemF0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byBhIHVzZXJQcmVmZXJz
U2ltcGxpZmllZENoaW5lc2UKKyAgICAgICAgZnVuY3Rpb24gaW4gTGFuZ3VhZ2UuY3BwLCB3aGlj
aCBhdm9pZHMgdGhlIG5lZWQgdG8gcmVnaXN0ZXIgYSBsYW5ndWFnZQorICAgICAgICBjaGFuZ2Ug
bGlzdGVuZXIsIGFuZCBtZWFucyB3ZSBjYW4gdXNlIHRoZSBzYW1lIGxvY2tpbmcgdGhhdCB0aGUg
b3RoZXIKKyAgICAgICAgbGFuZ3VhZ2UgcHJlZmVyZW5jZSBmdW5jdGlvbnMgdXNlLgorCisgICAg
ICAgIFNpbXBsaWZ5IHRoZSBsb2NraW5nIGJ5IGhhdmluZyBhbGwgbGFuZ3VhZ2UgcHJlZmVyZW5j
ZSBmdW5jdGlvbnMgdXNlCisgICAgICAgIHRoZSBzYW1lIExvY2suCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVV
c2VyUHJlZmVyc1NpbXBsaWZpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVk
VXNlclByZWZlcnNTaW1wbGlmaWVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omxhbmd1
YWdlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWls
aWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKTogRGVsZXRlZC4KKwogMjAyMS0xMi0wMiAgQ2FtZXJv
biBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpc01haW5UaHJl
YWQoKSBhc3NlcnRpb25zIHRvIHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3Bw
CmluZGV4IGE4Mzk4ZTA1NDc1ZTkyOTczYTY0MzRjNzAzZTFjY2M2MTA4ZjVmOWEuLmU1MGZlZDhi
MzI5ZmEwMDU5MWM4MDg1ZDkxODBiOTRiMzEyN2JhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0xhbmd1YWdlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKQEAgLTM5
LDI0ICszOSwyMyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIExvY2sgY2FjaGVkUGxh
dGZvcm1QcmVmZXJyZWRMYW5ndWFnZXNMb2NrOwotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBjYWNo
ZWRGdWxsUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhjYWNo
ZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlc0xvY2spCitzdGF0aWMgTG9jayBsYW5ndWFnZXNM
b2NrOworc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBjYWNoZWRGdWxsUGxhdGZvcm1QcmVmZXJyZWRM
YW5ndWFnZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhsYW5ndWFnZXNMb2NrKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOwogICAgIHJldHVybiBs
YW5ndWFnZXM7CiB9Ci1zdGF0aWMgVmVjdG9yPFN0cmluZz4mIGNhY2hlZE1pbmltaXplZFBsYXRm
b3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soY2FjaGVkUGxhdGZvcm1Q
cmVmZXJyZWRMYW5ndWFnZXNMb2NrKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBjYWNoZWRNaW5p
bWl6ZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpIFdURl9SRVFVSVJFU19MT0NLKGxhbmd1
YWdlc0xvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBs
YW5ndWFnZXM7CiAgICAgcmV0dXJuIGxhbmd1YWdlczsKIH0KLQotc3RhdGljIExvY2sgcHJlZmVy
cmVkTGFuZ3VhZ2VzT3ZlcnJpZGVMb2NrOwotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJy
ZWRMYW5ndWFnZXNPdmVycmlkZSgpIFdURl9SRVFVSVJFU19MT0NLKHByZWZlcnJlZExhbmd1YWdl
c092ZXJyaWRlTG9jaykKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2Vz
T3ZlcnJpZGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhsYW5ndWFnZXNMb2NrKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGU7CiAgICAgcmV0dXJuIG92
ZXJyaWRlOwogfQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FjaGVkVXNlclByZWZlcnNT
aW1wbGlmaWVkQ2hpbmVzZSBXVEZfR1VBUkRFRF9CWV9MT0NLKGxhbmd1YWdlc0xvY2spOwogCiB0
eXBlZGVmIEhhc2hNYXA8dm9pZCosIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbj4gT2Jz
ZXJ2ZXJNYXA7CiBzdGF0aWMgT2JzZXJ2ZXJNYXAmIG9ic2VydmVyTWFwKCkKQEAgLTgzLDkgKzgy
LDEwIEBAIHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KQog
dm9pZCBsYW5ndWFnZURpZENoYW5nZSgpCiB7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgY2FjaGVkUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXNMb2NrIH07CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBsYW5ndWFnZXNMb2NrIH07CiAgICAgICAgIGNhY2hlZEZ1bGxQbGF0Zm9ybVBy
ZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CiAgICAgICAgIGNhY2hlZE1pbmltaXplZFBsYXRm
b3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCkuY2xlYXIoKTsKKyAgICAgICAgY2FjaGVkVXNlclByZWZl
cnNTaW1wbGlmaWVkQ2hpbmVzZSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIG9ic2VydmVyIDogY29weVRvVmVjdG9yKG9ic2VydmVyTWFwKCkpKSB7CkBAIC0xMDgsNyAr
MTA4LDcgQEAgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZShTaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyBz
aG91bGRNaW5pbWl6ZUxhbmd1YWdlcykKIAogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExh
bmd1YWdlc092ZXJyaWRlKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgcHJlZmVycmVkTGFuZ3Vh
Z2VzT3ZlcnJpZGVMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IGxhbmd1YWdlc0xvY2sgfTsK
ICAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKIH0KIApAQCAtMTE2LDgg
KzExNiw5IEBAIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvdmVycmlkZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3VhZ2UsIHN0
cmVhbSA8PCAiTGFuZ3VhZ2VzIGFyZSBiZWluZyBvdmVycmlkZGVuIHRvOiAiIDw8IG92ZXJyaWRl
KTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBwcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZUxvY2sgfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxhbmd1YWdlc0xvY2sgfTsKICAg
ICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworICAgICAgICBj
YWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlID0gc3RkOjpudWxsb3B0OwogICAgIH0K
ICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpAQCAtMTMxLDI1ICsxMzIsNDYgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGlzb2xhdGVkQ29weShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5n
cykKICAgICByZXR1cm4gY29weTsKIH0KIAotVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExh
bmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcykK
K3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgY29tcHV0ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hv
dWxkTWluaW1pemVMYW5ndWFnZXMgc2hvdWxkTWluaW1pemVMYW5ndWFnZXMpIFdURl9SRVFVSVJF
U19MT0NLKGxhbmd1YWdlc0xvY2spCiB7Ci0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGVMb2NrIH07Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+
JiBvdmVycmlkZSA9IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci0gICAgICAgIGlmICgh
b3ZlcnJpZGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3Vh
Z2UsIHN0cmVhbSA8PCAiTGFuZ3VhZ2VzIGFyZSBvdmVycmlkZGVuOiAiIDw8IG92ZXJyaWRlKTsK
LSAgICAgICAgICAgIHJldHVybiBpc29sYXRlZENvcHkob3ZlcnJpZGUpOwotICAgICAgICB9Cisg
ICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUo
KTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oTGFuZ3VhZ2UsIHN0cmVhbSA8PCAiTGFuZ3VhZ2VzIGFyZSBvdmVycmlkZGVuOiAiIDw8IG92
ZXJyaWRlKTsKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOwogICAgIH0KIAotICAgIExvY2tlciBs
b2NrZXIgeyBjYWNoZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlc0xvY2sgfTsKICAgICBhdXRv
JiBsYW5ndWFnZXMgPSBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyA9PSBTaG91bGRNaW5pbWl6ZUxh
bmd1YWdlczo6WWVzID8gY2FjaGVkTWluaW1pemVkUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMo
KSA6IGNhY2hlZEZ1bGxQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOwogICAgIGlmIChsYW5n
dWFnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhMYW5ndWFnZSwgInVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKSBjYWNoZSBtaXNzIik7CiAgICAgICAgIGxhbmd1YWdlcyA9IHBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcyhzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyk7CiAgICAgfSBlbHNl
CiAgICAgICAgIExPRyhMYW5ndWFnZSwgInVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjYWNoZSBo
aXQiKTsKLSAgICByZXR1cm4gaXNvbGF0ZWRDb3B5KGxhbmd1YWdlcyk7CisgICAgcmV0dXJuIGxh
bmd1YWdlczsKK30KKworVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91
bGRNaW5pbWl6ZUxhbmd1YWdlcyBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcykKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbGFuZ3VhZ2VzTG9jayB9OworICAgIHJldHVybiBpc29sYXRlZENvcHkoY29t
cHV0ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2hvdWxkTWluaW1pemVMYW5ndWFnZXMpKTsKK30K
Kworc3RhdGljIGJvb2wgY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxpZmllZENoaW5lc2UoKSBXVEZf
UkVRVUlSRVNfTE9DSyhsYW5ndWFnZXNMb2NrKQoreworICAgIGZvciAoY29uc3QgYXV0byYgbGFu
Z3VhZ2UgOiBjb21wdXRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1
YWdlczo6WWVzKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShsYW5ndWFn
ZSwgInpoLXR3IikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgtY24iKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB1c2VyUHJlZmVyc1Np
bXBsaWZpZWRDaGluZXNlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbGFuZ3VhZ2VzTG9jayB9
OworICAgIGlmICghY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkQ2hpbmVzZSkKKyAgICAgICAg
Y2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkQ2hpbmVzZSA9IGNvbXB1dGVVc2VyUHJlZmVyc1Np
bXBsaWZpZWRDaGluZXNlKCk7CisgICAgcmV0dXJuICpjYWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZp
ZWRDaGluZXNlOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTGFuZ3VhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmgKaW5kZXggMmI1
MDEyMzE3ZGVlZGYwNWMzOGNjNDlmMWFjMWQ1Yzk0ZDlmYWFiYy4uY2ZkMzY1YzExYjMyNzVjZWFj
YmUxZWRhY2FmMzdlNTkwNWM3NzE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTGFuZ3Vh
Z2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5oCkBAIC00Miw2ICs0Miw3IEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFNo
b3VsZE1pbmltaXplTGFuZ3VhZ2VzCiBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgaW5kZXhPZkJlc3RNYXRjaGluZ0xhbmd1YWdlSW5M
aXN0KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFn
ZUxpc3QsIGJvb2wmIGV4YWN0TWF0Y2gpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdXNlclBy
ZWZlcnNTaW1wbGlmaWVkQ2hpbmVzZSgpOwogCiAvLyBDYWxsZWQgZnJvbSBwbGF0Zm9ybSBzcGVj
aWZpYyBjb2RlIHdoZW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UocykgY2hhbmdlLgog
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKQEAgLTY4LDYgKzY5
LDcgQEAgdXNpbmcgV1RGOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogdXNpbmcgV1RGOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGU7CiB1c2luZyBXVEY6Om92ZXJyaWRlVXNlclByZWZl
cnJlZExhbmd1YWdlczsKIHVzaW5nIFdURjo6aW5kZXhPZkJlc3RNYXRjaGluZ0xhbmd1YWdlSW5M
aXN0OwordXNpbmcgV1RGOjp1c2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlOwogdXNpbmcgV1RG
OjphZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyOwogdXNpbmcgV1RGOjpyZW1vdmVMYW5ndWFnZUNo
YW5nZU9ic2VydmVyOwogdXNpbmcgV1RGOjpkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcAppbmRleCBiMGIzZDQ1MmQ1NjE5YzY5OGE5YjI1OWFhYWYyNTNlNDEzZDAz
MjMzLi5kY2IzMjE4MTQzNzA0M2VkMzc5MTMxNGJiMGIwOTM5ODM2MDk3YzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWls
aWVzLmNwcApAQCAtNDMsMjkgKzQzLDYgQEAgc3RhdGljIGJvb2wgc2V0R2VuZXJpY0ZvbnRGYW1p
bHlGb3JTY3JpcHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgY29uc3QgU3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGNvbXB1dGVVc2VyUHJlZmVyc1Np
bXBsaWZpZWQoKQotewotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFn
ZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IHByZWZlcnJlZExhbmd1YWdlcykgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShsYW5ndWFnZSwgInpoLXR3IikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgtY24iKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJv
b2wmIGNhY2hlZFVzZXJQcmVmZXJzU2ltcGxpZmllZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgY2Fj
aGVkID0gdHJ1ZTsKLSAgICByZXR1cm4gY2FjaGVkOwotfQotCi1zdGF0aWMgdm9pZCBsYW5ndWFn
ZUNoYW5nZWQodm9pZCopCi17Ci0gICAgY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkKCkgPSBj
b21wdXRlVXNlclByZWZlcnNTaW1wbGlmaWVkKCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZv
bnRNYXAsIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkp
OwpAQCAtNzQsNyArNTEsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZW5lcmljRm9udEZhbWls
eUZvclNjcmlwdChjb25zdCBTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TQogICAgIC8vIENvbnRl
bnQgdXNpbmcgVVNDUklQVF9IQU4gZG9lc24ndCB0ZWxsIHVzIGlmIHdlIHNob3VsZCBiZSB1c2lu
ZyBTaW1wbGlmaWVkIENoaW5lc2Ugb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZS4gSW4gdGhlCiAgICAg
Ly8gYWJzZW5jZSBvZiBhbGwgb3RoZXIgc2lnbmFscywgd2UgY29uc3VsdCB3aXRoIHRoZSB1c2Vy
J3Mgc3lzdGVtIHByZWZlcmVuY2VzLgogICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9IQU4pIHsK
LSAgICAgICAgaXQgPSBmb250TWFwLmZpbmQoc3RhdGljX2Nhc3Q8aW50PihjYWNoZWRVc2VyUHJl
ZmVyc1NpbXBsaWZpZWQoKSA/IFVTQ1JJUFRfU0lNUExJRklFRF9IQU4gOiBVU0NSSVBUX1RSQURJ
VElPTkFMX0hBTikpOworICAgICAgICBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+
KHVzZXJQcmVmZXJzU2ltcGxpZmllZENoaW5lc2UoKSA/IFVTQ1JJUFRfU0lNUExJRklFRF9IQU4g
OiBVU0NSSVBUX1RSQURJVElPTkFMX0hBTikpOwogICAgICAgICBpZiAoaXQgIT0gZm9udE1hcC5l
bmQoKSkKICAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CiAgICAgfQpAQCAtODMsMTQgKzYw
LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoY29u
c3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE0KICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiB9
CiAKLUZvbnRHZW5lcmljRmFtaWxpZXM6OkZvbnRHZW5lcmljRmFtaWxpZXMoKQotewotICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFsmXSB7
Ci0gICAgICAgIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoJm9uY2UsICZsYW5ndWFnZUNoYW5n
ZWQpOwotICAgICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7Ci0gICAgfSk7Ci19CitGb250
R2VuZXJpY0ZhbWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkgPSBkZWZhdWx0OwogCiBGb250
R2VuZXJpY0ZhbWlsaWVzIEZvbnRHZW5lcmljRmFtaWxpZXM6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461034</attachid>
            <date>2022-07-19 22:10:44 -0700</date>
            <delta_ts>2022-07-20 14:10:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233983-20220720171042.patch</filename>
            <type>text/plain</type>
            <size>10083</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSA0ZjBmYzc1ZGY2YzI2NDgyMWZiNjZkZWFlZTdmYzY4NDlhMWMyZTk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogV2VkLCAyNCBOb3YgMjAyMSAwODo0ODo1MCArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1v
dmUgY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxpZmllZCB0byBMYW5ndWFnZS5jcHAKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODMKClJldmlld2VkIGJ5IE15bGVz
IEMuIE1heGZpZWxkLgoKY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkIGluIEZvbnRHZW5lcmlj
RmFtaWxpZXMuY3BwIGNhbiBiZSBjYWxsZWQKZnJvbSB3b3JrZXIgdGhyZWFkcyB3aXRoIE9mZnNj
cmVlbkNhbnZhcywgYnV0IGl0IHVzZXMgYSBzdGF0aWMKdmFyaWFibGUgdG8gY2FjaGUgdGhlIHJl
c3VsdCB3aXRob3V0IGFueSBzeW5jaHJvbml6YXRpb24uCgpUaGlzIHBhdGNoIG1vdmVzIHRoZSBm
dW5jdGlvbmFsaXR5IGludG8gYSB1c2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlCmZ1bmN0aW9u
IGluIExhbmd1YWdlLmNwcCwgd2hpY2ggYXZvaWRzIHRoZSBuZWVkIHRvIHJlZ2lzdGVyIGEgbGFu
Z3VhZ2UKY2hhbmdlIGxpc3RlbmVyLCBhbmQgbWVhbnMgd2UgY2FuIHVzZSB0aGUgc2FtZSBsb2Nr
aW5nIHRoYXQgdGhlIG90aGVyCmxhbmd1YWdlIHByZWZlcmVuY2UgZnVuY3Rpb25zIHVzZS4KClNp
bXBsaWZ5IHRoZSBsb2NraW5nIGJ5IGhhdmluZyBhbGwgbGFuZ3VhZ2UgcHJlZmVyZW5jZSBmdW5j
dGlvbnMgdXNlCnRoZSBzYW1lIExvY2suCgoqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmlj
RmFtaWxpZXMuY3BwOgooV2ViQ29yZTo6Z2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgooV2Vi
Q29yZTo6Y29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxpZmllZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpj
YWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZpZWQpOiBEZWxldGVkLgooV2ViQ29yZTo6bGFuZ3VhZ2VD
aGFuZ2VkKTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OkZvbnRHZW5l
cmljRmFtaWxpZXMpOiBEZWxldGVkLgoqIHd0Zi9MYW5ndWFnZS5jcHA6CihXVEY6OldURl9SRVFV
SVJFU19MT0NLKToKKFdURjo6bGFuZ3VhZ2VEaWRDaGFuZ2UpOgooV1RGOjp1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzT3ZlcnJpZGUpOgooV1RGOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OgooV1RGOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKToKKFdURjo6dXNlclByZWZlcnNTaW1wbGlm
aWVkQ2hpbmVzZSk6Ciogd3RmL0xhbmd1YWdlLmg6Ci0tLQogU291cmNlL1dURi93dGYvTGFuZ3Vh
Z2UuY3BwICAgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysrKy0tLS0tLQogU291cmNl
L1dURi93dGYvTGFuZ3VhZ2UuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKwogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIHwgMzUgKy0tLS0tLS0tLS0KIDMg
ZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwIGIvU291cmNlL1dURi93dGYvTGFuZ3Vh
Z2UuY3BwCmluZGV4IGY5Njc4YzU1YmY4YS4uMTU4OGNkNTU3MjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3Bw
CkBAIC00MCwyNCArNDAsMjMgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBMb2NrIGNh
Y2hlZFBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzTG9jazsKLXN0YXRpYyBWZWN0b3I8U3RyaW5n
PiYgY2FjaGVkRnVsbFBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzKCkgV1RGX1JFUVVJUkVTX0xP
Q0soY2FjaGVkUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXNMb2NrKQorc3RhdGljIExvY2sgbGFu
Z3VhZ2VzTG9jazsKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgY2FjaGVkRnVsbFBsYXRmb3JtUHJl
ZmVycmVkTGFuZ3VhZ2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0sobGFuZ3VhZ2VzTG9jaykKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IGxhbmd1YWdlczsKICAgICBy
ZXR1cm4gbGFuZ3VhZ2VzOwogfQotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBjYWNoZWRNaW5pbWl6
ZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpIFdURl9SRVFVSVJFU19MT0NLKGNhY2hlZFBs
YXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzTG9jaykKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgY2Fj
aGVkTWluaW1pemVkUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKSBXVEZfUkVRVUlSRVNfTE9D
SyhsYW5ndWFnZXNMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3Ry
aW5nPj4gbGFuZ3VhZ2VzOwogICAgIHJldHVybiBsYW5ndWFnZXM7CiB9Ci0KLXN0YXRpYyBMb2Nr
IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlTG9jazsKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiYg
cHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhwcmVmZXJyZWRM
YW5ndWFnZXNPdmVycmlkZUxvY2spCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExh
bmd1YWdlc092ZXJyaWRlKCkgV1RGX1JFUVVJUkVTX0xPQ0sobGFuZ3VhZ2VzTG9jaykKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlOwogICAgIHJl
dHVybiBvdmVycmlkZTsKIH0KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNhY2hlZFVzZXJQ
cmVmZXJzU2ltcGxpZmllZENoaW5lc2UgV1RGX0dVQVJERURfQllfTE9DSyhsYW5ndWFnZXNMb2Nr
KTsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rp
b24+IE9ic2VydmVyTWFwOwogc3RhdGljIE9ic2VydmVyTWFwJiBvYnNlcnZlck1hcCgpCkBAIC04
NCw5ICs4MywxMCBAQCB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCkKIHZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKQogewogICAgIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGNhY2hlZFBsYXRmb3JtUHJlZmVycmVkTGFuZ3VhZ2VzTG9jayB9OworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbGFuZ3VhZ2VzTG9jayB9OwogICAgICAgICBjYWNoZWRGdWxsUGxh
dGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVhcigpOwogICAgICAgICBjYWNoZWRNaW5pbWl6
ZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CisgICAgICAgIGNhY2hlZFVz
ZXJQcmVmZXJzU2ltcGxpZmllZENoaW5lc2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcihvYnNlcnZlck1hcCgpKSkgewpAQCAt
MTA5LDI5ICsxMDksNTIgQEAgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZShTaG91bGRNaW5pbWl6ZUxh
bmd1YWdlcyBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcykKIAogVmVjdG9yPFN0cmluZz4gdXNlclBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgcHJlZmVy
cmVkTGFuZ3VhZ2VzT3ZlcnJpZGVMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IGxhbmd1YWdl
c0xvY2sgfTsKICAgICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKIH0KIAot
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1
YWdlcyBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcykKKy8vIFRoaXMgcmV0dXJucyBhIHJlZmVyZW5j
ZSB0byBhIFZlY3RvcjxTdHJpbmc+IHByb3RlY3RlZCBieSBsYW5ndWFnZXNMb2NrLgorLy8gQ2Fs
bGVycyBzaG91bGQgbm90IGxldCBpdCBlc2NhcGUgcGFzdCB0aGUgbG9jay4KK3N0YXRpYyBWZWN0
b3I8U3RyaW5nPiYgY29tcHV0ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hvdWxkTWluaW1pemVM
YW5ndWFnZXMgc2hvdWxkTWluaW1pemVMYW5ndWFnZXMpIFdURl9SRVFVSVJFU19MT0NLKGxhbmd1
YWdlc0xvY2spCiB7Ci0gICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJlZmVycmVkTGFu
Z3VhZ2VzT3ZlcnJpZGVMb2NrIH07Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSA9
IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci0gICAgICAgIGlmICghb3ZlcnJpZGUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3VhZ2UsIHN0cmVhbSA8
PCAiTGFuZ3VhZ2VzIGFyZSBvdmVycmlkZGVuOiAiIDw8IG92ZXJyaWRlKTsKLSAgICAgICAgICAg
IHJldHVybiBjcm9zc1RocmVhZENvcHkob3ZlcnJpZGUpOwotICAgICAgICB9CisgICAgVmVjdG9y
PFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBp
ZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3Vh
Z2UsIHN0cmVhbSA8PCAiTGFuZ3VhZ2VzIGFyZSBvdmVycmlkZGVuOiAiIDw8IG92ZXJyaWRlKTsK
KyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOwogICAgIH0KIAotICAgIExvY2tlciBsb2NrZXIgeyBj
YWNoZWRQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlc0xvY2sgfTsKICAgICBhdXRvJiBsYW5ndWFn
ZXMgPSBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyA9PSBTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6
WWVzID8gY2FjaGVkTWluaW1pemVkUGxhdGZvcm1QcmVmZXJyZWRMYW5ndWFnZXMoKSA6IGNhY2hl
ZEZ1bGxQbGF0Zm9ybVByZWZlcnJlZExhbmd1YWdlcygpOwogICAgIGlmIChsYW5ndWFnZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIExPRyhMYW5ndWFnZSwgInVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KSBjYWNoZSBtaXNzIik7CiAgICAgICAgIGxhbmd1YWdlcyA9IHBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcyhzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IExPRyhMYW5ndWFnZSwgInVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjYWNoZSBoaXQiKTsKLSAg
ICByZXR1cm4gY3Jvc3NUaHJlYWRDb3B5KGxhbmd1YWdlcyk7CisgICAgcmV0dXJuIGxhbmd1YWdl
czsKK30KKworVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5p
bWl6ZUxhbmd1YWdlcyBzaG91bGRNaW5pbWl6ZUxhbmd1YWdlcykKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbGFuZ3VhZ2VzTG9jayB9OworICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoY29tcHV0
ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoc2hvdWxkTWluaW1pemVMYW5ndWFnZXMpKTsKK30KKwor
c3RhdGljIGJvb2wgY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxpZmllZENoaW5lc2UoKSBXVEZfUkVR
VUlSRVNfTE9DSyhsYW5ndWFnZXNMb2NrKQoreworICAgIGZvciAoY29uc3QgYXV0byYgbGFuZ3Vh
Z2UgOiBjb21wdXRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdl
czo6WWVzKSkgeworICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGFu
Z3VhZ2UsICJ6aC10dyJfcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLWNuIl9zKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCB1c2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bGFuZ3VhZ2VzTG9jayB9OworICAgIGlmICghY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkQ2hp
bmVzZSkKKyAgICAgICAgY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkQ2hpbmVzZSA9IGNvbXB1
dGVVc2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlKCk7CisgICAgcmV0dXJuICpjYWNoZWRVc2Vy
UHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAt
MTQwLDggKzE2Myw5IEBAIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oTGFuZ3Vh
Z2UsIHN0cmVhbSA8PCAiTGFuZ3VhZ2VzIGFyZSBiZWluZyBvdmVycmlkZGVuIHRvOiAiIDw8IG92
ZXJyaWRlKTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBwcmVmZXJyZWRMYW5ndWFn
ZXNPdmVycmlkZUxvY2sgfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxhbmd1YWdlc0xvY2sg
fTsKICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworICAg
ICAgICBjYWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZpZWRDaGluZXNlID0gc3RkOjpudWxsb3B0Owog
ICAgIH0KICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTGFuZ3VhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmgKaW5kZXggMmI1MDEy
MzE3ZGVlLi5jZmQzNjVjMTFiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdl
LmgKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuaApAQCAtNDIsNiArNDIsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhTaG91
bGRNaW5pbWl6ZUxhbmd1YWdlcwogV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGluZGV4T2ZCZXN0TWF0Y2hpbmdMYW5ndWFnZUluTGlz
dChjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VM
aXN0LCBib29sJiBleGFjdE1hdGNoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHVzZXJQcmVm
ZXJzU2ltcGxpZmllZENoaW5lc2UoKTsKIAogLy8gQ2FsbGVkIGZyb20gcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSB3aGVuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlKHMpIGNoYW5nZS4KIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGxhbmd1YWdlRGlkQ2hhbmdlKCk7CkBAIC02OCw2ICs2OSw3
IEBAIHVzaW5nIFdURjo6dXNlclByZWZlcnJlZExhbmd1YWdlczsKIHVzaW5nIFdURjo6dXNlclBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlOwogdXNpbmcgV1RGOjpvdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7CiB1c2luZyBXVEY6OmluZGV4T2ZCZXN0TWF0Y2hpbmdMYW5ndWFnZUluTGlz
dDsKK3VzaW5nIFdURjo6dXNlclByZWZlcnNTaW1wbGlmaWVkQ2hpbmVzZTsKIHVzaW5nIFdURjo6
YWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcjsKIHVzaW5nIFdURjo6cmVtb3ZlTGFuZ3VhZ2VDaGFu
Z2VPYnNlcnZlcjsKIHVzaW5nIFdURjo6ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5jcHAKaW5kZXggMGIyZTBkNThlNDdlLi5mMjY1MDExYzNjNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxp
ZXMuY3BwCkBAIC00NCwzMCArNDQsNiBAQCBzdGF0aWMgYm9vbCBzZXRHZW5lcmljRm9udEZhbWls
eUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBjb25zdCBTdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZVVzZXJQcmVmZXJzU2lt
cGxpZmllZCgpCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHBhc3NpbmcgU2hvdWxkTWlu
aW1pemVMYW5ndWFnZXM6Ok5vIGFuZCB0aGVuIGdldHRpbmcgbWluaW1pemVkIGxhbmd1YWdlcywK
LSAgICAvLyB3aGljaCBtYXkgY2F1c2UgdGhlIG1hdGNoaW5nIGJlbG93IHRvIGZhaWwuCi0gICAg
Zm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkgewotICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGFuZ3VhZ2UsICJ6aC10dyJfcykp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLWNuIl9zKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wmIGNhY2hlZFVz
ZXJQcmVmZXJzU2ltcGxpZmllZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgY2FjaGVkID0gdHJ1ZTsK
LSAgICByZXR1cm4gY2FjaGVkOwotfQotCi1zdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9p
ZCopCi17Ci0gICAgY2FjaGVkVXNlclByZWZlcnNTaW1wbGlmaWVkKCkgPSBjb21wdXRlVXNlclBy
ZWZlcnNTaW1wbGlmaWVkKCk7Ci19Ci0KIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdlbmVyaWNGb250
RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRNYXAsIFVTY3Jp
cHRDb2RlIHNjcmlwdCkKIHsKICAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwpAQCAtNzYsNyAr
NTIsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChj
b25zdCBTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TQogICAgIC8vIENvbnRlbnQgdXNpbmcgVVND
UklQVF9IQU4gZG9lc24ndCB0ZWxsIHVzIGlmIHdlIHNob3VsZCBiZSB1c2luZyBTaW1wbGlmaWVk
IENoaW5lc2Ugb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZS4gSW4gdGhlCiAgICAgLy8gYWJzZW5jZSBv
ZiBhbGwgb3RoZXIgc2lnbmFscywgd2UgY29uc3VsdCB3aXRoIHRoZSB1c2VyJ3Mgc3lzdGVtIHBy
ZWZlcmVuY2VzLgogICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9IQU4pIHsKLSAgICAgICAgaXQg
PSBmb250TWFwLmZpbmQoc3RhdGljX2Nhc3Q8aW50PihjYWNoZWRVc2VyUHJlZmVyc1NpbXBsaWZp
ZWQoKSA/IFVTQ1JJUFRfU0lNUExJRklFRF9IQU4gOiBVU0NSSVBUX1RSQURJVElPTkFMX0hBTikp
OworICAgICAgICBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHVzZXJQcmVmZXJz
U2ltcGxpZmllZENoaW5lc2UoKSA/IFVTQ1JJUFRfU0lNUExJRklFRF9IQU4gOiBVU0NSSVBUX1RS
QURJVElPTkFMX0hBTikpOwogICAgICAgICBpZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkKICAgICAg
ICAgICAgIHJldHVybiBpdC0+dmFsdWU7CiAgICAgfQpAQCAtODUsMTQgKzYxLDcgQEAgc3RhdGlj
IGNvbnN0IFN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9u
dEZhbWlseU1hcCYgZm9udE0KICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiB9CiAKLUZvbnRHZW5l
cmljRmFtaWxpZXM6OkZvbnRHZW5lcmljRmFtaWxpZXMoKQotewotICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFsmXSB7Ci0gICAgICAgIGFk
ZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoJm9uY2UsICZsYW5ndWFnZUNoYW5nZWQpOwotICAgICAg
ICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7Ci0gICAgfSk7Ci19CitGb250R2VuZXJpY0ZhbWls
aWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkgPSBkZWZhdWx0OwogCiBGb250R2VuZXJpY0ZhbWls
aWVzIEZvbnRHZW5lcmljRmFtaWxpZXM6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>