<?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>202626</bug_id>
          
          <creation_ts>2019-10-07 01:15:32 -0700</creation_ts>
          <short_desc>Move font-rendering code from CanvasRenderingContext2D to CanvasRenderingContext2DBase to be used with OffscreenCanvas</short_desc>
          <delta_ts>2021-01-20 06:56:41 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          <dependson>182686</dependson>
          <blocked>186759</blocked>
    
    <blocked>202793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>koivisto</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577296</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-10-07 01:15:32 -0700</bug_when>
    <thetext>Previous work on bug 183720 moves much of Canvas 2d&apos;s to a base class. The font functions are skipped mainly I assume due to a reliance on Document to be able to use fonts. This bug is for moving that functionality into the relevant base classes, but not necessarily removing the Document dependency (which is a much larger task that it&apos;d be sensible to split as much work away from as possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578595</commentid>
    <comment_count>1</comment_count>
      <attachid>380631</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-10-10 04:18:46 -0700</bug_when>
    <thetext>Created attachment 380631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578791</commentid>
    <comment_count>2</comment_count>
      <attachid>380631</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-10 12:41:17 -0700</bug_when>
    <thetext>Comment on attachment 380631
Patch

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

&gt; Source/WebCore/html/canvas/OffscreenCanvasRenderingContext2D.cpp:60
&gt; +    auto parsedStyle = MutableStyleProperties::create();
&gt; +    CSSParser::parseValue(parsedStyle, CSSPropertyFont, newFont, true, strictToCSSParserMode(!m_usesCSSCompatibilityParseMode));
&gt; +    if (parsedStyle-&gt;isEmpty())

As far as I know, CSS parser isn&apos;t thread safe due to CSSValuePool and other static variables.
For example, consumeFontWeightKeywordValue would use CSSValuePool::singleton().createIdentifierValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579033</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-10-11 01:51:40 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; Comment on attachment 380631 [details]
&gt; As far as I know, CSS parser isn&apos;t thread safe due to CSSValuePool and other
&gt; static variables.
&gt; For example, consumeFontWeightKeywordValue would use
&gt; CSSValuePool::singleton().createIdentifierValue.

This is correct, however I&apos;ve altered the behaviour of CSSValuePool when used off the main thread in the dependent patch on bug #182686 to not return static variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579044</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-11 02:45:19 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #3)
&gt; (In reply to Ryosuke Niwa from comment #2)
&gt; &gt; Comment on attachment 380631 [details]
&gt; &gt; As far as I know, CSS parser isn&apos;t thread safe due to CSSValuePool and other
&gt; &gt; static variables.
&gt; &gt; For example, consumeFontWeightKeywordValue would use
&gt; &gt; CSSValuePool::singleton().createIdentifierValue.
&gt; 
&gt; This is correct, however I&apos;ve altered the behaviour of CSSValuePool when
&gt; used off the main thread in the dependent patch on bug #182686 to not return
&gt; static variables.

Ah, I didn&apos;t see that. I added a comment there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720871</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-20 06:56:41 -0800</bug_when>
    <thetext>The work from this bug was essentially done in bug 219088</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380631</attachid>
            <date>2019-10-10 04:18:46 -0700</date>
            <delta_ts>2019-10-10 12:41:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202626-20191010121845.patch</filename>
            <type>text/plain</type>
            <size>84421</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNjZTYzY2UwMmM2ZGQy
YjE3NTMzZTk5MDg5ZTAyNzlhNzc3YmY2OC4uOGQ4NWJmYzEyOGQ2NzdjOWUwYWI0NjIzOGRiODFi
NjgxMDg4Y2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTEwLTEwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGZvbnQtcmVuZGVyaW5n
IGNvZGUgZnJvbSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdG8gQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZSB0byBiZSB1c2VkIHdpdGggT2Zmc2NyZWVuQ2FudmFzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI2MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9DYW52YXNUZXh0QWxpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZnJvbUNhbnZhc1RleHRBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0QWxpZ24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VGV4dEFsaWduKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvQ2FudmFzVGV4dEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmZy
b21DYW52YXNUZXh0QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6dGV4dEJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFRleHRCYXNlbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmb250IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZpbGxUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnN0cm9rZVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTcGFjZVRoYXROZWVkc1JlcGxhY2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpub3JtYWxpemVTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6dG9UZXh0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRleHRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OnNldERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzVGV4
dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oOgorCiAyMDE5LTEwLTEwICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgW1RyYW5zZmVyYWJs
ZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA5ZWJmMTJm
MGQwNTRhOTE0NDBkMTc4MzQ5YmE0MWIyYjA1NDQxMzdmLi45OWFkMWI5ZTViZjFiZjJiMTg5ODlk
NGQ2MmM4OTBiMDU0ZTU2YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNp
bmNsdWRlICJQYXRoMkQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZE9ic2VydmVyLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgpAQCAtOTIsMzkgKzkxLDYgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0
aCYgcGF0aCwgRWxlbWUKICAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIDEsIDEsIFJl
bmRlclRoZW1lOjpzaW5nbGV0b24oKS5mb2N1c1JpbmdDb2xvcihlbGVtZW50LmRvY3VtZW50KCku
c3R5bGVDb2xvck9wdGlvbnMoY2FudmFzKCkuY29tcHV0ZWRTdHlsZSgpKSkpOwogfQogCi1TdHJp
bmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKLXsKLSAgICBpZiAoIXN0
YXRlKCkuZm9udC5yZWFsaXplZCgpKQotICAgICAgICByZXR1cm4gRGVmYXVsdEZvbnQ7Ci0KLSAg
ICBTdHJpbmdCdWlsZGVyIHNlcmlhbGl6ZWRGb250OwotICAgIGNvbnN0IGF1dG8mIGZvbnREZXNj
cmlwdGlvbiA9IHN0YXRlKCkuZm9udC5mb250RGVzY3JpcHRpb24oKTsKLQotICAgIGlmIChmb250
RGVzY3JpcHRpb24uaXRhbGljKCkpCi0gICAgICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZExpdGVy
YWwoIml0YWxpYyAiKTsKLSAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0g
Rm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKLSAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0
ZXJhbCgic21hbGwtY2FwcyAiKTsKLQotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJlcihm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7Ci0gICAgc2VyaWFsaXplZEZvbnQu
YXBwZW5kTGl0ZXJhbCgicHgiKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb250
RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAg
ICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kKCcsJyk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhcHBlbmQgZmFtaWx5IGRpcmVjdGx5IHRvIHNlcmlhbGl6ZWRGb250IHJhdGhlciB0
aGFuIGJ1aWxkaW5nIGEgdGVtcG9yYXJ5IHN0cmluZy4KLSAgICAgICAgU3RyaW5nIGZhbWlseSA9
IGZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsKLSAgICAgICAgaWYgKGZhbWlseS5zdGFydHNX
aXRoKCItd2Via2l0LSIpKQotICAgICAgICAgICAgZmFtaWx5ID0gZmFtaWx5LnN1YnN0cmluZyg4
KTsKLSAgICAgICAgaWYgKGZhbWlseS5jb250YWlucygnICcpKQotICAgICAgICAgICAgZmFtaWx5
ID0gbWFrZVN0cmluZygnIicsIGZhbWlseSwgJyInKTsKLQotICAgICAgICBzZXJpYWxpemVkRm9u
dC5hcHBlbmQoJyAnLCBmYW1pbHkpOwotICAgIH0KLQotICAgIHJldHVybiBzZXJpYWxpemVkRm9u
dC50b1N0cmluZygpOwotfQotCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9u
dChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiB7CiAgICAgaWYgKG5ld0ZvbnQgPT0gc3RhdGUoKS51
bnBhcnNlZEZvbnQgJiYgc3RhdGUoKS5mb250LnJlYWxpemVkKCkpCkBAIC0xODUsMjMxICsxNTEs
NiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcm
IG5ld0ZvbnQpCiAgICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50
LmZvbnRTZWxlY3RvcigpLCAqc3R5bGVSZXNvbHZlci5zdHlsZSgpKTsKIH0KIAotc3RhdGljIENh
bnZhc1RleHRBbGlnbiB0b0NhbnZhc1RleHRBbGlnbihUZXh0QWxpZ24gdGV4dEFsaWduKQotewot
ICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgY2FzZSBTdGFydFRleHRBbGlnbjoKLSAgICAg
ICAgcmV0dXJuIENhbnZhc1RleHRBbGlnbjo6U3RhcnQ7Ci0gICAgY2FzZSBFbmRUZXh0QWxpZ246
Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QWxpZ246OkVuZDsKLSAgICBjYXNlIExlZnRUZXh0
QWxpZ246Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QWxpZ246OkxlZnQ7Ci0gICAgY2FzZSBS
aWdodFRleHRBbGlnbjoKLSAgICAgICAgcmV0dXJuIENhbnZhc1RleHRBbGlnbjo6UmlnaHQ7Ci0g
ICAgY2FzZSBDZW50ZXJUZXh0QWxpZ246Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QWxpZ246
OkNlbnRlcjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
Q2FudmFzVGV4dEFsaWduOjpTdGFydDsKLX0KLQotc3RhdGljIFRleHRBbGlnbiBmcm9tQ2FudmFz
VGV4dEFsaWduKENhbnZhc1RleHRBbGlnbiBjYW52YXNUZXh0QWxpZ24pCi17Ci0gICAgc3dpdGNo
IChjYW52YXNUZXh0QWxpZ24pIHsKLSAgICBjYXNlIENhbnZhc1RleHRBbGlnbjo6U3RhcnQ6Ci0g
ICAgICAgIHJldHVybiBTdGFydFRleHRBbGlnbjsKLSAgICBjYXNlIENhbnZhc1RleHRBbGlnbjo6
RW5kOgotICAgICAgICByZXR1cm4gRW5kVGV4dEFsaWduOwotICAgIGNhc2UgQ2FudmFzVGV4dEFs
aWduOjpMZWZ0OgotICAgICAgICByZXR1cm4gTGVmdFRleHRBbGlnbjsKLSAgICBjYXNlIENhbnZh
c1RleHRBbGlnbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBSaWdodFRleHRBbGlnbjsKLSAgICBj
YXNlIENhbnZhc1RleHRBbGlnbjo6Q2VudGVyOgotICAgICAgICByZXR1cm4gQ2VudGVyVGV4dEFs
aWduOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdGFy
dFRleHRBbGlnbjsKLX0KLQotQ2FudmFzVGV4dEFsaWduIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6dGV4dEFsaWduKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdG9DYW52YXNUZXh0QWxpZ24oc3Rh
dGUoKS50ZXh0QWxpZ24pOwotfQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
VGV4dEFsaWduKENhbnZhc1RleHRBbGlnbiBjYW52YXNUZXh0QWxpZ24pCi17Ci0gICAgYXV0byB0
ZXh0QWxpZ24gPSBmcm9tQ2FudmFzVGV4dEFsaWduKGNhbnZhc1RleHRBbGlnbik7Ci0gICAgaWYg
KHN0YXRlKCkudGV4dEFsaWduID09IHRleHRBbGlnbikKLSAgICAgICAgcmV0dXJuOwotICAgIHJl
YWxpemVTYXZlcygpOwotICAgIG1vZGlmaWFibGVTdGF0ZSgpLnRleHRBbGlnbiA9IHRleHRBbGln
bjsKLX0KLQotc3RhdGljIENhbnZhc1RleHRCYXNlbGluZSB0b0NhbnZhc1RleHRCYXNlbGluZShU
ZXh0QmFzZWxpbmUgdGV4dEJhc2VsaW5lKQotewotICAgIHN3aXRjaCAodGV4dEJhc2VsaW5lKSB7
Ci0gICAgY2FzZSBUb3BUZXh0QmFzZWxpbmU6Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFz
ZWxpbmU6OlRvcDsKLSAgICBjYXNlIEhhbmdpbmdUZXh0QmFzZWxpbmU6Ci0gICAgICAgIHJldHVy
biBDYW52YXNUZXh0QmFzZWxpbmU6Okhhbmdpbmc7Ci0gICAgY2FzZSBNaWRkbGVUZXh0QmFzZWxp
bmU6Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6Ok1pZGRsZTsKLSAgICBjYXNl
IEFscGhhYmV0aWNUZXh0QmFzZWxpbmU6Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxp
bmU6OkFscGhhYmV0aWM7Ci0gICAgY2FzZSBJZGVvZ3JhcGhpY1RleHRCYXNlbGluZToKLSAgICAg
ICAgcmV0dXJuIENhbnZhc1RleHRCYXNlbGluZTo6SWRlb2dyYXBoaWM7Ci0gICAgY2FzZSBCb3R0
b21UZXh0QmFzZWxpbmU6Ci0gICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6OkJvdHRv
bTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ2FudmFz
VGV4dEJhc2VsaW5lOjpUb3A7Ci19Ci0KLXN0YXRpYyBUZXh0QmFzZWxpbmUgZnJvbUNhbnZhc1Rl
eHRCYXNlbGluZShDYW52YXNUZXh0QmFzZWxpbmUgY2FudmFzVGV4dEJhc2VsaW5lKQotewotICAg
IHN3aXRjaCAoY2FudmFzVGV4dEJhc2VsaW5lKSB7Ci0gICAgY2FzZSBDYW52YXNUZXh0QmFzZWxp
bmU6OlRvcDoKLSAgICAgICAgcmV0dXJuIFRvcFRleHRCYXNlbGluZTsKLSAgICBjYXNlIENhbnZh
c1RleHRCYXNlbGluZTo6SGFuZ2luZzoKLSAgICAgICAgcmV0dXJuIEhhbmdpbmdUZXh0QmFzZWxp
bmU7Ci0gICAgY2FzZSBDYW52YXNUZXh0QmFzZWxpbmU6Ok1pZGRsZToKLSAgICAgICAgcmV0dXJu
IE1pZGRsZVRleHRCYXNlbGluZTsKLSAgICBjYXNlIENhbnZhc1RleHRCYXNlbGluZTo6QWxwaGFi
ZXRpYzoKLSAgICAgICAgcmV0dXJuIEFscGhhYmV0aWNUZXh0QmFzZWxpbmU7Ci0gICAgY2FzZSBD
YW52YXNUZXh0QmFzZWxpbmU6OklkZW9ncmFwaGljOgotICAgICAgICByZXR1cm4gSWRlb2dyYXBo
aWNUZXh0QmFzZWxpbmU7Ci0gICAgY2FzZSBDYW52YXNUZXh0QmFzZWxpbmU6OkJvdHRvbToKLSAg
ICAgICAgcmV0dXJuIEJvdHRvbVRleHRCYXNlbGluZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVG9wVGV4dEJhc2VsaW5lOwotfQotCi1DYW52YXNUZXh0
QmFzZWxpbmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0ZXh0QmFzZWxpbmUoKSBjb25zdAot
ewotICAgIHJldHVybiB0b0NhbnZhc1RleHRCYXNlbGluZShzdGF0ZSgpLnRleHRCYXNlbGluZSk7
Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUZXh0QmFzZWxpbmUoQ2Fu
dmFzVGV4dEJhc2VsaW5lIGNhbnZhc1RleHRCYXNlbGluZSkKLXsKLSAgICBhdXRvIHRleHRCYXNl
bGluZSA9IGZyb21DYW52YXNUZXh0QmFzZWxpbmUoY2FudmFzVGV4dEJhc2VsaW5lKTsKLSAgICBp
ZiAoc3RhdGUoKS50ZXh0QmFzZWxpbmUgPT0gdGV4dEJhc2VsaW5lKQotICAgICAgICByZXR1cm47
Ci0gICAgcmVhbGl6ZVNhdmVzKCk7Ci0gICAgbW9kaWZpYWJsZVN0YXRlKCkudGV4dEJhc2VsaW5l
ID0gdGV4dEJhc2VsaW5lOwotfQotCi1pbmxpbmUgVGV4dERpcmVjdGlvbiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbihEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBS
ZW5kZXJTdHlsZSoqIGNvbXB1dGVkU3R5bGUpIGNvbnN0Ci17Ci0gICAgYXV0byogc3R5bGUgPSAo
Y29tcHV0ZWRTdHlsZSB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpJbmhlcml0KSA/IGNhbnZh
cygpLmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKGNvbXB1dGVkU3R5bGUpCi0g
ICAgICAgICpjb21wdXRlZFN0eWxlID0gc3R5bGU7Ci0gICAgc3dpdGNoIChkaXJlY3Rpb24pIHsK
LSAgICBjYXNlIERpcmVjdGlvbjo6SW5oZXJpdDoKLSAgICAgICAgcmV0dXJuIHN0eWxlID8gc3R5
bGUtPmRpcmVjdGlvbigpIDogVGV4dERpcmVjdGlvbjo6TFRSOwotICAgIGNhc2UgRGlyZWN0aW9u
OjpSdGw6Ci0gICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7Ci0gICAgY2FzZSBEaXJl
Y3Rpb246Okx0cjoKLSAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsK
LX0KLQotQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlyZWN0aW9u
KCkgY29uc3QKLXsKLSAgICBpZiAoc3RhdGUoKS5kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpJbmhl
cml0KQotICAgICAgICBjYW52YXMoKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
LSAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEwgPyBDYW52YXNEaXJlY3Rpb246OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRy
OwotfQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RGlyZWN0aW9uKENhbnZh
c0RpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgaWYgKHN0YXRlKCkuZGlyZWN0aW9uID09IGRp
cmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhbGl6ZVNhdmVzKCk7Ci0gICAgbW9k
aWZpYWJsZVN0YXRlKCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwotfQotCi12b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCi17Ci0gICAgZHJhd1RleHRJbnRlcm5h
bCh0ZXh0LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQg
eSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQotewotICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4
dCwgeCwgeSwgZmFsc2UsIG1heFdpZHRoKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzU3Bh
Y2VUaGF0TmVlZHNSZXBsYWNpbmcoVUNoYXIgYykKLXsKLSAgICAvLyBBY2NvcmRpbmcgdG8gc3Bl
Y2lmaWNhdGlvbiBhbGwgc3BhY2UgY2hhcmFjdGVycyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCAw
eDAwMjAgc3BhY2UgY2hhcmFjdGVyLgotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1s
I3RleHQtcHJlcGFyYXRpb24tYWxnb3JpdGhtCi0gICAgLy8gVGhlIHNwYWNlIGNoYXJhY3RlcnMg
YWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24gYXJlIDogVSswMDIwLCBVKzAwMDksIFUrMDAwQSwg
VSswMDBDLCBhbmQgVSswMDBELgotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1taWNyb3N5bnRheGVzLmh0bWwj
c3BhY2UtY2hhcmFjdGVyCi0gICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIDB4
MDAwQiBhbHNvLCBzbyB0aGF0IHRoaXMgaXMgYmFja3dhcmQgY29tcGF0aWJsZS4KLSAgICAvLyBP
dGhlcndpc2UsIHRoZSB0ZXN0IExheW91dFRlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwgd2lsbCBmYWlsCi0gICAgcmV0dXJuIGMg
PT0gMHgwMDA5IHx8IGMgPT0gMHgwMDBBIHx8IGMgPT0gMHgwMDBCIHx8IGMgPT0gMHgwMDBDIHx8
IGMgPT0gMHgwMDBEOwotfQotCi1zdGF0aWMgdm9pZCBub3JtYWxpemVTcGFjZXMoU3RyaW5nJiB0
ZXh0KQotewotICAgIHNpemVfdCBpID0gdGV4dC5maW5kKGlzU3BhY2VUaGF0TmVlZHNSZXBsYWNp
bmcpOwotICAgIGlmIChpID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNp
Z25lZCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICBWZWN0b3I8VUNoYXI+IGNoYXJW
ZWN0b3IodGV4dExlbmd0aCk7Ci0gICAgU3RyaW5nVmlldyh0ZXh0KS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChjaGFyVmVjdG9yLmRhdGEoKSk7Ci0KLSAgICBjaGFyVmVjdG9yW2krK10gPSAn
ICc7Ci0KLSAgICBmb3IgKDsgaSA8IHRleHRMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaXNT
cGFjZVRoYXROZWVkc1JlcGxhY2luZyhjaGFyVmVjdG9yW2ldKSkKLSAgICAgICAgICAgIGNoYXJW
ZWN0b3JbaV0gPSAnICc7Ci0gICAgfQotICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUo
Y2hhclZlY3RvcikpOwotfQotCi1SZWY8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVk
KCkpIHsKLSAgICAgICAgYXV0byYgY2FudmFzID0gdGhpcy0+Y2FudmFzKCk7Ci0gICAgICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjYW52
YXMuZG9jdW1lbnQoKSwgdGV4dCk7Ci0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWQoKS5sb2dDYW52YXNSZWFkKGNhbnZhcy5kb2N1bWVudCgpKTsKLSAgICB9Ci0gICAgCi0gICAg
UmVmPFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwotCi0gICAg
U3RyaW5nIG5vcm1hbGl6ZWRUZXh0ID0gdGV4dDsKLSAgICBub3JtYWxpemVTcGFjZXMobm9ybWFs
aXplZFRleHQpOwotCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGU7Ci0gICAg
YXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24sICZjb21w
dXRlZFN0eWxlKTsKLSAgICBib29sIG92ZXJyaWRlID0gY29tcHV0ZWRTdHlsZSA/IGlzT3ZlcnJp
ZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSkgOiBmYWxzZTsKLQotICAgIFRleHRSdW4g
dGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgZGly
ZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7Ci0gICAgYXV0byYgZm9udCA9IGZvbnRQcm94eSgpOwot
ICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwotCi0gICAgR2x5cGhP
dmVyZmxvdyBnbHlwaE92ZXJmbG93OwotICAgIGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9
IHRydWU7Ci0gICAgZmxvYXQgZm9udFdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuLCAmZ2x5cGhP
dmVyZmxvdyk7Ci0gICAgbWV0cmljcy0+c2V0V2lkdGgoZm9udFdpZHRoKTsKLQotICAgIEZsb2F0
UG9pbnQgb2Zmc2V0ID0gdGV4dE9mZnNldChmb250V2lkdGgsIGRpcmVjdGlvbik7Ci0KLSAgICBt
ZXRyaWNzLT5zZXRBY3R1YWxCb3VuZGluZ0JveEFzY2VudChnbHlwaE92ZXJmbG93LnRvcCAtIG9m
ZnNldC55KCkpOwotICAgIG1ldHJpY3MtPnNldEFjdHVhbEJvdW5kaW5nQm94RGVzY2VudChnbHlw
aE92ZXJmbG93LmJvdHRvbSArIG9mZnNldC55KCkpOwotICAgIG1ldHJpY3MtPnNldEZvbnRCb3Vu
ZGluZ0JveEFzY2VudChmb250TWV0cmljcy5hc2NlbnQoKSAtIG9mZnNldC55KCkpOwotICAgIG1l
dHJpY3MtPnNldEZvbnRCb3VuZGluZ0JveERlc2NlbnQoZm9udE1ldHJpY3MuZGVzY2VudCgpICsg
b2Zmc2V0LnkoKSk7Ci0gICAgbWV0cmljcy0+c2V0RW1IZWlnaHRBc2NlbnQoZm9udE1ldHJpY3Mu
YXNjZW50KCkgLSBvZmZzZXQueSgpKTsKLSAgICBtZXRyaWNzLT5zZXRFbUhlaWdodERlc2NlbnQo
Zm9udE1ldHJpY3MuZGVzY2VudCgpICsgb2Zmc2V0LnkoKSk7Ci0gICAgbWV0cmljcy0+c2V0SGFu
Z2luZ0Jhc2VsaW5lKGZvbnRNZXRyaWNzLmFzY2VudCgpIC0gb2Zmc2V0LnkoKSk7Ci0gICAgbWV0
cmljcy0+c2V0QWxwaGFiZXRpY0Jhc2VsaW5lKC1vZmZzZXQueSgpKTsKLSAgICBtZXRyaWNzLT5z
ZXRJZGVvZ3JhcGhpY0Jhc2VsaW5lKC1mb250TWV0cmljcy5kZXNjZW50KCkgLSBvZmZzZXQueSgp
KTsKLQotICAgIG1ldHJpY3MtPnNldEFjdHVhbEJvdW5kaW5nQm94TGVmdChnbHlwaE92ZXJmbG93
LmxlZnQgLSBvZmZzZXQueCgpKTsKLSAgICBtZXRyaWNzLT5zZXRBY3R1YWxCb3VuZGluZ0JveFJp
Z2h0KGZvbnRXaWR0aCArIGdseXBoT3ZlcmZsb3cucmlnaHQgKyBvZmZzZXQueCgpKTsKLQotICAg
IHJldHVybiBtZXRyaWNzOwotfQotCiBhdXRvIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zm9u
dFByb3h5KCkgLT4gY29uc3QgRm9udFByb3h5JiB7CiAgICAgYXV0byYgY2FudmFzID0gZG93bmNh
c3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAgICAgY2FudmFzLmRvY3VtZW50
KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpAQCAtNDE4LDE4OCArMTU5LDQgQEAgYXV0byBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSYgewog
ICAgIHJldHVybiBzdGF0ZSgpLmZvbnQ7CiB9CiAKLUZsb2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjp0ZXh0T2Zmc2V0KGZsb2F0IHdpZHRoLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bikKLXsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnRQcm94eSgpLmZvbnRNZXRyaWNzKCk7
Ci0gICAgRmxvYXRQb2ludCBvZmZzZXQ7Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKCkudGV4dEJhc2Vs
aW5lKSB7Ci0gICAgY2FzZSBUb3BUZXh0QmFzZWxpbmU6Ci0gICAgY2FzZSBIYW5naW5nVGV4dEJh
c2VsaW5lOgotICAgICAgICBvZmZzZXQuc2V0WShmb250TWV0cmljcy5hc2NlbnQoKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQm90dG9tVGV4dEJhc2VsaW5lOgotICAgIGNhc2UgSWRlb2dy
YXBoaWNUZXh0QmFzZWxpbmU6Ci0gICAgICAgIG9mZnNldC5zZXRZKC1mb250TWV0cmljcy5kZXNj
ZW50KCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1pZGRsZVRleHRCYXNlbGluZToKLSAg
ICAgICAgb2Zmc2V0LnNldFkoZm9udE1ldHJpY3MuaGVpZ2h0KCkgLyAyIC0gZm9udE1ldHJpY3Mu
ZGVzY2VudCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbHBoYWJldGljVGV4dEJhc2Vs
aW5lOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGJvb2wgaXNS
VEwgPSBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMOwotICAgIGF1dG8gYWxpZ24gPSBz
dGF0ZSgpLnRleHRBbGlnbjsKLSAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCi0gICAg
ICAgIGFsaWduID0gaXNSVEwgPyBSaWdodFRleHRBbGlnbiA6IExlZnRUZXh0QWxpZ247Ci0gICAg
ZWxzZSBpZiAoYWxpZ24gPT0gRW5kVGV4dEFsaWduKQotICAgICAgICBhbGlnbiA9IGlzUlRMID8g
TGVmdFRleHRBbGlnbiA6IFJpZ2h0VGV4dEFsaWduOwotCi0gICAgc3dpdGNoIChhbGlnbikgewot
ICAgIGNhc2UgQ2VudGVyVGV4dEFsaWduOgotICAgICAgICBvZmZzZXQuc2V0WCgtd2lkdGggLyAy
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSaWdodFRleHRBbGlnbjoKLSAgICAgICAgb2Zm
c2V0LnNldFgoLXdpZHRoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCi17Ci0gICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlz
dGljc0VuYWJsZWQoKSkKLSAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxv
Z0NhbnZhc1dyaXRlT3JNZWFzdXJlKHRoaXMtPmNhbnZhcygpLmRvY3VtZW50KCksIHRleHQpOwot
ICAgIAotICAgIGF1dG8mIGZvbnRQcm94eSA9IHRoaXMtPmZvbnRQcm94eSgpOwotICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzKCk7Ci0KLSAgICBhdXRv
KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKLSAgICBpZiAoIWMpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSB8ICFzdGQ6OmlzZmluaXRlKHkpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKG1heFdpZHRoICYmICghc3RkOjppc2Zpbml0ZShtYXhXaWR0aC52YWx1
ZSgpKSB8fCBtYXhXaWR0aC52YWx1ZSgpIDw9IDApKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBJZiBncmFkaWVudCBzaXplIGlzIHplcm8sIHRoZW4gcGFpbnQgbm90aGluZy4KLSAgICBhdXRv
IGdyYWRpZW50ID0gYy0+c3Ryb2tlR3JhZGllbnQoKTsKLSAgICBpZiAoIWZpbGwgJiYgZ3JhZGll
bnQgJiYgZ3JhZGllbnQtPmlzWmVyb1NpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ3Jh
ZGllbnQgPSBjLT5maWxsR3JhZGllbnQoKTsKLSAgICBpZiAoZmlsbCAmJiBncmFkaWVudCAmJiBn
cmFkaWVudC0+aXNaZXJvU2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgbm9y
bWFsaXplZFRleHQgPSB0ZXh0OwotICAgIG5vcm1hbGl6ZVNwYWNlcyhub3JtYWxpemVkVGV4dCk7
Ci0KLSAgICAvLyBGSVhNRTogTmVlZCB0byB0dXJuIG9mZiBmb250IHNtb290aGluZy4KLQotICAg
IGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlOwotICAgIGF1dG8gZGlyZWN0aW9uID0g
dG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7Ci0gICAg
Ym9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBpc092ZXJyaWRlKGNvbXB1dGVkU3R5bGUt
PnVuaWNvZGVCaWRpKCkpIDogZmFsc2U7Ci0KLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXpl
ZFRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUs
IHRydWUpOwotICAgIGZsb2F0IGZvbnRXaWR0aCA9IGZvbnRQcm94eS53aWR0aCh0ZXh0UnVuKTsK
LSAgICBib29sIHVzZU1heFdpZHRoID0gbWF4V2lkdGggJiYgbWF4V2lkdGgudmFsdWUoKSA8IGZv
bnRXaWR0aDsKLSAgICBmbG9hdCB3aWR0aCA9IHVzZU1heFdpZHRoID8gbWF4V2lkdGgudmFsdWUo
KSA6IGZvbnRXaWR0aDsKLSAgICBGbG9hdFBvaW50IGxvY2F0aW9uKHgsIHkpOwotICAgIGxvY2F0
aW9uICs9IHRleHRPZmZzZXQod2lkdGgsIGRpcmVjdGlvbik7Ci0KLSAgICAvLyBUaGUgc2xvcCBi
dWlsdCBpbiB0byB0aGlzIG1hc2sgcmVjdCBtYXRjaGVzIHRoZSBoZXVyaXN0aWMgdXNlZCBpbiBG
b250Q0dXaW4uY3BwIGZvciBHREkgdGV4dC4KLSAgICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9h
dFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55
KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZvbnRNZXRyaWNzLmxpbmVHYXAoKSwKLSAgICAg
ICAgd2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmco
KSk7Ci0gICAgaWYgKCFmaWxsKQotICAgICAgICBpbmZsYXRlU3Ryb2tlUmVjdCh0ZXh0UmVjdCk7
Ci0KLSNpZiBVU0UoQ0cpCi0gICAgY29uc3QgQ2FudmFzU3R5bGUmIGRyYXdTdHlsZSA9IGZpbGwg
PyBzdGF0ZSgpLmZpbGxTdHlsZSA6IHN0YXRlKCkuc3Ryb2tlU3R5bGU7Ci0gICAgaWYgKGRyYXdT
dHlsZS5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHlsZS5jYW52YXNQYXR0ZXJuKCkpIHsKLSAg
ICAgICAgSW50UmVjdCBtYXNrUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dFJlY3QpOwotCi0g
ICAgICAgIC8vIElmIHdlIGhhdmUgYSBzaGFkb3csIHdlIG5lZWQgdG8gZHJhdyBpdCBiZWZvcmUg
dGhlIG1hc2sgb3BlcmF0aW9uLgotICAgICAgICAvLyBGb2xsb3cgYSBwcm9jZWR1cmUgc2ltaWxh
ciB0byBwYWludFRleHRXaXRoU2hhZG93cyBpbiBUZXh0UGFpbnRlci4KLQotICAgICAgICBpZiAo
c2hvdWxkRHJhd1NoYWRvd3MoKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjKTsKLQotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldCgwLCAy
ICogbWFza1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zm
c2V0OwotICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Ig
c2hhZG93Q29sb3I7Ci0gICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKLQotICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1Jl
Y3QobWFza1JlY3QpOwotICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd1JhZGl1
cyAqIDEuNCk7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0ICogLTEp
OwotICAgICAgICAgICAgYy0+Y2xpcChzaGFkb3dSZWN0KTsKLQotICAgICAgICAgICAgc2hhZG93
T2Zmc2V0ICs9IG9mZnNldDsKLQotICAgICAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7Ci0KLSAgICAgICAgICAgIGlmIChm
aWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpi
bGFjayk7Ci0KLSAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4s
IGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFk
eSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgQ29sb3JTcGFjZVNSR0IsICpj
KTsKLSAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgYXV0byYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwotCi0gICAg
ICAgIGlmIChmaWxsKQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VD
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2UpOwotCi0gICAgICAgIGlmICh1c2VNYXhXaWR0
aCkgewotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBt
YXNrUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lk
dGggaXMgMCBzbyBjb21wb3NpdGluZyBvcGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxs
IHdvcmsuCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9u
dFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAg
Zm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFz
a1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1h
c2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgIH0KLQotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwotICAgICAgICBjLT5jbGlwVG9JbWFnZUJ1ZmZlcigq
bWFza0ltYWdlLCBtYXNrUmVjdCk7Ci0gICAgICAgIGRyYXdTdHlsZS5hcHBseUZpbGxDb2xvcigq
Yyk7Ci0gICAgICAgIGMtPmZpbGxSZWN0KG1hc2tSZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotCi0gICAgYy0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZp
bGwgOiBUZXh0TW9kZVN0cm9rZSk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmMpOwotICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICBjLT50cmFuc2xh
dGUobG9jYXRpb24pOwotICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28g
Y29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgotICAg
ICAgICBjLT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBmb250V2lk
dGgpIDogMCksIDEpKTsKLSAgICAgICAgbG9jYXRpb24gPSBGbG9hdFBvaW50KCk7Ci0gICAgfQot
Ci0gICAgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUpKSB7Ci0gICAgICAgIGJlZ2luQ29tcG9zaXRlTGF5ZXIoKTsKLSAgICAgICAgZm9udFByb3h5
LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxs
YmFja0lmRm9udE5vdFJlYWR5KTsKLSAgICAgICAgZW5kQ29tcG9zaXRlTGF5ZXIoKTsKLSAgICAg
ICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwotICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewotICAgICAgICBjbGVhckNhbnZhcygpOwotICAg
ICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENh
c2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgq
YywgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJl
YWR5KTsKLSAgICAgICAgZGlkRHJhdyh0ZXh0UmVjdCk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDNhMDhjYWZhZjhjZjJlZmM1MTZmODc1MjE2MmY1
Y2UzMjAzZGVkMjcuLjQwYTFlMGQ3ZjhiMjYzMTJjNDUwZjc1YTYwYjM0M2Y4MmVmYjZiMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCkBAIC01MSwzOCArNTEsMTkgQEAgcHVibGljOgogCiAgICAgZmxvYXQgd2Via2l0
QmFja2luZ1N0b3JlUGl4ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAotICAgIFN0cmlu
ZyBmb250KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGb250KGNvbnN0IFN0cmluZyYpOwotCi0gICAg
Q2FudmFzVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0OwotICAgIHZvaWQgc2V0VGV4dEFsaWdu
KENhbnZhc1RleHRBbGlnbik7Ci0KLSAgICBDYW52YXNUZXh0QmFzZWxpbmUgdGV4dEJhc2VsaW5l
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0QmFzZWxpbmUoQ2FudmFzVGV4dEJhc2VsaW5lKTsK
LQotICAgIENhbnZhc0RpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldERp
cmVjdGlvbihDYW52YXNEaXJlY3Rpb24pOwotCi0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdU
Rjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsK
LSAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7Cisg
ICAgdm9pZCBzZXRGb250KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAgICAgYm9vbCBpczJkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi1wcml2YXRlOgotICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJiwgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBh
cnNlTW9kZSk7Ci0KK3Byb3RlY3RlZDoKICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4g
Rm9udENhc2NhZGUgYW5kIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Rm9udFByb3h5IG11c3Qg
aG9sZCBjZXJ0YWluIGludmFyaWFudHMuCiAgICAgLy8gVGhlcmVmb3JlLCBhbGwgZm9udCBvcGVy
YXRpb25zIG11c3QgcGFzcyB0aHJvdWdoIHRoZSBTdGF0ZS4KLSAgICBjb25zdCBGb250UHJveHkm
IGZvbnRQcm94eSgpOworICAgIGNvbnN0IEZvbnRQcm94eSYgZm9udFByb3h5KCkgZmluYWw7CiAK
LSAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9w
dCk7Citwcml2YXRlOgorICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJiwg
Ym9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSk7CiAKICAgICB2b2lkIGRyYXdGb2N1
c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYsIEVsZW1lbnQmKTsKLQotICAgIFRleHREaXJl
Y3Rpb24gdG9UZXh0RGlyZWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRpcmVj
dGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqKiBjb21wdXRlZFN0eWxlID0gbnVsbHB0cikgY29uc3Q7
Ci0KLSAgICBGbG9hdFBvaW50IHRleHRPZmZzZXQoZmxvYXQgd2lkdGgsIFRleHREaXJlY3Rpb24p
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRl
eCA1MTVkZjQ5YmQ1OWMxN2RkMDdmN2EwZWM5YzRmODZjNjAzYThlMDg3Li44NjRjYWYxN2Q1NTZm
ODExOTk3MTQzYjQ5YjI5MDMxMDU4ZDFiNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFz
R3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5jbHVkZSAiQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4LmgiCiAjaW5jbHVkZSAi
RE9NTWF0cml4MkRJbml0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgpAQCAt
NTcsNiArNTgsOCBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZE9ic2VydmVyLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dHJva2VTdHlsZUFwcGxpZXIuaCIKQEAgLTIzNDcsNCArMjM1MCw0NTUgQEAgUmVmPFBhdGgyRD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJu
IFBhdGgyRDo6Y3JlYXRlKG1fcGF0aCk7CiB9CiAKK3N0YXRpYyBDYW52YXNUZXh0QWxpZ24gdG9D
YW52YXNUZXh0QWxpZ24oVGV4dEFsaWduIHRleHRBbGlnbikKK3sKKyAgICBzd2l0Y2ggKHRleHRB
bGlnbikgeworICAgIGNhc2UgU3RhcnRUZXh0QWxpZ246CisgICAgICAgIHJldHVybiBDYW52YXNU
ZXh0QWxpZ246OlN0YXJ0OworICAgIGNhc2UgRW5kVGV4dEFsaWduOgorICAgICAgICByZXR1cm4g
Q2FudmFzVGV4dEFsaWduOjpFbmQ7CisgICAgY2FzZSBMZWZ0VGV4dEFsaWduOgorICAgICAgICBy
ZXR1cm4gQ2FudmFzVGV4dEFsaWduOjpMZWZ0OworICAgIGNhc2UgUmlnaHRUZXh0QWxpZ246Cisg
ICAgICAgIHJldHVybiBDYW52YXNUZXh0QWxpZ246OlJpZ2h0OworICAgIGNhc2UgQ2VudGVyVGV4
dEFsaWduOgorICAgICAgICByZXR1cm4gQ2FudmFzVGV4dEFsaWduOjpDZW50ZXI7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENhbnZhc1RleHRBbGlnbjo6
U3RhcnQ7Cit9CisKK3N0YXRpYyBUZXh0QWxpZ24gZnJvbUNhbnZhc1RleHRBbGlnbihDYW52YXNU
ZXh0QWxpZ24gY2FudmFzVGV4dEFsaWduKQoreworICAgIHN3aXRjaCAoY2FudmFzVGV4dEFsaWdu
KSB7CisgICAgY2FzZSBDYW52YXNUZXh0QWxpZ246OlN0YXJ0OgorICAgICAgICByZXR1cm4gU3Rh
cnRUZXh0QWxpZ247CisgICAgY2FzZSBDYW52YXNUZXh0QWxpZ246OkVuZDoKKyAgICAgICAgcmV0
dXJuIEVuZFRleHRBbGlnbjsKKyAgICBjYXNlIENhbnZhc1RleHRBbGlnbjo6TGVmdDoKKyAgICAg
ICAgcmV0dXJuIExlZnRUZXh0QWxpZ247CisgICAgY2FzZSBDYW52YXNUZXh0QWxpZ246OlJpZ2h0
OgorICAgICAgICByZXR1cm4gUmlnaHRUZXh0QWxpZ247CisgICAgY2FzZSBDYW52YXNUZXh0QWxp
Z246OkNlbnRlcjoKKyAgICAgICAgcmV0dXJuIENlbnRlclRleHRBbGlnbjsKKyAgICB9CisKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RhcnRUZXh0QWxpZ247Cit9CisK
K0NhbnZhc1RleHRBbGlnbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0ZXh0QWxpZ24o
KSBjb25zdAoreworICAgIHJldHVybiB0b0NhbnZhc1RleHRBbGlnbihzdGF0ZSgpLnRleHRBbGln
bik7Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VGV4dEFsaWdu
KENhbnZhc1RleHRBbGlnbiBjYW52YXNUZXh0QWxpZ24pCit7CisgICAgYXV0byB0ZXh0QWxpZ24g
PSBmcm9tQ2FudmFzVGV4dEFsaWduKGNhbnZhc1RleHRBbGlnbik7CisgICAgaWYgKHN0YXRlKCku
dGV4dEFsaWduID09IHRleHRBbGlnbikKKyAgICAgICAgcmV0dXJuOworICAgIHJlYWxpemVTYXZl
cygpOworICAgIG1vZGlmaWFibGVTdGF0ZSgpLnRleHRBbGlnbiA9IHRleHRBbGlnbjsKK30KKwor
c3RhdGljIENhbnZhc1RleHRCYXNlbGluZSB0b0NhbnZhc1RleHRCYXNlbGluZShUZXh0QmFzZWxp
bmUgdGV4dEJhc2VsaW5lKQoreworICAgIHN3aXRjaCAodGV4dEJhc2VsaW5lKSB7CisgICAgY2Fz
ZSBUb3BUZXh0QmFzZWxpbmU6CisgICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6OlRv
cDsKKyAgICBjYXNlIEhhbmdpbmdUZXh0QmFzZWxpbmU6CisgICAgICAgIHJldHVybiBDYW52YXNU
ZXh0QmFzZWxpbmU6Okhhbmdpbmc7CisgICAgY2FzZSBNaWRkbGVUZXh0QmFzZWxpbmU6CisgICAg
ICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6Ok1pZGRsZTsKKyAgICBjYXNlIEFscGhhYmV0
aWNUZXh0QmFzZWxpbmU6CisgICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6OkFscGhh
YmV0aWM7CisgICAgY2FzZSBJZGVvZ3JhcGhpY1RleHRCYXNlbGluZToKKyAgICAgICAgcmV0dXJu
IENhbnZhc1RleHRCYXNlbGluZTo6SWRlb2dyYXBoaWM7CisgICAgY2FzZSBCb3R0b21UZXh0QmFz
ZWxpbmU6CisgICAgICAgIHJldHVybiBDYW52YXNUZXh0QmFzZWxpbmU6OkJvdHRvbTsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2FudmFzVGV4dEJhc2Vs
aW5lOjpUb3A7Cit9CisKK3N0YXRpYyBUZXh0QmFzZWxpbmUgZnJvbUNhbnZhc1RleHRCYXNlbGlu
ZShDYW52YXNUZXh0QmFzZWxpbmUgY2FudmFzVGV4dEJhc2VsaW5lKQoreworICAgIHN3aXRjaCAo
Y2FudmFzVGV4dEJhc2VsaW5lKSB7CisgICAgY2FzZSBDYW52YXNUZXh0QmFzZWxpbmU6OlRvcDoK
KyAgICAgICAgcmV0dXJuIFRvcFRleHRCYXNlbGluZTsKKyAgICBjYXNlIENhbnZhc1RleHRCYXNl
bGluZTo6SGFuZ2luZzoKKyAgICAgICAgcmV0dXJuIEhhbmdpbmdUZXh0QmFzZWxpbmU7CisgICAg
Y2FzZSBDYW52YXNUZXh0QmFzZWxpbmU6Ok1pZGRsZToKKyAgICAgICAgcmV0dXJuIE1pZGRsZVRl
eHRCYXNlbGluZTsKKyAgICBjYXNlIENhbnZhc1RleHRCYXNlbGluZTo6QWxwaGFiZXRpYzoKKyAg
ICAgICAgcmV0dXJuIEFscGhhYmV0aWNUZXh0QmFzZWxpbmU7CisgICAgY2FzZSBDYW52YXNUZXh0
QmFzZWxpbmU6OklkZW9ncmFwaGljOgorICAgICAgICByZXR1cm4gSWRlb2dyYXBoaWNUZXh0QmFz
ZWxpbmU7CisgICAgY2FzZSBDYW52YXNUZXh0QmFzZWxpbmU6OkJvdHRvbToKKyAgICAgICAgcmV0
dXJuIEJvdHRvbVRleHRCYXNlbGluZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gVG9wVGV4dEJhc2VsaW5lOworfQorCitDYW52YXNUZXh0QmFzZWxpbmUg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6dGV4dEJhc2VsaW5lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdG9DYW52YXNUZXh0QmFzZWxpbmUoc3RhdGUoKS50ZXh0QmFzZWxpbmUpOworfQor
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFRleHRCYXNlbGluZShDYW52
YXNUZXh0QmFzZWxpbmUgY2FudmFzVGV4dEJhc2VsaW5lKQoreworICAgIGF1dG8gdGV4dEJhc2Vs
aW5lID0gZnJvbUNhbnZhc1RleHRCYXNlbGluZShjYW52YXNUZXh0QmFzZWxpbmUpOworICAgIGlm
IChzdGF0ZSgpLnRleHRCYXNlbGluZSA9PSB0ZXh0QmFzZWxpbmUpCisgICAgICAgIHJldHVybjsK
KyAgICByZWFsaXplU2F2ZXMoKTsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS50ZXh0QmFzZWxpbmUg
PSB0ZXh0QmFzZWxpbmU7Cit9CisKK1N0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojpmb250KCkgY29uc3QKK3sKKyAgICBpZiAoIXN0YXRlKCkuZm9udC5yZWFsaXplZCgpKQorICAg
ICAgICByZXR1cm4gRGVmYXVsdEZvbnQ7CisKKyAgICBTdHJpbmdCdWlsZGVyIHNlcmlhbGl6ZWRG
b250OworICAgIGNvbnN0IGF1dG8mIGZvbnREZXNjcmlwdGlvbiA9IHN0YXRlKCkuZm9udC5mb250
RGVzY3JpcHRpb24oKTsKKworICAgIGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCisgICAg
ICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZExpdGVyYWwoIml0YWxpYyAiKTsKKyAgICBpZiAoZm9u
dERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKKyAg
ICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgic21hbGwtY2FwcyAiKTsKKworICAg
IHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJlcihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhl
bFNpemUoKSk7CisgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsg
KytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5k
KCcsJyk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhcHBlbmQgZmFtaWx5IGRpcmVj
dGx5IHRvIHNlcmlhbGl6ZWRGb250IHJhdGhlciB0aGFuIGJ1aWxkaW5nIGEgdGVtcG9yYXJ5IHN0
cmluZy4KKyAgICAgICAgU3RyaW5nIGZhbWlseSA9IGZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChp
KTsKKyAgICAgICAgaWYgKGZhbWlseS5zdGFydHNXaXRoKCItd2Via2l0LSIpKQorICAgICAgICAg
ICAgZmFtaWx5ID0gZmFtaWx5LnN1YnN0cmluZyg4KTsKKyAgICAgICAgaWYgKGZhbWlseS5jb250
YWlucygnICcpKQorICAgICAgICAgICAgZmFtaWx5ID0gbWFrZVN0cmluZygnIicsIGZhbWlseSwg
JyInKTsKKworICAgICAgICBzZXJpYWxpemVkRm9udC5hcHBlbmQoJyAnLCBmYW1pbHkpOworICAg
IH0KKworICAgIHJldHVybiBzZXJpYWxpemVkRm9udC50b1N0cmluZygpOworfQorCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQoreworICAgIGRyYXdU
ZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwgdHJ1ZSwgbWF4V2lkdGgpOworfQorCit2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit7CisgICAgZHJhd1Rl
eHRJbnRlcm5hbCh0ZXh0LCB4LCB5LCBmYWxzZSwgbWF4V2lkdGgpOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTcGFjZVRoYXROZWVkc1JlcGxhY2luZyhVQ2hhciBjKQoreworICAgIC8vIEFj
Y29yZGluZyB0byBzcGVjaWZpY2F0aW9uIGFsbCBzcGFjZSBjaGFyYWN0ZXJzIHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIDB4MDAyMCBzcGFjZSBjaGFyYWN0ZXIuCisgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZh
cy1lbGVtZW50Lmh0bWwjdGV4dC1wcmVwYXJhdGlvbi1hbGdvcml0aG0KKyAgICAvLyBUaGUgc3Bh
Y2UgY2hhcmFjdGVycyBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbiBhcmUgOiBVKzAwMjAsIFUr
MDAwOSwgVSswMDBBLCBVKzAwMEMsIGFuZCBVKzAwMEQuCisgICAgLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLW1pY3Jv
c3ludGF4ZXMuaHRtbCNzcGFjZS1jaGFyYWN0ZXIKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVy
bnMgdHJ1ZSBmb3IgMHgwMDBCIGFsc28sIHNvIHRoYXQgdGhpcyBpcyBiYWNrd2FyZCBjb21wYXRp
YmxlLgorICAgIC8vIE90aGVyd2lzZSwgdGhlIHRlc3QgTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UuaHRtbCB3aWxsIGZhaWwK
KyAgICByZXR1cm4gYyA9PSAweDAwMDkgfHwgYyA9PSAweDAwMEEgfHwgYyA9PSAweDAwMEIgfHwg
YyA9PSAweDAwMEMgfHwgYyA9PSAweDAwMEQ7Cit9CisKK3N0YXRpYyB2b2lkIG5vcm1hbGl6ZVNw
YWNlcyhTdHJpbmcmIHRleHQpCit7CisgICAgc2l6ZV90IGkgPSB0ZXh0LmZpbmQoaXNTcGFjZVRo
YXROZWVkc1JlcGxhY2luZyk7CisgICAgaWYgKGkgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgIFZlY3Rv
cjxVQ2hhcj4gY2hhclZlY3Rvcih0ZXh0TGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3KHRleHQpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGNoYXJWZWN0b3IuZGF0YSgpKTsKKworICAgIGNoYXJW
ZWN0b3JbaSsrXSA9ICcgJzsKKworICAgIGZvciAoOyBpIDwgdGV4dExlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpc1NwYWNlVGhhdE5lZWRzUmVwbGFjaW5nKGNoYXJWZWN0b3JbaV0pKQorICAg
ICAgICAgICAgY2hhclZlY3RvcltpXSA9ICcgJzsKKyAgICB9CisgICAgdGV4dCA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShjaGFyVmVjdG9yKSk7Cit9CisKK1JlZlB0cjxUZXh0TWV0cmljcz4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQoreworICAgIGlmIChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCp0aGlzKSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFi
bGVkKCkpIHsKKyAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEPigqdGhpcykuY2FudmFzKCk7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjYW52YXMuZG9jdW1lbnQoKSwgdGV4
dCk7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52YXNSZWFk
KGNhbnZhcy5kb2N1bWVudCgpKTsKKyAgICB9CisKKyAgICBSZWY8VGV4dE1ldHJpY3M+IG1ldHJp
Y3MgPSBUZXh0TWV0cmljczo6Y3JlYXRlKCk7CisKKyAgICBTdHJpbmcgbm9ybWFsaXplZFRleHQg
PSB0ZXh0OworICAgIG5vcm1hbGl6ZVNwYWNlcyhub3JtYWxpemVkVGV4dCk7CisKKyAgICBjb25z
dCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZTsKKyAgICBhdXRvIGRpcmVjdGlvbiA9IHRvVGV4
dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOworICAgIGJvb2wg
b3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gaXNPdmVycmlkZShjb21wdXRlZFN0eWxlLT51bmlj
b2RlQmlkaSgpKSA6IGZhbHNlOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0
LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVl
KTsKKyAgICBhdXRvJiBmb250ID0gZm9udFByb3h5KCk7CisgICAgaWYgKCFmb250LnJlYWxpemVk
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZm9u
dC5mb250TWV0cmljcygpOworCisgICAgR2x5cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93OworICAg
IGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7CisgICAgZmxvYXQgZm9udFdpZHRo
ID0gZm9udC53aWR0aCh0ZXh0UnVuLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgbWV0cmljcy0+c2V0
V2lkdGgoZm9udFdpZHRoKTsKKworICAgIEZsb2F0UG9pbnQgb2Zmc2V0ID0gdGV4dE9mZnNldChm
b250V2lkdGgsIGRpcmVjdGlvbik7CisKKyAgICBtZXRyaWNzLT5zZXRBY3R1YWxCb3VuZGluZ0Jv
eEFzY2VudChnbHlwaE92ZXJmbG93LnRvcCAtIG9mZnNldC55KCkpOworICAgIG1ldHJpY3MtPnNl
dEFjdHVhbEJvdW5kaW5nQm94RGVzY2VudChnbHlwaE92ZXJmbG93LmJvdHRvbSArIG9mZnNldC55
KCkpOworICAgIG1ldHJpY3MtPnNldEZvbnRCb3VuZGluZ0JveEFzY2VudChmb250TWV0cmljcy5h
c2NlbnQoKSAtIG9mZnNldC55KCkpOworICAgIG1ldHJpY3MtPnNldEZvbnRCb3VuZGluZ0JveERl
c2NlbnQoZm9udE1ldHJpY3MuZGVzY2VudCgpICsgb2Zmc2V0LnkoKSk7CisgICAgbWV0cmljcy0+
c2V0RW1IZWlnaHRBc2NlbnQoZm9udE1ldHJpY3MuYXNjZW50KCkgLSBvZmZzZXQueSgpKTsKKyAg
ICBtZXRyaWNzLT5zZXRFbUhlaWdodERlc2NlbnQoZm9udE1ldHJpY3MuZGVzY2VudCgpICsgb2Zm
c2V0LnkoKSk7CisgICAgbWV0cmljcy0+c2V0SGFuZ2luZ0Jhc2VsaW5lKGZvbnRNZXRyaWNzLmFz
Y2VudCgpIC0gb2Zmc2V0LnkoKSk7CisgICAgbWV0cmljcy0+c2V0QWxwaGFiZXRpY0Jhc2VsaW5l
KC1vZmZzZXQueSgpKTsKKyAgICBtZXRyaWNzLT5zZXRJZGVvZ3JhcGhpY0Jhc2VsaW5lKC1mb250
TWV0cmljcy5kZXNjZW50KCkgLSBvZmZzZXQueSgpKTsKKworICAgIG1ldHJpY3MtPnNldEFjdHVh
bEJvdW5kaW5nQm94TGVmdChnbHlwaE92ZXJmbG93LmxlZnQgLSBvZmZzZXQueCgpKTsKKyAgICBt
ZXRyaWNzLT5zZXRBY3R1YWxCb3VuZGluZ0JveFJpZ2h0KGZvbnRXaWR0aCArIGdseXBoT3ZlcmZs
b3cucmlnaHQgKyBvZmZzZXQueCgpKTsKKworICAgIHJldHVybiBtZXRyaWNzOworfQorCitpbmxp
bmUgVGV4dERpcmVjdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0b1RleHREaXJl
Y3Rpb24oRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqKiBjb21wdXRlZFN0
eWxlKSBjb25zdAoreworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IG51bGxwdHI7Cisg
ICAgaWYgKChjb21wdXRlZFN0eWxlIHx8IGRpcmVjdGlvbiA9PSBEaXJlY3Rpb246OkluaGVyaXQp
ICYmIGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKnRoaXMpKQorICAgICAgICBzdHlsZSA9
IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKnRoaXMpLmNhbnZhcygpLmNvbXB1
dGVkU3R5bGUoKTsKKyAgICBpZiAoY29tcHV0ZWRTdHlsZSkKKyAgICAgICAgKmNvbXB1dGVkU3R5
bGUgPSBzdHlsZTsKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgRGlyZWN0aW9u
OjpJbmhlcml0OgorICAgICAgICByZXR1cm4gc3R5bGUgPyBzdHlsZS0+ZGlyZWN0aW9uKCkgOiBU
ZXh0RGlyZWN0aW9uOjpMVFI7CisgICAgY2FzZSBEaXJlY3Rpb246OlJ0bDoKKyAgICAgICAgcmV0
dXJuIFRleHREaXJlY3Rpb246OlJUTDsKKyAgICBjYXNlIERpcmVjdGlvbjo6THRyOgorICAgICAg
ICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOworfQorCitGbG9hdFBvaW50IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRleHRPZmZzZXQoZmxvYXQgd2lkdGgsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGF1dG8mIGZvbnQgPSBmb250UHJveHkoKTsKKyAg
ICBpZiAoIWZvbnQucmVhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKKyAg
ICBhdXRvJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKKyAgICBGbG9hdFBvaW50
IG9mZnNldDsKKworICAgIHN3aXRjaCAoc3RhdGUoKS50ZXh0QmFzZWxpbmUpIHsKKyAgICBjYXNl
IFRvcFRleHRCYXNlbGluZToKKyAgICBjYXNlIEhhbmdpbmdUZXh0QmFzZWxpbmU6CisgICAgICAg
IG9mZnNldC5zZXRZKGZvbnRNZXRyaWNzLmFzY2VudCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBCb3R0b21UZXh0QmFzZWxpbmU6CisgICAgY2FzZSBJZGVvZ3JhcGhpY1RleHRCYXNlbGlu
ZToKKyAgICAgICAgb2Zmc2V0LnNldFkoLWZvbnRNZXRyaWNzLmRlc2NlbnQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWlkZGxlVGV4dEJhc2VsaW5lOgorICAgICAgICBvZmZzZXQuc2V0
WShmb250TWV0cmljcy5oZWlnaHQoKSAvIDIgLSBmb250TWV0cmljcy5kZXNjZW50KCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFscGhhYmV0aWNUZXh0QmFzZWxpbmU6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgYm9vbCBpc1JUTCA9IGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpSVEw7CisgICAgYXV0byBhbGlnbiA9IHN0YXRlKCkudGV4dEFsaWdu
OworICAgIGlmIChhbGlnbiA9PSBTdGFydFRleHRBbGlnbikKKyAgICAgICAgYWxpZ24gPSBpc1JU
TCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKKyAgICBlbHNlIGlmIChhbGlnbiA9
PSBFbmRUZXh0QWxpZ24pCisgICAgICAgIGFsaWduID0gaXNSVEwgPyBMZWZ0VGV4dEFsaWduIDog
UmlnaHRUZXh0QWxpZ247CisKKyAgICBzd2l0Y2ggKGFsaWduKSB7CisgICAgY2FzZSBDZW50ZXJU
ZXh0QWxpZ246CisgICAgICAgIG9mZnNldC5zZXRYKC13aWR0aCAvIDIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJpZ2h0VGV4dEFsaWduOgorICAgICAgICBvZmZzZXQuc2V0WCgtd2lkdGgp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIG9mZnNldDsKK30KKworQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRpcmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGlzPENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRD4oKnRoaXMpICYmIHN0YXRlKCkuZGlyZWN0aW9uID09IERpcmVjdGlvbjo6
SW5oZXJpdCkKKyAgICAgICAgZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqdGhp
cykuY2FudmFzKCkuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgcmV0dXJu
IHRvVGV4dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gVGV4dERpcmVjdGlvbjo6UlRM
ID8gQ2FudmFzRGlyZWN0aW9uOjpSdGwgOiBDYW52YXNEaXJlY3Rpb246Okx0cjsKK30KKwordm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXREaXJlY3Rpb24oQ2FudmFzRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoc3RhdGUoKS5kaXJlY3Rpb24gPT0gZGlyZWN0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICByZWFsaXplU2F2ZXMoKTsKKyAgICBtb2RpZmlhYmxl
U3RhdGUoKS5kaXJlY3Rpb24gPSBkaXJlY3Rpb247Cit9CisKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQoreworICAg
IGlmIChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCp0aGlzKSAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCisg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52YXNXcml0ZU9yTWVh
c3VyZShkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCp0aGlzKS5jYW52YXMoKS5k
b2N1bWVudCgpLCB0ZXh0KTsKKworICAgIGF1dG8mIGZvbnQgPSBmb250UHJveHkoKTsKKyAgICBp
ZiAoIWZvbnQucmVhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IGF1dG8mIGZv
bnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOworCisgICAgYXV0byogYyA9IGRyYXdpbmdD
b250ZXh0KCk7CisgICAgaWYgKCFjKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzdGF0ZSgp
Lmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUoeCkgfCAhc3RkOjppc2Zpbml0ZSh5KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChtYXhXaWR0aCAmJiAoIXN0ZDo6aXNmaW5pdGUobWF4V2lkdGgudmFsdWUoKSkgfHwgbWF4V2lk
dGgudmFsdWUoKSA8PSAwKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgZ3JhZGllbnQg
c2l6ZSBpcyB6ZXJvLCB0aGVuIHBhaW50IG5vdGhpbmcuCisgICAgYXV0byBncmFkaWVudCA9IGMt
PnN0cm9rZUdyYWRpZW50KCk7CisgICAgaWYgKCFmaWxsICYmIGdyYWRpZW50ICYmIGdyYWRpZW50
LT5pc1plcm9TaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdyYWRpZW50ID0gYy0+Zmls
bEdyYWRpZW50KCk7CisgICAgaWYgKGZpbGwgJiYgZ3JhZGllbnQgJiYgZ3JhZGllbnQtPmlzWmVy
b1NpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIG5vcm1hbGl6ZWRUZXh0ID0g
dGV4dDsKKyAgICBub3JtYWxpemVTcGFjZXMobm9ybWFsaXplZFRleHQpOworCisgICAgLy8gRklY
TUU6IE5lZWQgdG8gdHVybiBvZmYgZm9udCBzbW9vdGhpbmcuCisKKyAgICBjb25zdCBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZTsKKyAgICBhdXRvIGRpcmVjdGlvbiA9IHRvVGV4dERpcmVjdGlv
bihzdGF0ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOworICAgIGJvb2wgb3ZlcnJpZGUg
PSBjb21wdXRlZFN0eWxlID8gaXNPdmVycmlkZShjb21wdXRlZFN0eWxlLT51bmljb2RlQmlkaSgp
KSA6IGZhbHNlOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKKyAgICBm
bG9hdCBmb250V2lkdGggPSBmb250LndpZHRoKHRleHRSdW4pOworICAgIGJvb2wgdXNlTWF4V2lk
dGggPSBtYXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgpIDwgZm9udFdpZHRoOworICAgIGZsb2F0
IHdpZHRoID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52YWx1ZSgpIDogZm9udFdpZHRoOworICAg
IEZsb2F0UG9pbnQgbG9jYXRpb24oeCwgeSk7CisgICAgbG9jYXRpb24gKz0gdGV4dE9mZnNldCh3
aWR0aCwgZGlyZWN0aW9uKTsKKworICAgIC8vIFRoZSBzbG9wIGJ1aWx0IGluIHRvIHRoaXMgbWFz
ayByZWN0IG1hdGNoZXMgdGhlIGhldXJpc3RpYyB1c2VkIGluIEZvbnRDR1dpbi5jcHAgZm9yIEdE
SSB0ZXh0LgorICAgIEZsb2F0UmVjdCB0ZXh0UmVjdCA9IEZsb2F0UmVjdChsb2NhdGlvbi54KCkg
LSBmb250TWV0cmljcy5oZWlnaHQoKSAvIDIsIGxvY2F0aW9uLnkoKSAtIGZvbnRNZXRyaWNzLmFz
Y2VudCgpIC0gZm9udE1ldHJpY3MubGluZUdhcCgpLAorICAgICAgICB3aWR0aCArIGZvbnRNZXRy
aWNzLmhlaWdodCgpLCBmb250TWV0cmljcy5saW5lU3BhY2luZygpKTsKKyAgICBpZiAoIWZpbGwp
CisgICAgICAgIGluZmxhdGVTdHJva2VSZWN0KHRleHRSZWN0KTsKKworI2lmIFVTRShDRykKKyAg
ICBjb25zdCBDYW52YXNTdHlsZSYgZHJhd1N0eWxlID0gZmlsbCA/IHN0YXRlKCkuZmlsbFN0eWxl
IDogc3RhdGUoKS5zdHJva2VTdHlsZTsKKyAgICBpZiAoZHJhd1N0eWxlLmNhbnZhc0dyYWRpZW50
KCkgfHwgZHJhd1N0eWxlLmNhbnZhc1BhdHRlcm4oKSkgeworICAgICAgICBJbnRSZWN0IG1hc2tS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0UmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhIHNoYWRvdywgd2UgbmVlZCB0byBkcmF3IGl0IGJlZm9yZSB0aGUgbWFzayBvcGVyYXRpb24u
CisgICAgICAgIC8vIEZvbGxvdyBhIHByb2NlZHVyZSBzaW1pbGFyIHRvIHBhaW50VGV4dFdpdGhT
aGFkb3dzIGluIFRleHRQYWludGVyLgorCisgICAgICAgIGlmIChzaG91bGREcmF3U2hhZG93cygp
KSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMp
OworCisgICAgICAgICAgICBGbG9hdFNpemUgb2Zmc2V0KDAsIDIgKiBtYXNrUmVjdC5oZWlnaHQo
KSk7CisKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgICAgICAgICBm
bG9hdCBzaGFkb3dSYWRpdXM7CisgICAgICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKKyAgICAg
ICAgICAgIGMtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29s
b3IpOworCisgICAgICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChtYXNrUmVjdCk7CisgICAg
ICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUoc2hhZG93UmFkaXVzICogMS40KTsKKyAgICAgICAg
ICAgIHNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQgKiAtMSk7CisgICAgICAgICAgICBjLT5j
bGlwKHNoYWRvd1JlY3QpOworCisgICAgICAgICAgICBzaGFkb3dPZmZzZXQgKz0gb2Zmc2V0Owor
CisgICAgICAgICAgICBjLT5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRp
dXMsIHNoYWRvd0NvbG9yKTsKKworICAgICAgICAgICAgaWYgKGZpbGwpCisgICAgICAgICAgICAg
ICAgYy0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKKworICAgICAgICAg
ICAgZm9udC5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250
Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSwgQ29sb3JTcGFjZVNSR0IsICpjKTsKKyAgICAgICAgaWYgKCFtYXNrSW1h
Z2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgbWFza0ltYWdlQ29udGV4
dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOworCisgICAgICAgIGlmIChmaWxsKQorICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjayk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVz
cyhjLT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgICAgIH0KKworICAgICAgICBtYXNrSW1hZ2VD
b250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVT
dHJva2UpOworCisgICAgICAgIGlmICh1c2VNYXhXaWR0aCkgeworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21wb3NpdGluZyBv
cGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxsIHdvcmsuCisgICAgICAgICAgICBtYXNr
SW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZv
bnRXaWR0aCkgOiAwKSwgMSkpOworICAgICAgICAgICAgZm9udC5kcmF3QmlkaVRleHQobWFza0lt
YWdlQ29udGV4dCwgdGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZh
bGxiYWNrSWZGb250Tm90UmVhZHkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICAg
ICAgZm9udC5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgbG9jYXRpb24s
IEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgfQorCisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CisgICAgICAg
IGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsKKyAgICAgICAgZHJh
d1N0eWxlLmFwcGx5RmlsbENvbG9yKCpjKTsKKyAgICAgICAgYy0+ZmlsbFJlY3QobWFza1JlY3Qp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBjLT5zZXRUZXh0RHJhd2lu
Z01vZGUoZmlsbCA/IFRleHRNb2RlRmlsbCA6IFRleHRNb2RlU3Ryb2tlKTsKKworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CisgICAgaWYgKHVzZU1heFdpZHRo
KSB7CisgICAgICAgIGMtPnRyYW5zbGF0ZShsb2NhdGlvbik7CisgICAgICAgIC8vIFdlIGRyYXcg
d2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21wb3NpdGluZyBvcGVyYXRpb25zIChlZywgYSAiY29w
eSIgb3ApIHN0aWxsIHdvcmsuCisgICAgICAgIGMtPnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRo
ID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOworICAgICAgICBsb2NhdGlvbiA9
IEZsb2F0UG9pbnQoKTsKKyAgICB9CisKKyAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9k
ZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKKyAgICAgICAgYmVnaW5Db21wb3NpdGVMYXll
cigpOworICAgICAgICBmb250LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24sIEZv
bnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgZW5kQ29tcG9z
aXRlTGF5ZXIoKTsKKyAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOworICAgIH0gZWxzZSBp
ZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgeworICAgICAgICBj
bGVhckNhbnZhcygpOworICAgICAgICBmb250LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9j
YXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvbnQuZHJhd0Jp
ZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZG
b250Tm90UmVhZHkpOworICAgICAgICBkaWREcmF3KHRleHRSZWN0KTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCA2MzVmNjliZDdhNWU3
NmFkZjEwYzVhM2JmZWNjZWI3YmVlMjgxZWU2Li4yNWVkOTQ3ZjQxYWYzZmY0OTU2NWU2ZDc1YTU1
OThiMmJlMjAwYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBAIC0yMTIsNiArMjEyLDIyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhdGgoUGF0aDJEJik7CiAgICAgUmVmPFBhdGgyRD4gZ2V0UGF0
aCgpIGNvbnN0OwogCisgICAgQ2FudmFzVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0OworICAg
IHZvaWQgc2V0VGV4dEFsaWduKENhbnZhc1RleHRBbGlnbik7CisKKyAgICBDYW52YXNUZXh0QmFz
ZWxpbmUgdGV4dEJhc2VsaW5lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUZXh0QmFzZWxpbmUoQ2Fu
dmFzVGV4dEJhc2VsaW5lKTsKKworICAgIFN0cmluZyBmb250KCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdm9pZCBmaWxsVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhX
aWR0aCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpu
dWxsb3B0KTsKKyAgICBSZWZQdHI8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCk7CisKKyAgICBDYW52YXNEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCBzZXREaXJlY3Rpb24oQ2FudmFzRGlyZWN0aW9uKTsKKwogICAgIGJvb2wgdXNlc0Rpc3Bs
YXlMaXN0RHJhd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZzsg
fTsKICAgICB2b2lkIHNldFVzZXNEaXNwbGF5TGlzdERyYXdpbmcoYm9vbCBmbGFnKSB7IG1fdXNl
c0Rpc3BsYXlMaXN0RHJhd2luZyA9IGZsYWc7IH07CiAKQEAgLTI5Niw2ICszMTIsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIENhbnZhc0RpZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAgICB9
OwogCisgICAgdmlydHVhbCBjb25zdCBGb250UHJveHkmIGZvbnRQcm94eSgpID0gMDsKKwogICAg
IGJvb2wgaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShDb21wb3NpdGVPcGVyYXRvcik7CiAKICAg
ICBTdGF0ZSYgbW9kaWZpYWJsZVN0YXRlKCkgeyBBU1NFUlQoIW1fdW5yZWFsaXplZFNhdmVDb3Vu
dCB8fCBtX3N0YXRlU3RhY2suc2l6ZSgpID49IE1heFNhdmVDb3VudCk7IHJldHVybiBtX3N0YXRl
U3RhY2subGFzdCgpOyB9CkBAIC0zNzgsNiArMzk2LDEyIEBAIHByb3RlY3RlZDoKICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAg
IEZsb2F0UG9pbnQgdGV4dE9mZnNldChmbG9hdCB3aWR0aCwgVGV4dERpcmVjdGlvbik7CisKKyAg
ICBUZXh0RGlyZWN0aW9uIHRvVGV4dERpcmVjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpEaXJlY3Rpb24sIGNvbnN0IFJlbmRlclN0eWxlKiogY29tcHV0ZWRTdHlsZSA9IG51bGxw
dHIpIGNvbnN0OworCisgICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgg
PSBXVEY6Om51bGxvcHQpOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heFNhdmVDb3Vu
dCA9IDEwMjQgKiAxNjsKICAgICBWZWN0b3I8U3RhdGUsIDE+IG1fc3RhdGVTdGFjazsKICAgICB1
bnNpZ25lZCBtX3VucmVhbGl6ZWRTYXZlQ291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNUZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1RleHQuaWRsCmluZGV4IDg2NGFlZTEyYjY4NzAxOGU2YzAxNmNkNDRhZmEy
MTZjOTNmMGZjMTguLjE4NmYyYTAyNDYwYjdlZTYzMmNjNTdhOWY4N2EyNWRlNDdjNmMxNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1RleHQuaWRsCkBAIC0zMiw1ICszMiw1
IEBACiAgICAgLy8gdGV4dCAoc2VlIGFsc28gdGhlIENhbnZhc1BhdGhEcmF3aW5nU3R5bGVzIGFu
ZCBDYW52YXNUZXh0RHJhd2luZ1N0eWxlcyBpbnRlcmZhY2VzKQogICAgIHZvaWQgZmlsbFRleHQo
RE9NU3RyaW5nIHRleHQsIHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
eSwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IG1heFdpZHRoKTsKICAgICB2b2lkIHN0cm9r
ZVRleHQoRE9NU3RyaW5nIHRleHQsIHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IG1heFdpZHRoKTsKLSAgICBUZXh0
TWV0cmljcyBtZWFzdXJlVGV4dChET01TdHJpbmcgdGV4dCk7CisgICAgVGV4dE1ldHJpY3M/IG1l
YXN1cmVUZXh0KERPTVN0cmluZyB0ZXh0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAppbmRleCA0NzQ2ZDcyNGJiMDFjZjU1NjI1ZDMzOTRhNGRmMWM5ZTNlN2Q3YTI4Li5jZjk3
ZjlmOTI5NzQ1ZTFiMDQwODRkMmE3MTJlOTdkY2ZjYzAxMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAKKyNpbmNsdWRl
ICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNSAr
NTAsNzAgQEAgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpPZmZzY3JlZW5DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQoQ2FudmFzQmFzZSYKIAogT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjp+T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKCkgPSBkZWZh
dWx0OwogCit2b2lkIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChj
b25zdCBTdHJpbmcmIG5ld0ZvbnQpCit7CisgICAgaWYgKG5ld0ZvbnQgPT0gc3RhdGUoKS51bnBh
cnNlZEZvbnQgJiYgc3RhdGUoKS5mb250LnJlYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gcGFyc2VkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsK
KyAgICBDU1NQYXJzZXI6OnBhcnNlVmFsdWUocGFyc2VkU3R5bGUsIENTU1Byb3BlcnR5Rm9udCwg
bmV3Rm9udCwgdHJ1ZSwgc3RyaWN0VG9DU1NQYXJzZXJNb2RlKCFtX3VzZXNDU1NDb21wYXRpYmls
aXR5UGFyc2VNb2RlKSk7CisgICAgaWYgKHBhcnNlZFN0eWxlLT5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFN0cmluZyBmb250VmFsdWUgPSBwYXJzZWRTdHlsZS0+Z2V0UHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUZvbnQpOworCisgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly9s
aXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy1odG1sLzIwMDlKdWwvMDk0Ny5odG1s
LAorICAgIC8vIHRoZSAiaW5oZXJpdCIgYW5kICJpbml0aWFsIiB2YWx1ZXMgbXVzdCBiZSBpZ25v
cmVkLgorICAgIGlmIChmb250VmFsdWUgPT0gImluaGVyaXQiIHx8IGZvbnRWYWx1ZSA9PSAiaW5p
dGlhbCIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBwYXJzZSBzdWNjZWVkZWQuCisg
ICAgU3RyaW5nIG5ld0ZvbnRTYWZlQ29weShuZXdGb250KTsgLy8gQ3JlYXRlIGEgc3RyaW5nIGNv
cHkgc2luY2UgbmV3Rm9udCBjYW4gYmUgZGVsZXRlZCBpbnNpZGUgcmVhbGl6ZVNhdmVzLgorICAg
IHJlYWxpemVTYXZlcygpOworICAgIG1vZGlmaWFibGVTdGF0ZSgpLnVucGFyc2VkRm9udCA9IG5l
d0ZvbnRTYWZlQ29weTsKKworICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlKCkuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghaXM8RG9jdW1lbnQ+KCpjb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gTWFwIHRoZSA8Y2FudmFzPiBmb250IGludG8gdGhlIHRl
eHQgc3R5bGUuIElmIHRoZSBmb250IHVzZXMga2V5d29yZHMgbGlrZSBsYXJnZXIvc21hbGxlciwg
dGhlc2Ugd2lsbCB3b3JrCisgICAgLy8gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KKyAgICBhdXRv
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOworCisgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKKworICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZGVmYXVsdEZvbnREZXNjcmlwdGlvbjsKKyAgICBkZWZhdWx0Rm9udERlc2Ny
aXB0aW9uLnNldE9uZUZhbWlseShEZWZhdWx0Rm9udEZhbWlseSk7CisgICAgZGVmYXVsdEZvbnRE
ZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKERlZmF1bHRGb250U2l6ZSk7CisgICAgZGVmYXVs
dEZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoRGVmYXVsdEZvbnRTaXplKTsKKworICAg
IG5ld1N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZWZhdWx0Rm9udERlc2NyaXB0
aW9uKSk7CisKKyAgICBuZXdTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJmRvY3VtZW50LmZv
bnRTZWxlY3RvcigpKTsKKworICAgIC8vIE5vdyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgbG9uZ2hh
bmRzIGludG8gdGhlIHN0eWxlLgorICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIgPSBk
b2N1bWVudC51c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOworICAgIHN0eWxlUmVz
b2x2ZXIuYXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBwYXJzZWRT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpLmdldCgpLCBX
VEZNb3ZlKG5ld1N0eWxlKSk7CisgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9DdXJy
ZW50U3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKS5nZXQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5h
cHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIHBh
cnNlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBz
KS5nZXQoKSk7CisgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCBwYXJzZWRTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQpLmdldCgpKTsKKworICAgIC8vIEFzIGRlc2NyaWJlZCBpbiBC
VUc2NjI5MSwgc2V0dGluZyBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0IG9uIGEgZm9udCBtYXkg
ZW50YWlsIGEgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhEb3VibGUgY2FsbCwKKyAg
ICAvLyB3aGljaCBhc3N1bWVzIHRoZSBmb250TWV0cmljcyBhcmUgYXZhaWxhYmxlIGZvciB0aGUg
YWZmZWN0ZWQgZm9udCwgb3RoZXJ3aXNlIGEgY3Jhc2ggb2NjdXJzIChzZWUgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTYxMjIpLgorICAgIC8vIFRoZSB1cGRhdGVGb250KCkgY2Fs
bHMgYmVsb3cgdXBkYXRlIHRoZSBmb250TWV0cmljcyBhbmQgZW5zdXJlIHRoZSBwcm9wZXIgc2V0
dGluZyBvZiBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0LgorICAgIHN0eWxlUmVzb2x2ZXIudXBk
YXRlRm9udCgpOworICAgIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxl
KENTU1Byb3BlcnR5Rm9udFNpemUsIHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5Rm9udFNpemUpLmdldCgpKTsKKyAgICBzdHlsZVJlc29sdmVyLnVwZGF0ZUZvbnQo
KTsKKyAgICBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQsIHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5TGluZUhlaWdodCkuZ2V0KCkpOworCisgICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0
aWFsaXplKGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqc3R5bGVSZXNvbHZlci5zdHlsZSgpKTsK
K30KKworYXV0byBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnRQcm94eSgp
IC0+IGNvbnN0IEZvbnRQcm94eSYgeworICAgIGlmICghc3RhdGUoKS5mb250LnJlYWxpemVkKCkp
CisgICAgICAgIHNldEZvbnQoc3RhdGUoKS51bnBhcnNlZEZvbnQpOworICAgIHJldHVybiBzdGF0
ZSgpLmZvbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaAppbmRleCA4YmEwZjczY2EzOGI0MWU5MDljMTJmYzMxMWU3NWU4NmEwY2Y0YWFm
Li43MzgyYzUwNTU4MDhkNjNhODhlNmIzNmUzOTEwN2ZkZThhOWM5YzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtNDAsNiArNDAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNP
ZmZzY3JlZW4yZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIE9mZnNj
cmVlbkNhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8T2Zmc2NyZWVuQ2Fu
dmFzPihjYW52YXNCYXNlKCkpOyB9CisKKyAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBjb25zdCBGb250UHJveHkmIGZvbnRQcm94eSgpIGZp
bmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwKaW5kZXggMDZkZDU3ZjUxZjI2NmYxM2QwODIxZGI4YWNkMjA3YWZiMTc4MDg5Zi4u
OTA4ZGM5Y2I1OGIzYTVhY2MwNzVhMTc4NDA4NjQzYWFmM2JmN2QxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaWRsCkBAIC01MCw3ICs1MCw5IEBAIE9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1NoYWRvd1N0eWxlczsKIE9mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0ZpbHRlcnM7CiBPZmZzY3Jl
ZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNSZWN0OwogT2Zmc2Ny
ZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd1BhdGg7CitP
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNUZXh0Owog
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd0lt
YWdlOwogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFz
SW1hZ2VEYXRhOwogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMg
Q2FudmFzUGF0aERyYXdpbmdTdHlsZXM7CitPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQgaW1wbGVtZW50cyBDYW52YXNUZXh0RHJhd2luZ1N0eWxlczsKIE9mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA2NTll
ZmEyZmZjYTFhNjhiNzJlNGI1MWJkOGQzOGQ5NjE5N2U3MjAzLi4zZTVhODI5MDBiYjU0YmZjMzhl
Zjk1NjllMTEwZmU0NjJjY2IzZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJik7
CisKKyAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9OworCisgICAgY29u
c3QgRm9udFByb3h5JiBmb250UHJveHkoKSBmaW5hbCB7IHJldHVybiBzdGF0ZSgpLmZvbnQ7IH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCBjOTU3N2YzZWNmYjg0MDNmMWM2MjYyNDljYTZkNGI4NzZjNjlkMzFhLi5kODZiMjgz
ZGIxYmI3Zjg5ODMyMjZiZTAzMmI2MWI3MjRjY2I3MmMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxOS0xMC0xMCAgQ2hyaXMgTG9yZCAgPGNsb3Jk
QGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92ZSBmb250LXJlbmRlcmluZyBjb2RlIGZyb20gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UgdG8g
YmUgdXNlZCB3aXRoIE9mZnNjcmVlbkNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuYWxpZ24uZGVmYXVsdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmFsaWduLmRlZmF1
bHQud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYWxpZ24uaW52YWxpZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0
LmFsaWduLmludmFsaWQud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYmFzZWxpbmUuZGVmYXVsdC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52
YXMvdGV4dC8yZC50ZXh0LmJhc2VsaW5lLmRlZmF1bHQud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQu
YmFzZWxpbmUuaW52YWxpZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmJhc2VsaW5lLmludmFsaWQud29ya2Vy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNh
bnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLmJhc2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguTmFOLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxs
Lm1heFdpZHRoLk5hTi53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
bGFyZ2UtbWFudWFsLndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5u
ZWdhdGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5uZWdhdGl2ZS53b3Jr
ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguc21hbGwtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQu
dGV4dC5kcmF3LmZpbGwubWF4V2lkdGguc21hbGwud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJh
dy5maWxsLm1heFdpZHRoLnplcm8tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
emVyby53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLW1hbnVhbC53b3JrZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwudW5hZmZlY3RlZC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRy
YXcuZmlsbC51bmFmZmVjdGVkLndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZm9udGZhY2Uu
cmVwZWF0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5mb250ZmFjZS5yZXBlYXQud29ya2VyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90
ZXh0LzJkLnRleHQuZHJhdy5rZXJuLmNvbnNpc3RlbnQtbWFudWFsLndvcmtlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5k
cmF3LnN0cm9rZS51bmFmZmVjdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UudW5hZmZl
Y3RlZC53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LmRlZmF1bHQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4
dC5mb250LmRlZmF1bHQud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5iYXNpYy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52
YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2UuYmFzaWMud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQu
Zm9udC5wYXJzZS5jb21wbGV4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lndv
cmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0
LmZvbnQucGFyc2UuaW52YWxpZC53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLnN5
c3RlbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLndvcmtlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmZvbnQucGFyc2UudGlueS53b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEwLTEw
ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgW1Ry
YW5zZmVyYWJsZV0gcHJvcGVydHkgb2YgT2Zmc2NyZWVuQ2FudmFzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGV4dC8yZC50ZXh0LmFsaWduLmRlZmF1bHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4
dC5hbGlnbi5kZWZhdWx0LWV4cGVjdGVkLnR4dAppbmRleCA3OTEyNWM1NWExYjgwNWY2MmYwYjFl
MGI4NGQ0NjlhMTI2YWE4MDRkLi4yZmY5NTBiY2I4ODEzNTUwNjBmM2U4NWU3NDJlMGE5NzI5YzIy
MzlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmFsaWduLmRlZmF1bHQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYWxpZ24uZGVmYXVsdC1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACiAyZC50ZXh0LmFsaWduLmRlZmF1bHQKIAogCi1GQUlMIE9mZnNjcmVlbkNh
bnZhcyB0ZXN0OiAyZC50ZXh0LmFsaWduLmRlZmF1bHQgYXNzZXJ0X2VxdWFsczogY3R4LnRleHRB
bGlnbiA9PT0gJ3N0YXJ0JyAoZ290IFt1bmRlZmluZWRdLCBleHBlY3RlZCBzdGFydFtzdHJpbmdd
KSBleHBlY3RlZCAoc3RyaW5nKSAic3RhcnQiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVk
CitQQVNTIE9mZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmFsaWduLmRlZmF1bHQgCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYWxpZ24uZGVmYXVsdC53b3JrZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RleHQvMmQudGV4dC5hbGlnbi5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50eHQK
aW5kZXggMDlmNDY0ZjIxNmI4MWFlZmJhMzlhZGNiZDBhYTE3ZWU1NTVmZWI4NC4uYjdkOTQ5ZjYw
YWE2MWJmODM3NmIzOGRlMmI4NDUxZjI1YjdkZmZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQu
dGV4dC5hbGlnbi5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQu
dGV4dC5hbGlnbi5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAK
LUZBSUwgMmQgYXNzZXJ0X2VxdWFsczogY3R4LnRleHRBbGlnbiA9PT0gJ3N0YXJ0JyAoZ290IFt1
bmRlZmluZWRdLCBleHBlY3RlZCBzdGFydFtzdHJpbmddKSBleHBlY3RlZCAoc3RyaW5nKSAic3Rh
cnQiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitQQVNTIDJkIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGV4dC8yZC50ZXh0LmFsaWduLmludmFsaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5hbGlnbi5pbnZhbGlkLWV4cGVjdGVkLnR4dAppbmRleCBlZjY4NGQyMDkzMGZkZWEw
Y2E0NGVkMzM2YmExYThhZWYwNWUwM2E0Li4xMWViZjBmZWU2YWYyZmUyMjU0MjhiMWIwMDc3MzQ4
MWE1ZDY2NDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmFsaWduLmludmFsaWQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYWxpZ24uaW52YWxpZC1leHBlY3RlZC50
eHQKQEAgLTEsNSArMSw1IEBACiAyZC50ZXh0LmFsaWduLmludmFsaWQKIAogCi1GQUlMIE9mZnNj
cmVlbkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmFsaWduLmludmFsaWQgYXNzZXJ0X2VxdWFsczogY3R4
LnRleHRBbGlnbiA9PT0gJ3N0YXJ0JyAoZ290IGJvZ3VzW3N0cmluZ10sIGV4cGVjdGVkIHN0YXJ0
W3N0cmluZ10pIGV4cGVjdGVkICJzdGFydCIgYnV0IGdvdCAiYm9ndXMiCitQQVNTIE9mZnNjcmVl
bkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmFsaWduLmludmFsaWQgCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90
ZXh0LzJkLnRleHQuYWxpZ24uaW52YWxpZC53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5hbGlnbi5pbnZhbGlkLndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNGU3ZjQzMDAw
ZDg4YTRiY2RhNjM2NzAzODc5YjFiMjlmMTg4NTRjYy4uYjdkOTQ5ZjYwYWE2MWJmODM3NmIzOGRl
MmI4NDUxZjI1YjdkZmZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5hbGlnbi5pbnZh
bGlkLndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5hbGlnbi5pbnZh
bGlkLndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgMmQgYXNzZXJ0
X2VxdWFsczogY3R4LnRleHRBbGlnbiA9PT0gJ3N0YXJ0JyAoZ290IGJvZ3VzW3N0cmluZ10sIGV4
cGVjdGVkIHN0YXJ0W3N0cmluZ10pIGV4cGVjdGVkICJzdGFydCIgYnV0IGdvdCAiYm9ndXMiCitQ
QVNTIDJkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmJhc2VsaW5lLmRlZmF1bHQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5iYXNlbGluZS5kZWZhdWx0LWV4cGVjdGVk
LnR4dAppbmRleCA4ZGRhODEzOWM4ZTQ3MzE2OWNjYjcxNTM3MGM0MGU1MGQ3ZWQ0ODA4Li45MjE2
YWRlM2I5ODNhNDY2NzA3MWIxZjM2NzA0Y2I4OTQzMWI4NTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4
dC8yZC50ZXh0LmJhc2VsaW5lLmRlZmF1bHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJk
LnRleHQuYmFzZWxpbmUuZGVmYXVsdC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAyZC50
ZXh0LmJhc2VsaW5lLmRlZmF1bHQKIAogCi1GQUlMIE9mZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50
ZXh0LmJhc2VsaW5lLmRlZmF1bHQgYXNzZXJ0X2VxdWFsczogY3R4LnRleHRCYXNlbGluZSA9PT0g
J2FscGhhYmV0aWMnIChnb3QgW3VuZGVmaW5lZF0sIGV4cGVjdGVkIGFscGhhYmV0aWNbc3RyaW5n
XSkgZXhwZWN0ZWQgKHN0cmluZykgImFscGhhYmV0aWMiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5k
ZWZpbmVkCitQQVNTIE9mZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmJhc2VsaW5lLmRlZmF1
bHQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYmFzZWxpbmUuZGVmYXVsdC53b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5iYXNlbGluZS5kZWZhdWx0Lndvcmtl
ci1leHBlY3RlZC50eHQKaW5kZXggZGRkOWYwNTAxNDUwYmIxYmQzM2Q3MDk0Y2JiNDUyZTJhNzVi
Yjg4Ny4uYjdkOTQ5ZjYwYWE2MWJmODM3NmIzOGRlMmI4NDUxZjI1YjdkZmZkNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5iYXNlbGluZS5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RleHQvMmQudGV4dC5iYXNlbGluZS5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50
eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgMmQgYXNzZXJ0X2VxdWFsczogY3R4LnRleHRCYXNl
bGluZSA9PT0gJ2FscGhhYmV0aWMnIChnb3QgW3VuZGVmaW5lZF0sIGV4cGVjdGVkIGFscGhhYmV0
aWNbc3RyaW5nXSkgZXhwZWN0ZWQgKHN0cmluZykgImFscGhhYmV0aWMiIGJ1dCBnb3QgKHVuZGVm
aW5lZCkgdW5kZWZpbmVkCitQQVNTIDJkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0
LmJhc2VsaW5lLmludmFsaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5iYXNlbGlu
ZS5pbnZhbGlkLWV4cGVjdGVkLnR4dAppbmRleCBlNjhiYzczMmFiNWY5ZDY3NGU3YzYyYjYxYzBk
MjhiZTM3YTQ2OWM1Li5jMjBhZWQwN2Y0OGU4ZWY4ODA3YjkyMzMxZjNjZDQwMDQzM2ViYTNjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmJhc2VsaW5lLmludmFsaWQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuYmFzZWxpbmUuaW52YWxpZC1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACiAyZC50ZXh0LmJhc2VsaW5lLmludmFsaWQKIAogCi1GQUlMIE9mZnNjcmVl
bkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmJhc2VsaW5lLmludmFsaWQgYXNzZXJ0X2VxdWFsczogY3R4
LnRleHRCYXNlbGluZSA9PT0gJ3RvcCcgKGdvdCBib2d1c1tzdHJpbmddLCBleHBlY3RlZCB0b3Bb
c3RyaW5nXSkgZXhwZWN0ZWQgInRvcCIgYnV0IGdvdCAiYm9ndXMiCitQQVNTIE9mZnNjcmVlbkNh
bnZhcyB0ZXN0OiAyZC50ZXh0LmJhc2VsaW5lLmludmFsaWQgCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90
ZXh0LzJkLnRleHQuYmFzZWxpbmUuaW52YWxpZC53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5iYXNlbGluZS5pbnZhbGlkLndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggYWZl
MTRiZWQxN2M0MjM3OGNlYTQwYTBkODcyMWQyZjA3ZGE0ZjA5MC4uYjdkOTQ5ZjYwYWE2MWJmODM3
NmIzOGRlMmI4NDUxZjI1YjdkZmZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5iYXNl
bGluZS5pbnZhbGlkLndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5i
YXNlbGluZS5pbnZhbGlkLndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZB
SUwgMmQgYXNzZXJ0X2VxdWFsczogY3R4LnRleHRCYXNlbGluZSA9PT0gJ3RvcCcgKGdvdCBib2d1
c1tzdHJpbmddLCBleHBlY3RlZCB0b3Bbc3RyaW5nXSkgZXhwZWN0ZWQgInRvcCIgYnV0IGdvdCAi
Ym9ndXMiCitQQVNTIDJkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmls
bC5iYXNpYy1tYW51YWwud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJh
dy5maWxsLmJhc2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IGRkOTZjZGRiYjU2
MGNhN2E4MGZkNTRlMzM2NDYzYzQ0NmQ2Y2M2NTQuLjA4ODk1N2UzOGRjMWFjNGU0NjI1YzVlYTM4
M2EyNWUxMzI2NWY5ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLmJh
c2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJh
dy5maWxsLmJhc2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
Ci1GQUlMIGZpbGxUZXh0IGRyYXdzIGZpbGxlZCB0ZXh0IGN0eC5maWxsVGV4dCBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICdjdHguZmlsbFRleHQoJ1BBU1MnLCA1LCAzNSknLCAnY3R4LmZpbGxUZXh0
JyBpcyB1bmRlZmluZWQpCitQQVNTIGZpbGxUZXh0IGRyYXdzIGZpbGxlZCB0ZXh0IAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5OYU4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3Jl
ZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguTmFOLWV4cGVjdGVkLnR4
dAppbmRleCBkYjAxMDhmYmZkMTllOTMwYjZhMzQ0ZmY2YTRhNGVkNTg1MzM3ODU0Li4xNWJmZmFk
Y2EyYWVmZmVmZmI0YWVjZGY4ZDhjYmZhNjMxNzMzMWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5OYU4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0
LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLk5hTi1leHBlY3RlZC50eHQKQEAgLTMsNSArMyw1
IEBACiBmaWxsVGV4dCBoYW5kbGVzIG1heFdpZHRoIGNvcnJlY3RseQogCiAKLUZBSUwgZmlsbFRl
eHQgaGFuZGxlcyBtYXhXaWR0aCBjb3JyZWN0bHkgY3R4LmZpbGxUZXh0IGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ2N0eC5maWxsVGV4dCgnZmFpbCBmYWlsIGZhaWwgZmFpbCBmYWlsJywgNSwgMzUs
IE5hTiknLCAnY3R4LmZpbGxUZXh0JyBpcyB1bmRlZmluZWQpCitQQVNTIGZpbGxUZXh0IGhhbmRs
ZXMgbWF4V2lkdGggY29ycmVjdGx5IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRy
YXcuZmlsbC5tYXhXaWR0aC5OYU4ud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLm1heFdpZHRoLk5hTi53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDViMzky
ODA5YjAyYzkxZWQzM2ZkYjAwMzhhZGQyYzVhYWQyY2U4YzYuLmJmOWM4ZTc1NmIwMDFiYzAzNjgw
OGEyNGRmNDI0ZWRiZjMzNjAyMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5m
aWxsLm1heFdpZHRoLk5hTi53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLm1heFdpZHRoLk5hTi53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEs
MyBAQAogCi1GQUlMIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5IGN0eC5maWxs
VGV4dCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZmlsbFRleHQoJ2ZhaWwgZmFpbCBmYWls
IGZhaWwgZmFpbCcsIDUsIDM1LCBOYU4pJywgJ2N0eC5maWxsVGV4dCcgaXMgdW5kZWZpbmVkKQor
UEFTUyBmaWxsVGV4dCBoYW5kbGVzIG1heFdpZHRoIGNvcnJlY3RseSAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgubGFyZ2UtbWFudWFsLndvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS1t
YW51YWwud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAwZDZmNGU5NDg5NmFmZTdiYjM2YmEzZDU0
ZTRmYTE2OWU5ZTQ2NDViLi5iZjljOGU3NTZiMDAxYmMwMzY4MDhhMjRkZjQyNGVkYmYzMzYwMjAw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS1t
YW51YWwud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmls
bC5tYXhXaWR0aC5sYXJnZS1tYW51YWwud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMg
QEAKIAotRkFJTCBmaWxsVGV4dCBoYW5kbGVzIG1heFdpZHRoIGNvcnJlY3RseSBjdHguZmlsbFRl
eHQgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdQQVNTJywgNSwgMzUsIDIw
MCknLCAnY3R4LmZpbGxUZXh0JyBpcyB1bmRlZmluZWQpCitQQVNTIGZpbGxUZXh0IGhhbmRsZXMg
bWF4V2lkdGggY29ycmVjdGx5IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcu
ZmlsbC5tYXhXaWR0aC5uZWdhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRy
YXcuZmlsbC5tYXhXaWR0aC5uZWdhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggOWExYmM0OGRlZWQx
OGQ4ZmVhNzE2YTg5MzI0NThjZTE2NDY1MDE1ZC4uMWZlYmJkY2NiZWQ2MDVmMDg5NGQ5NjMyMjkz
OWI4MTE5NWIxNDQ1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4
V2lkdGgubmVnYXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5m
aWxsLm1heFdpZHRoLm5lZ2F0aXZlLWV4cGVjdGVkLnR4dApAQCAtMyw1ICszLDUgQEAKIGZpbGxU
ZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5CiAKIAotRkFJTCBmaWxsVGV4dCBoYW5kbGVz
IG1heFdpZHRoIGNvcnJlY3RseSBjdHguZmlsbFRleHQgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
Y3R4LmZpbGxUZXh0KCdmYWlsIGZhaWwgZmFpbCBmYWlsIGZhaWwnLCA1LCAzNSwgLTEpJywgJ2N0
eC5maWxsVGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBmaWxsVGV4dCBoYW5kbGVzIG1heFdpZHRo
IGNvcnJlY3RseSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4
V2lkdGgubmVnYXRpdmUud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJh
dy5maWxsLm1heFdpZHRoLm5lZ2F0aXZlLndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNTRkMDcw
YWU5NmIwMGRkNGRlODQ1MjEzZTNhYjY0NDZiYTFlNmNlNy4uYmY5YzhlNzU2YjAwMWJjMDM2ODA4
YTI0ZGY0MjRlZGJmMzM2MDIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZp
bGwubWF4V2lkdGgubmVnYXRpdmUud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5uZWdhdGl2ZS53b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0xLDMgKzEsMyBAQAogCi1GQUlMIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5
IGN0eC5maWxsVGV4dCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZmlsbFRleHQoJ2ZhaWwg
ZmFpbCBmYWlsIGZhaWwgZmFpbCcsIDUsIDM1LCAtMSknLCAnY3R4LmZpbGxUZXh0JyBpcyB1bmRl
ZmluZWQpCitQQVNTIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5IAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5zbWFsbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5zbWFsbC1leHBlY3Rl
ZC50eHQKaW5kZXggOWVhMzg1Y2E3NTI0ZDE4MWFiODc3ZTAwNGVkZjMwMTNhMDYyMWM5NS4uYjhh
MWM3MTQ1YWNkZTZhYzgxMzBiODRiOWYxM2M4OTM0ODk1MWM3YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguc21hbGwtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnNtYWxsLWV4cGVjdGVkLnR4dApAQCAt
Myw1ICszLDUgQEAKIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5CiAKIAotRkFJ
TCBmaWxsVGV4dCBoYW5kbGVzIG1heFdpZHRoIGNvcnJlY3RseSBjdHguZmlsbFRleHQgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdmYWlsIGZhaWwgZmFpbCBmYWlsIGZhaWwn
LCAtMTAwLCAzNSwgOTApJywgJ2N0eC5maWxsVGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBmaWxs
VGV4dCBoYW5kbGVzIG1heFdpZHRoIGNvcnJlY3RseSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguc21hbGwud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnNtYWxsLndvcmtlci1leHBlY3RlZC50
eHQKaW5kZXggNjQyNTk2N2FhZThkNWZhNTRlZGU4OTNjNzQ4MGRhMjNlNzUxY2YwYS4uYmY5Yzhl
NzU2YjAwMWJjMDM2ODA4YTI0ZGY0MjRlZGJmMzM2MDIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguc21hbGwud29ya2VyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1j
YW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5zbWFsbC53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGgg
Y29ycmVjdGx5IGN0eC5maWxsVGV4dCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZmlsbFRl
eHQoJ2ZhaWwgZmFpbCBmYWlsIGZhaWwgZmFpbCcsIC0xMDAsIDM1LCA5MCknLCAnY3R4LmZpbGxU
ZXh0JyBpcyB1bmRlZmluZWQpCitQQVNTIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVj
dGx5IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC56
ZXJvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnpl
cm8tZXhwZWN0ZWQudHh0CmluZGV4IGNlMzk1NTc2YjE1NzlmZmE5NWY0Njk5YzBlYWE1NzllOGE2
YjM2MTEuLmVhZDUxOTYxZGM0YmYxNjc5Y2NjMDI5MWQ5ZTYwNGMwZDIwYzFlMDcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnplcm8tZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnplcm8tZXhwZWN0ZWQu
dHh0CkBAIC0zLDUgKzMsNSBAQAogZmlsbFRleHQgaGFuZGxlcyBtYXhXaWR0aCBjb3JyZWN0bHkK
IAogCi1GQUlMIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGggY29ycmVjdGx5IGN0eC5maWxsVGV4
dCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZmlsbFRleHQoJ2ZhaWwgZmFpbCBmYWlsIGZh
aWwgZmFpbCcsIDUsIDM1LCAwKScsICdjdHguZmlsbFRleHQnIGlzIHVuZGVmaW5lZCkKK1BBU1Mg
ZmlsbFRleHQgaGFuZGxlcyBtYXhXaWR0aCBjb3JyZWN0bHkgCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90
ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnplcm8ud29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNh
bnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLnplcm8ud29ya2VyLWV4cGVjdGVk
LnR4dAppbmRleCA3Mjk2YmEyMDhhMGVlNWI1MjgwMWE2ZjBiODgxZDJiMDE1OTBmNDM5Li5iZjlj
OGU3NTZiMDAxYmMwMzY4MDhhMjRkZjQyNGVkYmYzMzYwMjAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4
dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC56ZXJvLndvcmtlci1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguemVyby53b3JrZXItZXhwZWN0
ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIGZpbGxUZXh0IGhhbmRsZXMgbWF4V2lkdGgg
Y29ycmVjdGx5IGN0eC5maWxsVGV4dCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdjdHguZmlsbFRl
eHQoJ2ZhaWwgZmFpbCBmYWlsIGZhaWwgZmFpbCcsIDUsIDM1LCAwKScsICdjdHguZmlsbFRleHQn
IGlzIHVuZGVmaW5lZCkKK1BBU1MgZmlsbFRleHQgaGFuZGxlcyBtYXhXaWR0aCBjb3JyZWN0bHkg
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnJ0bC1tYW51YWwud29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnJ0bC1tYW51YWwu
d29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAzYjYxYTBiYTcxZTczMDY1M2E2ZTZmOGUwZjllOTg2
OGE1Mjc2OWE4Li4zMGMxNmEwZWIzNTk1MzMzNzRhY2RlNDVlMTRlMDE5Y2ZhZDZmZjYxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5ydGwtbWFudWFsLndvcmtlci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLW1hbnVhbC53b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIGZpbGxUZXh0IHJlc3BlY3Rz
IFJpZ2h0LVRvLUxlZnQgT3ZlcnJpZGUgY2hhcmFjdGVycyBjdHguZmlsbFRleHQgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdcdTIwMmVGQUlMIFx4YTAgXHhhMCBTU0FQJywg
NSwgMzUpJywgJ2N0eC5maWxsVGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBmaWxsVGV4dCByZXNw
ZWN0cyBSaWdodC1Uby1MZWZ0IE92ZXJyaWRlIGNoYXJhY3RlcnMgCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnVuYWZmZWN0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5kcmF3LmZpbGwudW5hZmZlY3RlZC1leHBlY3RlZC50eHQKaW5kZXggZTlkZjdm
MzA1YzI5MTQ2YzlmZGRhMDNiMTUzZWFkYjdhMzNjODc4ZC4uMzBkNTI4ZjFjYWU0OTU0NGU3ZGM3
NWYwMDEzZmNjNTAxNjA1MTEwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZp
bGwudW5hZmZlY3RlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZp
bGwudW5hZmZlY3RlZC1leHBlY3RlZC50eHQKQEAgLTMsNSArMyw1IEBACiBmaWxsVGV4dCBkb2Vz
IG5vdCBzdGFydCBhIG5ldyBwYXRoIG9yIHN1YnBhdGgKIAogCi1GQUlMIGZpbGxUZXh0IGRvZXMg
bm90IHN0YXJ0IGEgbmV3IHBhdGggb3Igc3VicGF0aCBjdHguZmlsbFRleHQgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdGQUlMJywgNSwgMzUpJywgJ2N0eC5maWxsVGV4dCcg
aXMgdW5kZWZpbmVkKQorUEFTUyBmaWxsVGV4dCBkb2VzIG5vdCBzdGFydCBhIG5ldyBwYXRoIG9y
IHN1YnBhdGggCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnVuYWZm
ZWN0ZWQud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnVu
YWZmZWN0ZWQud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0MGJmMGI4NDVmOWY5MmI0YjkyY2Vi
NjNkZjFmMDdiNTFlZDExZDViLi4xMmI1MzQ4Mzg2ZTgzZWM2NGI4MTY2OTgzZGNlMWQ5MWFiM2Yw
MTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC51bmFmZmVjdGVkLndv
cmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwudW5hZmZl
Y3RlZC53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIGZpbGxUZXh0
IGRvZXMgbm90IHN0YXJ0IGEgbmV3IHBhdGggb3Igc3VicGF0aCBjdHguZmlsbFRleHQgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdGQUlMJywgNSwgMzUpJywgJ2N0eC5maWxs
VGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBmaWxsVGV4dCBkb2VzIG5vdCBzdGFydCBhIG5ldyBw
YXRoIG9yIHN1YnBhdGggCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5mb250
ZmFjZS5yZXBlYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZvbnRmYWNl
LnJlcGVhdC1leHBlY3RlZC50eHQKaW5kZXggNTA1OGYyZjE1ODE4YjA5NTA2YTc2MGZiNWFkNjE4
ZjczMDQ1YWI3Zi4uNTQ5NDhiZWI2M2U2YWMxYTdhNzQzMTZhY2Q3OWZjZDQ2NGFlNDc1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZvbnRmYWNlLnJlcGVhdC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZvbnRmYWNlLnJlcGVhdC1leHBlY3RlZC50
eHQKQEAgLTMsNSArMyw1IEBACiBEcmF3IHdpdGggdGhlIGZvbnQgaW1tZWRpYXRlbHksIHRoZW4g
d2FpdCBhIGJpdCB1bnRpbCBhbmQgZHJhdyBhZ2Fpbi4gKFRoaXMgY3Jhc2hlcyBzb21lIHZlcnNp
b24gb2YgV2ViS2l0LikKIAogCi1GQUlMIERyYXcgd2l0aCB0aGUgZm9udCBpbW1lZGlhdGVseSwg
dGhlbiB3YWl0IGEgYml0IHVudGlsIGFuZCBkcmF3IGFnYWluLiAoVGhpcyBjcmFzaGVzIHNvbWUg
dmVyc2lvbiBvZiBXZWJLaXQuKSBjdHguZmlsbFRleHQgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
Y3R4LmZpbGxUZXh0KCdBQScsIDAsIDUwKScsICdjdHguZmlsbFRleHQnIGlzIHVuZGVmaW5lZCkK
K1BBU1MgRHJhdyB3aXRoIHRoZSBmb250IGltbWVkaWF0ZWx5LCB0aGVuIHdhaXQgYSBiaXQgdW50
aWwgYW5kIGRyYXcgYWdhaW4uIChUaGlzIGNyYXNoZXMgc29tZSB2ZXJzaW9uIG9mIFdlYktpdC4p
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZm9udGZhY2UucmVwZWF0Lndv
cmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZm9udGZhY2UucmVwZWF0
Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggODA1NWVjOGMwOGRmYTkyYmJjZTJkNTFhMDI3OGJi
NzdhNjZkZTJlYy4uNTUzZDE4Yjk0NzJmZmI5OTI1NDMyMzM5YmUzYTc3ZDQzNjQxYTI5YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZz
Y3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZvbnRmYWNlLnJlcGVhdC53b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5mb250ZmFjZS5yZXBlYXQud29y
a2VyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBEcmF3IHdpdGggdGhlIGZv
bnQgaW1tZWRpYXRlbHksIHRoZW4gd2FpdCBhIGJpdCB1bnRpbCBhbmQgZHJhdyBhZ2Fpbi4gKFRo
aXMgY3Jhc2hlcyBzb21lIHZlcnNpb24gb2YgV2ViS2l0LikgY3R4LmZpbGxUZXh0IGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2N0eC5maWxsVGV4dCgnQUEnLCAwLCA1MCknLCAnY3R4LmZpbGxUZXh0
JyBpcyB1bmRlZmluZWQpCitQQVNTIERyYXcgd2l0aCB0aGUgZm9udCBpbW1lZGlhdGVseSwgdGhl
biB3YWl0IGEgYml0IHVudGlsIGFuZCBkcmF3IGFnYWluLiAoVGhpcyBjcmFzaGVzIHNvbWUgdmVy
c2lvbiBvZiBXZWJLaXQuKSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3Lmtl
cm4uY29uc2lzdGVudC1tYW51YWwud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5rZXJuLmNvbnNpc3RlbnQtbWFudWFsLndvcmtlci1leHBlY3RlZC50eHQKaW5kZXgg
MzhhNWNmNjJmZTE3MDJhMWZiMTRkY2E5NWMwYjc1ZmM5YjhlZmJiZi4uODQwNzZlYzZlZjkzNjM0
ZTU2NDc5NGQ4NjgxNmI2NjFjMTcwZWNiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5k
cmF3Lmtlcm4uY29uc2lzdGVudC1tYW51YWwud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGV4dC8yZC50ZXh0LmRyYXcua2Vybi5jb25zaXN0ZW50LW1hbnVhbC53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIFN0cm9rZWQgYW5kIGZpbGxlZCB0ZXh0IHNob3Vs
ZCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUga2VybmluZyBzbyBpdCBvdmVybGFwcyBjdHguZmlsbFRl
eHQgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnY3R4LmZpbGxUZXh0KCdWQVZBVkFWQVZBVkFWQScs
IC01MCwgMjUpJywgJ2N0eC5maWxsVGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBTdHJva2VkIGFu
ZCBmaWxsZWQgdGV4dCBzaG91bGQgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGtlcm5pbmcgc28gaXQg
b3ZlcmxhcHMgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFz
aWMtbWFudWFsLndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ry
b2tlLmJhc2ljLW1hbnVhbC53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IGRhNzBmMWFlMzZmN2My
MGFmN2VjNDAwN2JiZDQ4ODRjZTA5ZmRkYWIuLjIzODk4NjAzNDc2NWE1OWRkOGQ5NGY5NzEzMDQy
NmM0MjAzMmFlNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFz
aWMtbWFudWFsLndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3
LnN0cm9rZS5iYXNpYy1tYW51YWwud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAK
IAotRkFJTCBzdHJva2VUZXh0IGRyYXdzIHN0cm9rZWQgdGV4dCBjdHguc3Ryb2tlVGV4dCBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdjdHguc3Ryb2tlVGV4dCgnUEFTUycsIDUsIDM1KScsICdjdHgu
c3Ryb2tlVGV4dCcgaXMgdW5kZWZpbmVkKQorUEFTUyBzdHJva2VUZXh0IGRyYXdzIHN0cm9rZWQg
dGV4dCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LnN0cm9rZS51bmFmZmVj
dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UudW5hZmZlY3Rl
ZC1leHBlY3RlZC50eHQKaW5kZXggNjVlZGEwYzY2M2Y2Y2M0MDM0MzJkMWMxYjgzYjY0MGE1ZmM3
YjY2Yi4uMjUyOWFiNmIwMDBhNmZmMmZiNDQ0MzlkZWZlMDI4ODk2OGJjZTYyMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LnN0cm9rZS51bmFmZmVjdGVkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLnVuYWZmZWN0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0zLDUgKzMsNSBAQAogc3Ryb2tlVGV4dCBkb2VzIG5vdCBzdGFydCBhIG5ldyBwYXRoIG9y
IHN1YnBhdGgKIAogCi1GQUlMIHN0cm9rZVRleHQgZG9lcyBub3Qgc3RhcnQgYSBuZXcgcGF0aCBv
ciBzdWJwYXRoIGN0eC5zdHJva2VUZXh0IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2N0eC5zdHJv
a2VUZXh0KCdGQUlMJywgNSwgMzUpJywgJ2N0eC5zdHJva2VUZXh0JyBpcyB1bmRlZmluZWQpCitQ
QVNTIHN0cm9rZVRleHQgZG9lcyBub3Qgc3RhcnQgYSBuZXcgcGF0aCBvciBzdWJwYXRoIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29m
ZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLnVuYWZmZWN0ZWQud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UudW5hZmZlY3RlZC53
b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IGFhY2IwYzkzNzU2MTQ4YjVkYWU5MjBkMTdmMWQ3ODBh
NzdkM2M3YmEuLmE3NGRhNzk0MGNjNmQzNGI0ZTVlZTJkM2ZlODdjOTc5ZDcxMjJmMzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UudW5hZmZlY3RlZC53b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UudW5hZmZlY3RlZC53
b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIHN0cm9rZVRleHQgZG9l
cyBub3Qgc3RhcnQgYSBuZXcgcGF0aCBvciBzdWJwYXRoIGN0eC5zdHJva2VUZXh0IGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2N0eC5zdHJva2VUZXh0KCdGQUlMJywgNSwgMzUpJywgJ2N0eC5zdHJv
a2VUZXh0JyBpcyB1bmRlZmluZWQpCitQQVNTIHN0cm9rZVRleHQgZG9lcyBub3Qgc3RhcnQgYSBu
ZXcgcGF0aCBvciBzdWJwYXRoIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQu
ZGVmYXVsdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQuZGVmYXVsdC1leHBl
Y3RlZC50eHQKaW5kZXggYjg1N2JkNDhjYjI5OGY5MmYyNGJlYmYzNDZjNDQ1MzFkNDgxMWQ4YS4u
M2NkMDI0MmU1NmFlYzc5ZWU4NzE2ZjA4YTQxYjY4YzgyMjc5YTExYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFz
L3RleHQvMmQudGV4dC5mb250LmRlZmF1bHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJk
LnRleHQuZm9udC5kZWZhdWx0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIDJkLnRleHQu
Zm9udC5kZWZhdWx0CiAKIAotRkFJTCBPZmZzY3JlZW5DYW52YXMgdGVzdDogMmQudGV4dC5mb250
LmRlZmF1bHQgYXNzZXJ0X2VxdWFsczogY3R4LmZvbnQgPT09ICcxMHB4IHNhbnMtc2VyaWYnIChn
b3QgW3VuZGVmaW5lZF0sIGV4cGVjdGVkIDEwcHggc2Fucy1zZXJpZltzdHJpbmddKSBleHBlY3Rl
ZCAoc3RyaW5nKSAiMTBweCBzYW5zLXNlcmlmIiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5l
ZAorUEFTUyBPZmZzY3JlZW5DYW52YXMgdGVzdDogMmQudGV4dC5mb250LmRlZmF1bHQgCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQuZGVmYXVsdC53b3JrZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IGE2NGEyNTFhOTFhYjAxNzc2MzU5NzEyYWIzM2YwZmM2ZmFmZDdlY2IuLmI3ZDk0OWY2MGFh
NjFiZjgzNzZiMzhkZTJiODQ1MWYyNWI3ZGZmZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZm9udC5kZWZhdWx0Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4
dC5mb250LmRlZmF1bHQud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJ
TCAyZCBhc3NlcnRfZXF1YWxzOiBjdHguZm9udCA9PT0gJzEwcHggc2Fucy1zZXJpZicgKGdvdCBb
dW5kZWZpbmVkXSwgZXhwZWN0ZWQgMTBweCBzYW5zLXNlcmlmW3N0cmluZ10pIGV4cGVjdGVkIChz
dHJpbmcpICIxMHB4IHNhbnMtc2VyaWYiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCitQ
QVNTIDJkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2UuYmFzaWMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmJhc2ljLWV4cGVjdGVk
LnR4dAppbmRleCA5NTNhMGRkMmQ2ZmI3YWM5NjAxNWViZTYyNzI3MzliNzFlN2YxNmViLi45MGRj
MmM1MTRmZjY0ZTk3ZTlkMDBjZjNlYmRkZTg4ZjYxNjRkMzE2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4
dC8yZC50ZXh0LmZvbnQucGFyc2UuYmFzaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJk
LnRleHQuZm9udC5wYXJzZS5iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAyZC50
ZXh0LmZvbnQucGFyc2UuYmFzaWMKIAogCi1GQUlMIE9mZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50
ZXh0LmZvbnQucGFyc2UuYmFzaWMgYXNzZXJ0X2VxdWFsczogY3R4LmZvbnQgPT09ICcyMHB4IHNl
cmlmJyAoZ290IDIwUFggICBTRVJJRltzdHJpbmddLCBleHBlY3RlZCAyMHB4IHNlcmlmW3N0cmlu
Z10pIGV4cGVjdGVkICIyMHB4IHNlcmlmIiBidXQgZ290ICIyMFBYICAgU0VSSUYiCitQQVNTIE9m
ZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmZvbnQucGFyc2UuYmFzaWMgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVu
LWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5iYXNpYy53b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmJhc2ljLndvcmtlci1leHBlY3RlZC50eHQK
aW5kZXggMzEwODg2ZDJjNTEwNjBlZTRiNjQ3NDg1NjQ0ZDk0YmFiYWJmOTI5NS4uMDg0ZWZlNDZl
ZGY5YTZmZTllYTg4ODM0MmFhYWU2MzZhMzNmZDQzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQu
dGV4dC5mb250LnBhcnNlLmJhc2ljLndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQv
MmQudGV4dC5mb250LnBhcnNlLmJhc2ljLndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwz
IEBACiAKLUZBSUwgMmQgYXNzZXJ0X2VxdWFsczogY3R4LmZvbnQgPT09ICcyMHB4IHNlcmlmJyAo
Z290IDIwUFggICBTRVJJRltzdHJpbmddLCBleHBlY3RlZCAyMHB4IHNlcmlmW3N0cmluZ10pIGV4
cGVjdGVkICIyMHB4IHNlcmlmIiBidXQgZ290ICIyMFBYICAgU0VSSUYiCitGQUlMIDJkIGFzc2Vy
dF9lcXVhbHM6IGN0eC5mb250ID09PSAnMjBweCBzZXJpZicgKGdvdCAxMHB4IHNhbnMtc2VyaWZb
c3RyaW5nXSwgZXhwZWN0ZWQgMjBweCBzZXJpZltzdHJpbmddKSBleHBlY3RlZCAiMjBweCBzZXJp
ZiIgYnV0IGdvdCAiMTBweCBzYW5zLXNlcmlmIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50
ZXh0LmZvbnQucGFyc2UuY29tcGxleC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZv
bnQucGFyc2UuY29tcGxleC1leHBlY3RlZC50eHQKaW5kZXggYmNlNjgzMDQ4MTUzZTA2ZDZjMDll
NzYyNjk3ZDc1ZmZkMGQ5Zjc2NS4uOWQ4M2FlZWJmYjk5ZWJiNzZjMDlmZDQyZmZmZmJmMGQ0YmQ1
MDA3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXgtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4LWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIDJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4CiAKIAot
RkFJTCBPZmZzY3JlZW5DYW52YXMgdGVzdDogMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXggYXNz
ZXJ0X2VxdWFsczogY3R4LmZvbnQgPT09ICdpdGFsaWMgc21hbGwtY2FwcyAxMnB4ICJVbmtub3du
IEZvbnQiLCBzYW5zLXNlcmlmJyAoZ290IHNtYWxsLWNhcHMgaXRhbGljIDQwMCAxMnB4LzIgVW5r
bm93biBGb250LCBzYW5zLXNlcmlmW3N0cmluZ10sIGV4cGVjdGVkIGl0YWxpYyBzbWFsbC1jYXBz
IDEycHggIlVua25vd24gRm9udCIsIHNhbnMtc2VyaWZbc3RyaW5nXSkgZXhwZWN0ZWQgIml0YWxp
YyBzbWFsbC1jYXBzIDEycHggXCJVbmtub3duIEZvbnRcIiwgc2Fucy1zZXJpZiIgYnV0IGdvdCAi
c21hbGwtY2FwcyBpdGFsaWMgNDAwIDEycHgvMiBVbmtub3duIEZvbnQsIHNhbnMtc2VyaWYiCitQ
QVNTIE9mZnNjcmVlbkNhbnZhcyB0ZXN0OiAyZC50ZXh0LmZvbnQucGFyc2UuY29tcGxleCAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXgud29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
b2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lndvcmtlci1l
eHBlY3RlZC50eHQKaW5kZXggNTNjNWUwN2Q3MTQ2ZjQ0ZjY0ZDQ0ZWM5NWE0MDE1OTU2YTA2MzUx
Ni4uMWY0ZjBlZjk4Yjk3MmRjMzZiZTA1YjczZTNmMzMzNjk4MTk0ZWNkYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2Fu
dmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXgud29ya2VyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2UuY29tcGxleC53b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIDJkIGFzc2VydF9lcXVhbHM6IGN0eC5mb250ID09
PSAnaXRhbGljIHNtYWxsLWNhcHMgMTJweCAiVW5rbm93biBGb250Iiwgc2Fucy1zZXJpZicgKGdv
dCBzbWFsbC1jYXBzIGl0YWxpYyA0MDAgMTJweC8yIFVua25vd24gRm9udCwgc2Fucy1zZXJpZltz
dHJpbmddLCBleHBlY3RlZCBpdGFsaWMgc21hbGwtY2FwcyAxMnB4ICJVbmtub3duIEZvbnQiLCBz
YW5zLXNlcmlmW3N0cmluZ10pIGV4cGVjdGVkICJpdGFsaWMgc21hbGwtY2FwcyAxMnB4IFwiVW5r
bm93biBGb250XCIsIHNhbnMtc2VyaWYiIGJ1dCBnb3QgInNtYWxsLWNhcHMgaXRhbGljIDQwMCAx
MnB4LzIgVW5rbm93biBGb250LCBzYW5zLXNlcmlmIgorRkFJTCAyZCBhc3NlcnRfZXF1YWxzOiBj
dHguZm9udCA9PT0gJ2l0YWxpYyBzbWFsbC1jYXBzIDEycHggIlVua25vd24gRm9udCIsIHNhbnMt
c2VyaWYnIChnb3QgMTBweCBzYW5zLXNlcmlmW3N0cmluZ10sIGV4cGVjdGVkIGl0YWxpYyBzbWFs
bC1jYXBzIDEycHggIlVua25vd24gRm9udCIsIHNhbnMtc2VyaWZbc3RyaW5nXSkgZXhwZWN0ZWQg
Iml0YWxpYyBzbWFsbC1jYXBzIDEycHggXCJVbmtub3duIEZvbnRcIiwgc2Fucy1zZXJpZiIgYnV0
IGdvdCAiMTBweCBzYW5zLXNlcmlmIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZv
bnQucGFyc2UuaW52YWxpZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFy
c2UuaW52YWxpZC1leHBlY3RlZC50eHQKaW5kZXggZDVlYjJmOWI1Y2VlZDk1MjZjMDc3MDBhYjA0
ZjQzNWExODAxYjk1YS4uYTk3MWIyOTA4MzZmYTA0NmU1ZDIyODJhOTFkZWU4YWFkMzBhZTdkOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zm
c2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDUgQEAKIDJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkCiAKIAotRkFJTCBP
ZmZzY3JlZW5DYW52YXMgdGVzdDogMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQgYXNzZXJ0X2Vx
dWFsczogY3R4LmZvbnQgPT09ICcyMHB4IHNlcmlmJyAoZ290IGJvZ3VzW3N0cmluZ10sIGV4cGVj
dGVkIDIwcHggc2VyaWZbc3RyaW5nXSkgZXhwZWN0ZWQgIjIwcHggc2VyaWYiIGJ1dCBnb3QgImJv
Z3VzIgorUEFTUyBPZmZzY3JlZW5DYW52YXMgdGVzdDogMmQudGV4dC5mb250LnBhcnNlLmludmFs
aWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkLndv
cmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC53
b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IGIxOWYzNGZiY2I0N2E2NmQ3MDU4ZGM0Y2JjOTE3YjI0
OTc2MGU3YjguLjA4NGVmZTQ2ZWRmOWE2ZmU5ZWE4ODgzNDJhYWFlNjM2YTMzZmQ0MzIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkLndvcmtlci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9v
ZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQud29ya2VyLWV4
cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCAyZCBhc3NlcnRfZXF1YWxzOiBjdHgu
Zm9udCA9PT0gJzIwcHggc2VyaWYnIChnb3QgYm9ndXNbc3RyaW5nXSwgZXhwZWN0ZWQgMjBweCBz
ZXJpZltzdHJpbmddKSBleHBlY3RlZCAiMjBweCBzZXJpZiIgYnV0IGdvdCAiYm9ndXMiCitGQUlM
IDJkIGFzc2VydF9lcXVhbHM6IGN0eC5mb250ID09PSAnMjBweCBzZXJpZicgKGdvdCAxMHB4IHNh
bnMtc2VyaWZbc3RyaW5nXSwgZXhwZWN0ZWQgMjBweCBzZXJpZltzdHJpbmddKSBleHBlY3RlZCAi
MjBweCBzZXJpZiIgYnV0IGdvdCAiMTBweCBzYW5zLXNlcmlmIgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGV4dC8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJk
LnRleHQuZm9udC5wYXJzZS5zeXN0ZW0tZXhwZWN0ZWQudHh0CmluZGV4IGQ2YjA2Mzg4ZjRiMmE0
ZDQ2ZGI2NDQzNGQ3OTFhMWFiZmQzYjQ4NTYuLmI3ZWRmNDEyZGE0NThmZDQ3Zjc3MDJkYmI2OTk5
ZjJlZjFlNmRmMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5zeXN0
ZW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5zeXN0ZW0t
ZXhwZWN0ZWQudHh0CkBAIC0zLDUgKzMsNSBAQAogU3lzdGVtIGZvbnRzIG11c3QgYmUgY29tcHV0
ZWQgdG8gZXhwbGljaXQgdmFsdWVzCiAKIAotRkFJTCBTeXN0ZW0gZm9udHMgbXVzdCBiZSBjb21w
dXRlZCB0byBleHBsaWNpdCB2YWx1ZXMgYXNzZXJ0X25vdF9lcXVhbHM6IGN0eC5mb250ICE9PSAn
bWVzc2FnZS1ib3gnIChnb3QgbWVzc2FnZS1ib3hbc3RyaW5nXSwgZXhwZWN0ZWQgbm90IG1lc3Nh
Z2UtYm94W3N0cmluZ10pIGdvdCBkaXNhbGxvd2VkIHZhbHVlICJtZXNzYWdlLWJveCIKK1BBU1Mg
U3lzdGVtIGZvbnRzIG11c3QgYmUgY29tcHV0ZWQgdG8gZXhwbGljaXQgdmFsdWVzIAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLndvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNj
cmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLndvcmtlci1leHBlY3Rl
ZC50eHQKaW5kZXggMzEwNDJhNmMwYjk1YTc3NzUwNGRkNTcyYzJkMTZlMTQzZjc1NGY0MC4uNzQz
MWY5NWFkODhlZTVmNmM3ZTNjMzBlOTU3NWUzZDlkMDg5YTM2YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuZm9udC5wYXJzZS5zeXN0ZW0ud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MSwzICsxLDMgQEAKIAotRkFJTCBTeXN0ZW0gZm9udHMgbXVzdCBiZSBjb21wdXRlZCB0byBleHBs
aWNpdCB2YWx1ZXMgYXNzZXJ0X25vdF9lcXVhbHM6IGN0eC5mb250ICE9PSAnbWVzc2FnZS1ib3gn
IChnb3QgbWVzc2FnZS1ib3hbc3RyaW5nXSwgZXhwZWN0ZWQgbm90IG1lc3NhZ2UtYm94W3N0cmlu
Z10pIGdvdCBkaXNhbGxvd2VkIHZhbHVlICJtZXNzYWdlLWJveCIKK1BBU1MgU3lzdGVtIGZvbnRz
IG11c3QgYmUgY29tcHV0ZWQgdG8gZXhwbGljaXQgdmFsdWVzIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMv
dGV4dC8yZC50ZXh0LmZvbnQucGFyc2UudGlueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9vZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5mb250LnBhcnNlLnRpbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCBiN2Q5
NDlmNjBhYTYxYmY4Mzc2YjM4ZGUyYjg0NTFmMjViN2RmZmQ2Li4zZjJlM2NiODViZjI4YjFmMmUx
Y2RmZTM1OTY2NGZiYzYxOWFjYzYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmZvbnQu
cGFyc2UudGlueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZm9u
dC5wYXJzZS50aW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLVBBU1Mg
MmQgCitGQUlMIDJkIGFzc2VydF9lcXVhbHM6IGN0eC5mb250ID09PSAnMXB4IHNhbnMtc2VyaWYn
IChnb3QgMTBweCBzYW5zLXNlcmlmW3N0cmluZ10sIGV4cGVjdGVkIDFweCBzYW5zLXNlcmlmW3N0
cmluZ10pIGV4cGVjdGVkICIxcHggc2Fucy1zZXJpZiIgYnV0IGdvdCAiMTBweCBzYW5zLXNlcmlm
IgogCg==
</data>
<flag name="review"
          id="396380"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>