<?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>165552</bug_id>
          
          <creation_ts>2016-12-07 14:49:22 -0800</creation_ts>
          <short_desc>[CSS Parser] Consolidate string/ident/url serialization functions</short_desc>
          <delta_ts>2016-12-07 16:34:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257383</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-07 14:49:22 -0800</bug_when>
    <thetext>[CSS Parser] Consolidate string/ident/url serialization functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257390</commentid>
    <comment_count>1</comment_count>
      <attachid>296426</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-07 14:58:40 -0800</bug_when>
    <thetext>Created attachment 296426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257443</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-07 16:34:38 -0800</bug_when>
    <thetext>Landed in r209495.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296426</attachid>
            <date>2016-12-07 14:58:40 -0800</date>
            <delta_ts>2016-12-07 15:01:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165552-20161207165800.patch</filename>
            <type>text/plain</type>
            <size>21382</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE2LTEyLTA3ICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBDb25zb2xpZGF0
ZSBzdHJpbmcvaWRlbnQvdXJsIHNlcmlhbGl6YXRpb24gZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSaWdodCBub3cgQ1NTUGFyc2VyIGhh
cyBzdHJpbmcsIGlkZW50IGFuZCB1cmwgc2VyaWFsaXphdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
Y2FsbGVkIHF1b3RlQ1NTdHJpbmdJZk5lZWRlZCAod2hpY2ggYWN0dWFsbHkgc2VyaWFsaXplcyBi
b3RoIHN0cmluZ3MgYW5kCisgICAgICAgIGlkZW50aWZpZXJzKSwgYXMgd2VsbCBhcyBxdW90ZUNT
U1VSTElmTmVlZGVkLgorCisgICAgICAgIENTU01hcmt1cCBhbHJlYWR5IGhhcyBzZXJpYWxpemF0
aW9uIGZ1bmN0aW9ucyB0aGF0IGV4aXN0IG91dHNpZGUgb2YgdGhlCisgICAgICAgIENTU1BhcnNl
ciBhbmQgdGhhdCBoYW5kbGUgc2VyaWFsaXphdGlvbiBvZiBzdHJpbmdzLCBpZGVudHMgYW5kIFVS
THMuIFRoaXMKKyAgICAgICAgcGF0Y2ggZWxpbWluYXRlcyB0aGUgQ1NTUGFyc2VyIGZ1bmN0aW9u
cyBhbmQgY29uc29saWRhdGVzIGFsbCBvZiB0aGUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byB1
c2UgQ1NTTWFya3VwJ3MgZnVuY3Rpb25zLgorCisgICAgICAgIE5vdGUgdGhhdCB3ZSBhcmUgbm90
IHNwZWMtY29tcGxpYW50IGF0IGFsbCBoZXJlLCBhbmQgc28gSSBoYWQgdG8gYW1lbmQKKyAgICAg
ICAgdGhlIGZ1bmN0aW9ucyB0byBzdXBwb3J0IG91ciBub24tc3BlYy1jb21wbGlhbnQgc2VyaWFs
aXphdGlvbi4gVGhlIGdvYWwKKyAgICAgICAgb2YgdGhpcyBwYXRjaCBpcyBjb25zb2xpZGF0aW9u
IGFuZCBub3QgdG8gZml4IG91ciBicm9rZW4gc2VyaWFsaXphdGlvbi4KKworICAgICAgICBOb3Rh
YmxlIGNoYW5nZXMgaW5jbHVkZSBwYXJhbWV0ZXJpemluZyBzdHJpbmcgc2VyaWFsaXphdGlvbiBz
byB0aGF0CisgICAgICAgIGJvdGggc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzIGFyZSBzdXBwb3J0
ZWQsIHNpbmNlIGluIHRoZSBleGlzdGluZyBjb2RlCisgICAgICAgIHdlJ3JlIHNvbWV0aW1lcyBz
cGVjLWNvbXBsaWFudCAoQ1NTU2VsZWN0b3JzKSBhbmQgc29tZXRpbWVzIG5vdAorICAgICAgICAo
Q1NTUHJpbWl0aXZlVmFsdWUpLgorCisgICAgICAgIFdlIGFsc28gb3ZlcmxvYWQgQ1NTX1NUUklO
RyBwcmltaXRpdmUgdmFsdWUgdHlwZSBhbmQgaGF2ZSBpdCBhY3QgYXMgYm90aAorICAgICAgICBh
IHN0cmluZyBhbmQgYSBjdXN0b20gaWRlbnRpZmllci4gVGhpcyBpcyBsYW1lLCBzaW5jZSB0aGUg
cGFyc2VyIHNob3VsZAorICAgICAgICBoYXZlIG1hZGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBv
YmplY3RzIGluc3RlYWQsIGJ1dCBzaW5jZSBvdXIgcGFyc2VyCisgICAgICAgIGRvZXNuJ3QgZG8g
dGhhdCB5ZXQsIEkgYWRkZWQgYSBzZXJpYWxpemVBc1N0cmluZ09yQ3VzdG9tSWRlbnQgdGhhdAor
ICAgICAgICBwcmVzZXJ2ZXMgb3VyIG9sZCBiZWhhdmlvciBvZiAicXVvdGUgdGhlIHN0cmluZyBv
bmx5IGlmIG5lZWRlZC4iIEluIHRoaXMKKyAgICAgICAgY2FzZSB3aGF0IHRoYXQgcmVhbGx5IG1l
YW50IHdhcyAiVHJ5IHRvIGd1ZXNzIHRoYXQgd2Ugd2VyZSBvcmlnaW5hbGx5IGEKKyAgICAgICAg
Y3VzdG9tIGlkZW50IGFuZCBsZWF2ZSBvZmYgcXVvdGVzIGlmIHNvLiIgVGhpcyBmdW5jdGlvbiB3
aWxsIGdvIGF3YXkKKyAgICAgICAgb25jZSB3ZSBwcm9wZXJseSBjcmVhdGUgQ1NTU3RyaW5nVmFs
dWVzIGFuZCBDU1NDdXN0b21JZGVudFZhbHVlcyBpbnN0ZWFkCisgICAgICAgIG9mIHR1cm5pbmcg
dGhlIGxhdHRlciBpbnRvIHN0cmluZ3MuCisKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRQYXRoU3RyaW5nKToKKyAgICAgICAgKiBjc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjdXN0
b21DU1NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTTWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQ1NTVG9rZW5pemVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
c2VyaWFsaXplQXNTdHJpbmdPckN1c3RvbUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZVVSSSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU01hcmt1cC5oOgorICAgICAgICAq
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCk6CisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRl
eHQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQ1NTVG9rZW5pemVySWRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXND
U1NUb2tlbml6ZXJVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVDU1NTdHJp
bmdJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTVVJMSWZOZWVkZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRy
aWJ1dGVUb0xvY2FsZSk6CisKIDIwMTYtMTItMDcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBFbnRlcmluZyBmdWxs
c2NyZWVuIGFuZCByZXR1cm5pbmcgdG8gaW5saW5lIHNob3dzIGZ1bGxzY3JlZW4gY29udHJvbHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAkocmV2aXNpb24gMjA5Mzk2
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKIAotI2lu
Y2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNp
bmNsdWRlICJQYWlyLmgiCkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIFN0cmluZyBidWlsZFBh
dGhTdHJpbmcoY29uc3QgV2luZAogICAgIGVsc2UKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoInBhdGgoIik7CiAKLSAgICByZXN1bHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5nKHBhdGgpKTsK
KyAgICBzZXJpYWxpemVTdHJpbmcocGF0aCwgcmVzdWx0KTsKICAgICByZXN1bHQuYXBwZW5kKCcp
Jyk7CiAKICAgICBpZiAoYm94Lmxlbmd0aCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDkzOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAKICNpbmNsdWRl
ICJDU1NJbWFnZVZhbHVlLmgiCiAKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCi0j
aW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgpA
QCAtOTQsNyArOTUsNyBAQCBib29sIENTU0ltYWdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NJbWFn
CiAKIFN0cmluZyBDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3VybCkgKyAnKSc7CisgICAgcmV0
dXJuIHNlcmlhbGl6ZVVSTChtX3VybCk7CiB9CiAKIFJlZjxDU1NWYWx1ZT4gQ1NTSW1hZ2VWYWx1
ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFy
a3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmNwcAko
cmV2aXNpb24gMjA5Mzk2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOCw5ICsxMTgsNTMgQEAgdm9pZCBzZXJpYWxpemVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaQogICAgIH0KIH0KIAotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJVUkwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewotICAg
IGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBj
aGFyYWN0ZXJzICsgbGVuZ3RoOworICAgIAorICAgIGZvciAoOyBjaGFyYWN0ZXJzICE9IGVuZDsg
KytjaGFyYWN0ZXJzKSB7CisgICAgICAgIENoYXJhY3RlclR5cGUgYyA9IGNoYXJhY3RlcnNbMF07
CisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICchJzoKKyAgICAgICAgY2FzZSAn
Iyc6CisgICAgICAgIGNhc2UgJyQnOgorICAgICAgICBjYXNlICclJzoKKyAgICAgICAgY2FzZSAn
Jic6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlm
IChjIDwgJyonKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChjIDw9ICd+JykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChjIDwg
MTI4KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gInVybCIgZnJvbSB0aGUgQ1NTIHRva2VuaXpl
ciwgbWludXMgYmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZXMKK3N0YXRpYyBib29sIGlzQ1NTVG9r
ZW5pemVyVVJMKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKKyAgICAKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgCisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGlz
Q1NTVG9rZW5pemVyVVJMKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgIHJldHVy
biBpc0NTU1Rva2VuaXplclVSTChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisK
K3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTdHJpbmdCdWlsZGVy
JiBhcHBlbmRUbywgYm9vbCB1c2VEb3VibGVRdW90ZXMpCit7CisgICAgLy8gRklYTUU6IEZyb20g
dGhlIENTUyBPTSBkcmFmdDoKKyAgICAvLyBUbyBzZXJpYWxpemUgYSBzdHJpbmcgbWVhbnMgdG8g
Y3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGVkIGJ5ICciJyAoVSswMDIyKS4KKyAgICAvLyBXZSBu
ZWVkIHRvIHN3aXRjaCB0byB1c2luZyAiIGluc3RlYWQgb2YgJywgYnV0IHRoaXMgaW52b2x2ZXMg
cGF0Y2hpbmcgYSBsYXJnZQorICAgIC8vIG51bWJlciBvZiB0ZXN0cyBhbmQgY2hhbmdpbmcgZWRp
dGluZyBjb2RlIHRvIG5vdCBnZXQgY29uZnVzZWQgYnkgZG91YmxlIHF1b3Rlcy4KKyAgICBhcHBl
bmRUby5hcHBlbmQodXNlRG91YmxlUXVvdGVzID8gJ1wiJyA6ICdcJycpOwogCiAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwogICAgIHdoaWxlIChpbmRleCA8IHN0cmluZy5sZW5ndGgoKSkgewpAQCAt
MTM1LDIxICsxNzksMzYgQEAgdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bgogICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwogICAgIH0KIAotICAgIGFwcGVuZFRv
LmFwcGVuZCgnXCInKTsKKyAgICBhcHBlbmRUby5hcHBlbmQodXNlRG91YmxlUXVvdGVzID8gJ1wi
JyA6ICdcJycpOwogfQogCi1TdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorU3RyaW5nIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCB1
c2VEb3VibGVRdW90ZXMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIHNlcmlh
bGl6ZVN0cmluZyhzdHJpbmcsIGJ1aWxkZXIpOworICAgIHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcs
IGJ1aWxkZXIsIHVzZURvdWJsZVF1b3Rlcyk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAotU3RyaW5nIHNlcmlhbGl6ZVVSSShjb25zdCBTdHJpbmcmIHN0cmluZykKK1N0cmlu
ZyBzZXJpYWxpemVVUkwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuICJ1cmwo
IiArIHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcpICsgIikiOworICAgIC8vIEZJWE1FOiBVUkxTIG11
c3QgYWx3YXlzIGJlIGRvdWJsZSBxdW90ZWQuIEZyb20gdGhlIENTUyBPTSBkcmFmdDoKKyAgICAv
LyBUbyBzZXJpYWxpemUgYSBVUkwgbWVhbnMgdG8gY3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGVk
IGJ5ICJ1cmwoIiwgZm9sbG93ZWQgYnkKKyAgICAvLyB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUg
VVJMIGFzIGEgc3RyaW5nLCBmb2xsb3dlZCBieSAiKSIuCisgICAgLy8gVG8ga2VlcCBiYWNrd2Fy
ZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIHRlc3RzLCBmb3Igbm93IHdlIG9ubHkgcXVv
dGUgaWYgbmVlZGVkIGFuZAorICAgIC8vIHdlIHVzZSBhIHNpbmdsZSBxdW90ZS4KKyAgICByZXR1
cm4gInVybCgiICsgKGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJpbmcgOiBzZXJpYWxp
emVTdHJpbmcoc3RyaW5nKSkgKyAiKSI7CiB9CiAKK1N0cmluZyBzZXJpYWxpemVBc1N0cmluZ09y
Q3VzdG9tSWRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgaWYgKGlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcihzdHJpbmcpKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcihzdHJpbmcsIGJ1aWxkZXIpOworICAgICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KKyAgICByZXR1cm4gc2VyaWFsaXplU3Ry
aW5nKHN0cmluZyk7Cit9CisgICAgCiBTdHJpbmcgc2VyaWFsaXplRm9udEZhbWlseShjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0
cmluZykgPyBzdHJpbmcgOiBzZXJpYWxpemVTdHJpbmcoc3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWFya3VwLmgJKHJldmlzaW9uIDIwOTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
YXJrdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBDb21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwogdm9pZCBzZXJpYWxp
emVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBw
ZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hlY2tzID0gZmFsc2UpOwotdm9pZCBzZXJpYWxpemVTdHJp
bmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pOwotU3RyaW5nIHNlcmlh
bGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3Ry
aW5nJik7Cit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVy
JiBhcHBlbmRUbywgYm9vbCB1c2VEb3VibGVRdW90ZXMgPSBmYWxzZSk7CitTdHJpbmcgc2VyaWFs
aXplU3RyaW5nKGNvbnN0IFN0cmluZyYsIGJvb2wgdXNlRG91YmxlUXVvdGVzID0gZmFsc2UpOwor
U3RyaW5nIHNlcmlhbGl6ZVVSTChjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBzZXJpYWxpemVGb250
RmFtaWx5KGNvbnN0IFN0cmluZyYpOwogCisvLyBGSVhNRS1ORVdQQVJTRVI6IFRoaXMgaHlicmlk
ICJjaGVjayBmb3IgYm90aCBzdHJpbmcgb3IgaWRlbnQiIGZ1bmN0aW9uIGNhbiBiZSByZW1vdmVk
CisvLyBvbmNlIHdlIGhhdmUgZW5hYmxlZCBDU1NDdXN0b21JZGVudFZhbHVlIGFuZCBDU1NTdHJp
bmdWYWx1ZS4KK1N0cmluZyBzZXJpYWxpemVBc1N0cmluZ09yQ3VzdG9tSWRlbnQoY29uc3QgU3Ry
aW5nJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gMjA5Mzk2KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
OCBAQAogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250
RmFtaWx5LmgiCiAjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CisjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCkBAIC0x
MDY4LDExICsxMDY5LDE0IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVl
OjoKICAgICAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBkb24ndCBoYW5kbGUgQ1NTX0RJTUVO
U0lPTiBwcm9wZXJseSBhcyB3ZSBkb24ndCBzdG9yZQogICAgICAgICAvLyB0aGUgYWN0dWFsIGRp
bWVuc2lvbiwganVzdCB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBhIHN0cmluZy4KICAgICBjYXNlIENT
U19TVFJJTkc6Ci0gICAgICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUu
c3RyaW5nKTsKKyAgICAgICAgLy8gRklNRS1ORVdQQVJTRVI6IE9uY2Ugd2UgaGF2ZSBDU1NDdXN0
b21JZGVudFZhbHVlIGhvb2tlZCB1cCwgdGhpcyBjYW4ganVzdCBiZQorICAgICAgICAvLyBzZXJp
YWxpemVTdHJpbmcsIHNpbmNlIGN1c3RvbSBpZGVudGlmaWVycyB3b24ndCBiZSB0aGUgc2FtZSB2
YWx1ZSBhcyBzdHJpbmdzCisgICAgICAgIC8vIGFueSBsb25nZXIuCisgICAgICAgIHJldHVybiBz
ZXJpYWxpemVBc1N0cmluZ09yQ3VzdG9tSWRlbnQobV92YWx1ZS5zdHJpbmcpOwogICAgIGNhc2Ug
Q1NTX0ZPTlRfRkFNSUxZOgotICAgICAgICByZXR1cm4gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLmZvbnRGYW1pbHktPmZhbWlseU5hbWUpOworICAgICAgICByZXR1cm4gc2VyaWFsaXpl
Rm9udEZhbWlseShtX3ZhbHVlLmZvbnRGYW1pbHktPmZhbWlseU5hbWUpOwogICAgIGNhc2UgQ1NT
X1VSSToKLSAgICAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1
ZS5zdHJpbmcpICsgJyknOworICAgICAgICByZXR1cm4gc2VyaWFsaXplVVJMKG1fdmFsdWUuc3Ry
aW5nKTsKICAgICBjYXNlIENTU19WQUxVRV9JRDoKICAgICAgICAgcmV0dXJuIHZhbHVlTmFtZSht
X3ZhbHVlLnZhbHVlSUQpOwogICAgIGNhc2UgQ1NTX1BST1BFUlRZX0lEOgpAQCAtMTA5OSw3ICsx
MTAzLDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OgogICAgICAg
ICByZXN1bHQuYXBwZW5kKG1fdmFsdWUuY291bnRlci0+aWRlbnRpZmllcigpKTsKICAgICAgICAg
aWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5l
ZWRlZChzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgIHNlcmlhbGl6ZVN0cmluZyhzZXBhcmF0b3Is
IHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGxpc3RTdHlsZSA9IG1fdmFsdWUu
Y291bnRlci0+bGlzdFN0eWxlKCk7CiAgICAgICAgIGlmICghbGlzdFN0eWxlLmlzRW1wdHkoKSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMDkzOTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OTcsNyArNjk3LDcgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgUwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChjcy0+bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6U2V0KSB7Ci0gICAgICAgICAgICAgICAgc2Vy
aWFsaXplU3RyaW5nKGNzLT5zZXJpYWxpemluZ1ZhbHVlKCksIHN0cik7CisgICAgICAgICAgICAg
ICAgc2VyaWFsaXplU3RyaW5nKGNzLT5zZXJpYWxpemluZ1ZhbHVlKCksIHN0ciwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGNzLT5hdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nSXNDYXNlSW5zZW5z
aXRpdmUoKSkKICAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZExpdGVyYWwoIiBpXSIpOwog
ICAgICAgICAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlci5jcHAJKHJldmlzaW9uIDIwOTQ2NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2OTksMTYxICsxMzY5OSw2IEBAIENT
U1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGEKICAgICByZXR1cm4gc3RyaW5n
LmlzOEJpdCgpID8gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0
aCkgOiBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBib29s
IGlzQ1NTVG9rZW5pemVySWRlbnQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3Rl
cnMgKyBsZW5ndGg7Ci0KLSAgICAvLyAtPwotICAgIGlmIChjaGFyYWN0ZXJzICE9IGVuZCAmJiBj
aGFyYWN0ZXJzWzBdID09ICctJykKLSAgICAgICAgKytjaGFyYWN0ZXJzOwotCi0gICAgLy8ge25t
c3RhcnR9Ci0gICAgaWYgKGNoYXJhY3RlcnMgPT0gZW5kIHx8ICEoY2hhcmFjdGVyc1swXSA9PSAn
XycgfHwgY2hhcmFjdGVyc1swXSA+PSAxMjggfHwgaXNBU0NJSUFscGhhKGNoYXJhY3RlcnNbMF0p
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrY2hhcmFjdGVyczsKLQotICAgIC8vIHtu
bWNoYXJ9KgotICAgIGZvciAoOyBjaGFyYWN0ZXJzICE9IGVuZDsgKytjaGFyYWN0ZXJzKSB7Ci0g
ICAgICAgIGlmICghKGNoYXJhY3RlcnNbMF0gPT0gJ18nIHx8IGNoYXJhY3RlcnNbMF0gPT0gJy0n
IHx8IGNoYXJhY3RlcnNbMF0gPj0gMTI4IHx8IGlzQVNDSUlBbHBoYW51bWVyaWMoY2hhcmFjdGVy
c1swXSkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi0vLyAiaWRlbnQiIGZyb20gdGhlIENTUyB0b2tlbml6ZXIsIG1pbnVzIGJhY2tz
bGFzaC1lc2NhcGUgc2VxdWVuY2VzCi1zdGF0aWMgYm9vbCBpc0NTU1Rva2VuaXplcklkZW50KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKLQotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudChz
dHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJ
ZGVudChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBib29sIGlzQ1NTVG9rZW5pemVyVVJM
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAg
ICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOwotICAgIAot
ICAgIGZvciAoOyBjaGFyYWN0ZXJzICE9IGVuZDsgKytjaGFyYWN0ZXJzKSB7Ci0gICAgICAgIENo
YXJhY3RlclR5cGUgYyA9IGNoYXJhY3RlcnNbMF07Ci0gICAgICAgIHN3aXRjaCAoYykgewotICAg
ICAgICAgICAgY2FzZSAnISc6Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgIGNh
c2UgJyQnOgotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICBjYXNlICcmJzoKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgaWYgKGMgPCAnKicpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBpZiAoYyA8PSAnficpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGlmIChjIDwgMTI4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vICJ1
cmwiIGZyb20gdGhlIENTUyB0b2tlbml6ZXIsIG1pbnVzIGJhY2tzbGFzaC1lc2NhcGUgc2VxdWVu
Y2VzCi1zdGF0aWMgYm9vbCBpc0NTU1Rva2VuaXplclVSTChjb25zdCBTdHJpbmcmIHN0cmluZykK
LXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJVUkwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCk7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoKTsKLX0KLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0
YXRpYyBpbmxpbmUgU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIC8vIEZvciBlZmZpY2ll
bmN5LCB3ZSBmaXJzdCBwcmUtY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlIHF1b3RlZCBzdHJp
bmcsIHRoZW4gd2UgYnVpbGQgdGhlIGFjdHVhbCBvbmUuCi0gICAgLy8gUGxlYXNlIHNlZSBiZWxv
dyBmb3IgdGhlIGFjdHVhbCBsb2dpYy4KLSAgICB1bnNpZ25lZCBxdW90ZWRTdHJpbmdTaXplID0g
MjsgLy8gVHdvIHF1b3RlcyBzdXJyb3VuZGluZyB0aGUgZW50aXJlIHN0cmluZy4KLSAgICBib29s
IGFmdGVyRXNjYXBlID0gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIENoYXJhY3RlclR5cGUgY2ggPSBjaGFyYWN0ZXJzW2ldOwotICAg
ICAgICBpZiAoY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBxdW90ZWRT
dHJpbmdTaXplICs9IDI7Ci0gICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwotICAgICAg
ICB9IGVsc2UgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdGKSB7Ci0gICAgICAgICAgICBxdW90
ZWRTdHJpbmdTaXplICs9IDIgKyAoY2ggPj0gMHgxMCk7Ci0gICAgICAgICAgICBhZnRlckVzY2Fw
ZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBxdW90ZWRTdHJpbmdTaXpl
ICs9IDEgKyAoYWZ0ZXJFc2NhcGUgJiYgKGlzQVNDSUlIZXhEaWdpdChjaCkgfHwgY2ggPT0gJyAn
KSk7Ci0gICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgU3RyaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlcihxdW90ZWRTdHJpbmdTaXpl
KTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgYnVmZmVyW2luZGV4KytdID0gJ1wnJzsK
LSAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBDaGFyYWN0ZXJUeXBlIGNoID0gY2hhcmFjdGVyc1tpXTsK
LSAgICAgICAgaWYgKGNoID09ICdcXCcgfHwgY2ggPT0gJ1wnJykgewotICAgICAgICAgICAgYnVm
ZmVyW2luZGV4KytdID0gJ1xcJzsKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGNoOwot
ICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIGlmIChjaCA8
IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9sIGNoYXJhY3RlcnMuCi0gICAgICAgICAg
ICBidWZmZXJbaW5kZXgrK10gPSAnXFwnOwotICAgICAgICAgICAgcGxhY2VCeXRlQXNIZXhDb21w
cmVzc0lmUG9zc2libGUoY2gsIGJ1ZmZlciwgaW5kZXgsIExvd2VyY2FzZSk7Ci0gICAgICAgICAg
ICBhZnRlckVzY2FwZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBT
cGFjZSBjaGFyYWN0ZXIgbWF5IGJlIHJlcXVpcmVkIHRvIHNlcGFyYXRlIGJhY2tzbGFzaC1lc2Nh
cGUgc2VxdWVuY2UgYW5kIG5vcm1hbCBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgaWYgKGFmdGVy
RXNjYXBlICYmIChpc0FTQ0lJSGV4RGlnaXQoY2gpIHx8IGNoID09ICcgJykpCi0gICAgICAgICAg
ICAgICAgYnVmZmVyW2luZGV4KytdID0gJyAnOwotICAgICAgICAgICAgYnVmZmVyW2luZGV4Kytd
ID0gY2g7Ci0gICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotICAgIGJ1ZmZlcltpbmRleCsrXSA9ICdcJyc7Ci0KLSAgICBBU1NFUlQocXVvdGVkU3RyaW5n
U2l6ZSA9PSBpbmRleCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIp
KTsKLX0KLQotLy8gV2UgdXNlIHNpbmdsZSBxdW90ZXMgZm9yIG5vdyBiZWNhdXNlIG1hcmt1cC5j
cHAgdXNlcyBkb3VibGUgcXVvdGVzLgotU3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhwYW5kcyBlYWNoIGNoYXJhY3Rl
ciB0byBhdCBtb3N0IDMgY2hhcmFjdGVycyAoJ1x1MDAxMCcgLT4gJ1wnICcxJyAnMCcpIGFzIHdl
bGwgYXMgYWRkcwotICAgIC8vIDIgcXVvdGUgY2hhcmFjdGVycyAoYmVmb3JlIGFuZCBhZnRlciku
IE1ha2Ugc3VyZSB0aGUgcmVzdWx0aW5nIHNpemUgKDMgKiBsZW5ndGggKyAyKSB3aWxsIG5vdCBv
dmVyZmxvdyB1bnNpZ25lZC4KLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKLQotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJcJ1wn
Iik7Ci0KLSAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC8gMyAtIDIpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgaWYgKHN0
cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHF1b3RlQ1NTU3RyaW5nSW50ZXJuYWwoc3Ry
aW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgcmV0dXJuIHF1b3RlQ1NTU3RyaW5nSW50
ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwotfQotCi1TdHJpbmcgcXVvdGVD
U1NTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4gaXND
U1NUb2tlbml6ZXJJZGVudChzdHJpbmcpID8gc3RyaW5nIDogcXVvdGVDU1NTdHJpbmcoc3RyaW5n
KTsKLX0KLQotU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Ci17Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJpbmcgOiBxdW90
ZUNTU1N0cmluZyhzdHJpbmcpOwotfQotCiBib29sIGlzVmFsaWROdGhUb2tlbihjb25zdCBDU1NQ
YXJzZXJTdHJpbmcmIHRva2VuKQogewogICAgIC8vIFRoZSB0b2tlbml6ZXIgY2hlY2tzIGZvciB0
aGUgY29uc3RydWN0IG9mIGFuK2IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyLmgJKHJldmlzaW9uIDIwOTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1MywxMCArNzUzLDYgQEAgc3RydWN0IENTU1Bh
cnNlcjo6TG9jYXRpb24gewogICAgIENTU1BhcnNlclN0cmluZyB0b2tlbjsKIH07CiAKLVN0cmlu
ZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBxdW90ZUNTU1N0cmluZ0lm
TmVlZGVkKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQoY29uc3Qg
U3RyaW5nJik7Ci0KIGJvb2wgaXNWYWxpZE50aFRva2VuKGNvbnN0IENTU1BhcnNlclN0cmluZyYp
OwogCiB0ZW1wbGF0ZSA8PgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwOTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUg
IkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUbwogewogICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEhhdmUgdG8gcXVvdGUgc28gdGhl
IGxvY2FsZSBpZCBpcyB0cmVhdGVkIGFzIGEgc3RyaW5nIGluc3RlYWQgb2YgYXMgYSBDU1Mga2V5
d29yZC4KLSAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmcodmFsdWUpKTsKKyAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eVdlYmtpdExvY2FsZSwgc2VyaWFsaXplU3RyaW5nKHZhbHVlKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gVGhlIGVtcHR5IHN0cmluZyBtZWFucyB0aGUgbGFuZ3VhZ2UgaXMgZXhw
bGljaXRseSB1bmtub3duLgogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjA5NDYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTItMDcgIERhdmUgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NTUyBQYXJzZXJdIENvbnNvbGlkYXRlIHN0cmluZy9p
ZGVudC91cmwgc2VyaWFsaXphdGlvbiBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTU1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MvY29udGVudC1sYW5ndWFnZS1vbmx5
LXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL2NvbnRlbnQtbGFu
Z3VhZ2Utd2l0aC13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dDoKKwogMjAxNi0xMi0wNyAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSBiYWQgcmVzdWx0IHRoYXQg
SSBsYW5kZWQgYnkgYWNjaWRlbnQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50
LWxhbmd1YWdlLW9ubHktd2hpdGVzcGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY29udGVudC1sYW5ndWFnZS1vbmx5LXdoaXRlc3BhY2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyMDkzOTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50
LWxhbmd1YWdlLW9ubHktd2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiBUZXN0IGZvciBidWcgNzY3MDE6IG1hcCBIVFRQLUVRVUlWIGNvbnRlbnQt
bGFuZ3VhZ2UgdG8gLXdlYmtpdC1sb2NhbGUuIFRoaXMgcGFydGljdWxhciB0ZXN0IHRlc3RzIHRo
YXQgYSBjb250ZW50LWxhbmd1YWdlIHdpdGggd2hpdGVzcGFjZS1vbmx5IGNvbnRlbnQgaXMgaWdu
b3JlZC4gVGhpcyBleHBlY3RhdGlvbiBtYXkgY2hhbmdlLCBzZWUgYnVnLiBIVE1MNSBkZWNyZWVz
IHRoYXQgdGhlIG1ldGEgZWxlbWVudCBiZSBpZ25vcmVkIGluIGNhc2Ugb2Ygd2hpdGVzcGFjZSBv
bmx5IGNvbnRlbnQuIEl0J3MgdW5jbGVhciB3aGF0IG90aGVyIGJyb3dzZXJzIGRvLgogCi1GQUlM
IGxhbmd1YWdlT2ZOb2RlKCd4Jykgc2hvdWxkIGJlIGF1dG8uIFdhcyAnICBcOVxhICAnLgorRkFJ
TCBsYW5ndWFnZU9mTm9kZSgneCcpIHNob3VsZCBiZSBhdXRvLiBXYXMgJyAgXDkgXGEgICcuCiBQ
QVNTIGxhbmd1YWdlT2ZOb2RlKCd5JykgaXMgImFyIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50LWxhbmd1YWdlLXdp
dGgtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY29udGVudC1sYW5ndWFnZS13aXRoLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyMDkzOTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb250ZW50LWxhbmd1YWdlLXdp
dGgtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiBUZXN0IGZvciBidWcgNzY3MDE6IG1hcCBIVFRQLUVRVUlWIGNvbnRlbnQtbGFuZ3VhZ2UgdG8g
LXdlYmtpdC1sb2NhbGUuIFRoaXMgcGFydGljdWxhciB0ZXN0IHRlc3RzIHRoYXQgdGhlIHRoZSBw
cmFnbWEtc2V0IGRlZmF1bHQgbGFuZ3VhZ2UgaXMgc2V0IHRvIHRoZSBmaXJzdCBzZXF1ZW5jZSBv
ZiBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG9mIHRoZSBjb250ZW50LWxhbmd1YWdlIGNvbnRl
bnQuIFRoaXMgZXhwZWN0YXRpb24gbWF5IGNoYW5nZSwgc2VlIGJ1Zy4gVGhpcyBleHBlY3RhdGlv
biBpcyBhcyBwZXIgdGhlIEhUTUwgNSBzcGVjLiBJdCBhcHBlYXJzIHRoYXQgRmlyZWZveCBkb2Vz
IG5vdCBleGFjdGx5IGRvIHRoaXMsIGJ1dCB0cmltcyB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcg
d2hpdGVzcGFjZS4gSXQncyB1bmNsZWFyIHdoYXQgSUUgZG9lcy4KIAotRkFJTCBsYW5ndWFnZU9m
Tm9kZSgneCcpIHNob3VsZCBiZSBqYV9KUC4gV2FzICcgIFxhXDlcOWphLUpQICAgXDkgIHpoX0NO
IFw5XGFcYVw5XDknLgorRkFJTCBsYW5ndWFnZU9mTm9kZSgneCcpIHNob3VsZCBiZSBqYV9KUC4g
V2FzICcgIFxhIFw5IFw5IGphLUpQICAgXDkgIHpoX0NOIFw5IFxhIFxhIFw5IFw5ICcuCiBQQVNT
IGxhbmd1YWdlT2ZOb2RlKCd5JykgaXMgImFyIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCg==
</data>
<flag name="review"
          id="318876"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>