<?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>94827</bug_id>
          
          <creation_ts>2012-08-23 10:56:19 -0700</creation_ts>
          <short_desc>Web Inspector: make ui component compile</short_desc>
          <delta_ts>2012-08-24 06:25:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>703148</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-23 10:56:19 -0700</bug_when>
    <thetext>- Passed event into the ContextMenu constructor
- Implements href context menu as a context menu provider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703154</commentid>
    <comment_count>1</comment_count>
      <attachid>160197</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-23 11:01:16 -0700</bug_when>
    <thetext>Created attachment 160197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703159</commentid>
    <comment_count>2</comment_count>
      <attachid>160198</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-23 11:03:10 -0700</bug_when>
    <thetext>Created attachment 160198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704014</commentid>
    <comment_count>3</comment_count>
      <attachid>160403</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-24 05:31:17 -0700</bug_when>
    <thetext>Created attachment 160403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704034</commentid>
    <comment_count>4</comment_count>
      <attachid>160403</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-24 06:14:05 -0700</bug_when>
    <thetext>Comment on attachment 160403
Patch

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

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:1929
&gt; +        var subtitle = this._request.parsedURL.host;

This means we will now show full url in name column subtitle in NetworkPanel. Is that desired behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704049</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-24 06:25:22 -0700</bug_when>
    <thetext>Committed r126579: &lt;http://trac.webkit.org/changeset/126579&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160197</attachid>
            <date>2012-08-23 11:01:16 -0700</date>
            <delta_ts>2012-08-23 11:03:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94827-20120823220111.patch</filename>
            <type>text/plain</type>
            <size>59232</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFlMzExY2YwNWJlNDZj
YzFiM2NhMjU2MTFlYjNlNWMwNjQzNTJjNy4uMTM0NGNhYjY3MWM3OWUzNjFjMTA3ZTI0ZjRmMDU4
YzYyMDY0MGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0yMyAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtYWtlIHVpIGNvbXBvbmVudCBjb21waWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIC0gUGFzc2VzIGV2ZW50IGludG8gdGhlIENvbnRleHRNZW51
IGNvbnN0cnVjdG9yCisgICAgICAgIC0gSW1wbGVtZW50cyBocmVmIGNvbnRleHQgbWVudSBhcyBh
IGNvbnRleHQgbWVudSBwcm92aWRlcgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJlc3VsdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRWaWV3
LnByb3RvdHlwZS5fY29udGV4dE1lbnVFdmVudEZpcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLl9icmVha3BvaW50
Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnRzU2lkZWJh
clBhbmUucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxs
U3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnByb3RvdHlwZS5fcGxhY2FyZENvbnRleHRNZW51KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUuY2xvbmUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBl
LnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5hcHBl
bmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LlBy
b3ZpZGVyLnByb3RvdHlwZS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NvbnRleHRN
ZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlvblV0aWxz
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1h
Z2VQcmV2aWV3Q29udGVudHMuZXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cy5idWlsZENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1h
Z2VQcmV2aWV3Q29udGVudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdy
aWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9jb250ZXh0
TWVudUluRGF0YVRhYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnBy
b3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9jcmVhdGVMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJv
dG90eXBlLl9jb250ZXh0TWVudUV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUuYXBwZW5kQXBwbGljYWJsZUl0ZW1z
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IYW5kbGVyUmVnaXN0cnkucHJvdG90eXBlLl9hcHBl
bmRDb250ZW50UHJvdmlkZXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGFuZGxlclJl
Z2lzdHJ5LnByb3RvdHlwZS5fYXBwZW5kSHJlZkl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ltYWdlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbWFnZVZpZXcu
cHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9y
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5o
YW5kbGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91
dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmUuY29tcGFyZS50eXBlV2VpZ2h0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzQ29tcGFyZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5
cGUuX2V4cG9ydEFsbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9w
ZXJ0aWVzU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVz
U2VjdGlvbi5wcm90b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbnRleHRNZW51
RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2Z1bmN0aW9uQ29udGV4dE1lbnVFdmVudEZpcmVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BhcnNlZFVSTC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5QYXJzZWRVUkwuY29tcGxldGVVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhcnNlZFVS
TC5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRQYWdlRG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kaXNwbGF5RG9tYWluKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51
RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VVdGlscy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxlQ29udGV4
dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3Iu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3RvdHlw
ZS5oYW5kbGVDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JT
b3VyY2VGcmFtZS5wcm90b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5
cGUuY3JlYXRlTGluayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9UYWJiZWRQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmVUYWIu
cHJvdG90eXBlLl90YWJDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0
ZS5wcm90b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGUucHJvdG90eXBlLmNyZWF0ZUxpbmspOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5
cGUuZ2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VUlVdGlscy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lv
bnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25U
cmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2V4dGVybnMuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisKIDIwMTItMDgtMjMgIEpvaG4gR3JpZ2dzICA8amdyaWdnc0ByaW0uY29tPgog
CiAgICAgICAgICAgICAgICAgUmVwbGFjZSBhY2Nlc3Mgb3QgSFRNTE1lZGlhRWxlbWVudCBmcm9t
IE1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkgd2l0aCBtZXRob2RzIGluIE1lZGlhUGxheWVy
Q2xpZW50IC0gdXBkYXRlZCB3aXRoIG5vdGVzIGZyb20gaW5pdGlhbCByZXZpZXdzLiAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjkxCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCmluZGV4IDU3
ZjU3YWQ4NWIwYTlhZDI1Y2IzNzNlYzY3ZTVkZmVmNTBlYTllYWUuLjU2YjVlOThlY2E1MjYxNmMx
MGNjMGVhMzdiMjc2Zjk1OGE0YmM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCkBAIC01MCw5ICs1MCw5IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJlc3VsdFZpZXcgPSBmdW5jdGlvbihjYXRlZ29yeVJlc3VsdHMpCiBX
ZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfY29udGV4dE1l
bnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUhyZWZDb250ZXh0TWVudShjb250ZXh0TWVudSwgbnVsbCwgZXZlbnQp
KQotICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMobnVsbCk7CisgICAgICAgIGNvbnRleHRN
ZW51LnNob3coKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCAwYzJj
ZjM0NGJjNmM0ZDg5OWE0ODUyMmVmYTljZDMzYWRiMmUxNzkyLi4yOTRjZjYwMjI0NzNhMGNmZjAy
NjU5MWI3N2FjNTFhMDI5NDExYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC0xNjYs
NyArMTY2LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfYnJlYWtwb2ludENvbnRleHRNZW51OiBmdW5j
dGlvbihicmVha3BvaW50LCBldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludCIp
LCBicmVha3BvaW50LnJlbW92ZS5iaW5kKGJyZWFrcG9pbnQpKTsKICAgICAgICAgdmFyIHJlbW92
ZUFsbFRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNh
c2VNZW51VGl0bGVzKCkgPyAiUmVtb3ZlIGFsbCBicmVha3BvaW50cyIgOiAiUmVtb3ZlIEFsbCBC
cmVha3BvaW50cyIpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKHJlbW92ZUFsbFRp
dGxlLCB0aGlzLl9icmVha3BvaW50TWFuYWdlci5yZW1vdmVBbGxCcmVha3BvaW50cy5iaW5kKHRo
aXMuX2JyZWFrcG9pbnRNYW5hZ2VyKSk7CkBAIC0xOTYsNyArMTk2LDcgQEAgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oZGlzYWJsZVRpdGxlLCB0aGlzLl9icmVha3BvaW50
TWFuYWdlci50b2dnbGVBbGxCcmVha3BvaW50cy5iaW5kKHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2Vy
LCBmYWxzZSksICEoZW5hYmxlQnJlYWtwb2ludENvdW50ID4gMSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3co
KTsKICAgICB9LAogCiAgICAgX2FkZExpc3RFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50LCBiZWZv
cmVFbGVtZW50KQpAQCAtMzQ1LDE0ICszNDUsMTQgQEAgV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9p
bnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlv
bih1cmwsIGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQnJl
YWtwb2ludCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQo
dXJsKTsKICAgICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwogICAgICAgICB9CiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1v
dmUgQnJlYWtwb2ludCIpLCByZW1vdmVCcmVha3BvaW50LmJpbmQodGhpcykpOwotICAgICAgICBj
b250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAg
IH0sCiAKICAgICBfY2hlY2tib3hDbGlja2VkOiBmdW5jdGlvbih1cmwsIGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lk
ZWJhclBhbmUuanMKaW5kZXggNmFiM2VjODYyNzUyYzYzNDZkNzk1ODE4NTdhMDgwMTc1MjZhZWI5
ZS4uODBlZWJmYWQ2NzhjYTNjNjg5NDJjZTY5M2YxMGVmNDVjMDkxMjk3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGVi
YXJQYW5lLmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGVi
YXJQYW5lLlBsYWNhcmQucHJvdG90eXBlID0gewogCiAgICAgX3BsYWNhcmRDb250ZXh0TWVudTog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jYW5TZXRTY3JpcHRTb3VyY2UoKSkgewogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3RhcnQgRnJhbWUi
KSwgdGhpcy5fcmVzdGFydEZyYW1lLmJpbmQodGhpcykpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFdl
Ykluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29weSBTdGFjayBUcmFjZSIpLCB0aGlzLl9wYW5lLl9jb3B5U3RhY2tUcmFjZS5iaW5k
KHRoaXMuX3BhbmUpKTsKIAotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAg
ICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfcmVzdGFydEZyYW1lOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlTWVzc2FnZS5qcwppbmRleCA5NWUyMTdiODA5ZTQ4NzA3ZmIyZTgyNTE1YTMwNDQ3MWU5MTQz
ZGJhLi5mMjkwYTZiYWRjYWM1ZTY5NjVhMzhlM2YwYmY2ZTc3NjRhZmMzMTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMK
QEAgLTcxNSw3ICs3MTUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBjbG9uZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGUodGhpcy5zb3VyY2UsIHRo
aXMubGV2ZWwsIHRoaXMuX21lc3NhZ2VUZXh0LCB0aGlzLnR5cGUsIHRoaXMudXJsLCB0aGlzLmxp
bmUsIHRoaXMucmVwZWF0Q291bnQsIHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMuX3N0YWNrVHJhY2Us
IHRoaXMuX3JlcXVlc3RJZCwgdGhpcy5faXNPdXRkYXRlZCk7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlKHRoaXMuc291cmNlLCB0aGlzLmxldmVsLCB0
aGlzLl9tZXNzYWdlVGV4dCwgdGhpcy50eXBlLCB0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLnJl
cGVhdENvdW50LCB0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9zdGFja1RyYWNlLCB0aGlzLl9yZXF1
ZXN0ID8gdGhpcy5fcmVxdWVzdC5yZXF1ZXN0SWQgOiB1bmRlZmluZWQsIHRoaXMuX2lzT3V0ZGF0
ZWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKaW5kZXggNzBlZjhlNGY2MjljODA0NDExNjViN2NjOWJjMDFhOWQz
MzZhN2Q3ZS4uMjE2YWZkMDVkMGUwM2RhYTgxYmUwY2Y0NTZmNDk1M2U4Zjg5OTU0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBA
IC01NTAsMTAgKzU1MCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29udGV4dE1l
bnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7Ci0KLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUhyZWZDb250ZXh0TWVudShjb250ZXh0TWVudSwgbnVsbCwgZXZlbnQp
KQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMobnVsbCk7CiAKICAgICAgICAg
ZnVuY3Rpb24gbW9uaXRvcmluZ1hIUkl0ZW1BY3Rpb24oKQogICAgICAgICB7CkBAIC01NjksNyAr
NTY3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1l
bnVUaXRsZXMoKSA/ICJDbGVhciBjb25zb2xlIiA6ICJDbGVhciBDb25zb2xlIiksIHRoaXMuX3Jl
cXVlc3RDbGVhck1lc3NhZ2VzLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93
KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfbW9u
aXRvcmluZ1hIUkVuYWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcwppbmRleCA2
ODIxYzRhOWE1MGRhODc1NTBiNjEzYjVkMDkyYzZlZjhkYTVmYjA0Li42Nzk2NGMzMDcwMzY0YTU5
YjY5MDczY2U1YjllOGE3MjJjN2RlOTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMKQEAgLTE1MSw5ICsxNTEsMTEgQEAgV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51SXQKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbX0KKyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CiAg
Ki8KLVdlYkluc3BlY3Rvci5Db250ZXh0TWVudSA9IGZ1bmN0aW9uKCkgeworV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICBXZWJJbnNwZWN0b3IuQ29udGV4
dFN1Yk1lbnVJdGVtLmNhbGwodGhpcywgdGhpcywgIiIpOworICAgIHRoaXMuX2V2ZW50ID0gZXZl
bnQ7CiAgICAgdGhpcy5faGFuZGxlcnMgPSB7fTsKICAgICB0aGlzLl9pZCA9IDA7CiB9CkBAIC0x
NjQsMTUgKzE2NiwxNSBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdGhpcy5faWQrKzsKICAgICB9LAogCi0gICAgc2hvdzogZnVuY3Rpb24o
ZXZlbnQpCisgICAgc2hvdzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIG1lbnVPYmpl
Y3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsKIAogICAgICAgICBpZiAobWVudU9iamVjdC5s
ZW5ndGgpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5fY29udGV4dE1lbnUgPSB0aGlzOwot
ICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250ZXh0TWVudShldmVudCwg
bWVudU9iamVjdCk7CisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2hvd0NvbnRl
eHRNZW51KHRoaXMuX2V2ZW50LCBtZW51T2JqZWN0KTsKKyAgICAgICAgICAgIHRoaXMuX2V2ZW50
LmNvbnN1bWUoKTsKICAgICAgICAgfQotICAgICAgICBldmVudC5jb25zdW1lKCk7CiAgICAgfSwK
IAogICAgIF9zZXRIYW5kbGVyOiBmdW5jdGlvbihpZCwgaGFuZGxlcikKQEAgLTIwMyw3ICsyMDUs
NyBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUuX3Byb3ZpZGVyc1tpXTsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kU2VwYXJhdG9yKCk7
Ci0gICAgICAgICAgICBwcm92aWRlci5hcHBlbmRBcHBsaWNhYmxlSXRlbXModGhpcywgdGFyZ2V0
KTsKKyAgICAgICAgICAgIHByb3ZpZGVyLmFwcGVuZEFwcGxpY2FibGVJdGVtcyh0aGlzLCB0YXJn
ZXQsIHRoaXMuX2V2ZW50KTsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kU2VwYXJhdG9yKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjEsOCArMjIzLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LlByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAvKiogCiAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51CiAgICAgICogQHBhcmFtIHtPYmplY3R9
IHRhcmdldAorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CiAgICAgICovCi0gICAgYXBwZW5k
QXBwbGljYWJsZUl0ZW1zOiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGFyZ2V0KSB7IH0KKyAgICBh
cHBlbmRBcHBsaWNhYmxlSXRlbXM6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB0YXJnZXQsIGV2ZW50
KSB7IH0KIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCmluZGV4IDE2OThkMzI1Mzc4ZDc4OWRjY2FkYjM0NTU1
MzBiOTZlODkxYTI3ZDYuLjVjMDFlNTgyZmFiOTMwNDVhNzU3ZDhmYTQzMWE5ODc0YTk5NWIyNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRl
bXNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2ll
SXRlbXNWaWV3LmpzCkBAIC0xNTEsOSArMTUxLDkgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1z
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fY29va2llcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAg
ICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQp
OwogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlZnJlc2giKSwgdGhpcy5fdXBkYXRlLmJpbmQodGhpcykpOwotICAgICAgICAgICAgY29u
dGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKaW5kZXggYWJk
NzViYWNhZDE4Nzk5NWIzOTQzOTk5YjcxMTE3YjExMGFiMzE5My4uNmMyMmQ3Yzg1OTc1NDAxNjE5
NjcyODJiZDI2M2ZhOTZmNGRlNjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwpA
QCAtMjM2LDcgKzIzNiw3IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50c1NpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24obm9kZSwgdHlwZSwg
ZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICBmdW5jdGlvbiByZW1vdmVCcmVha3BvaW50
KCkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChub2RlLCB0
eXBlKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludHNTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBCcmVha3BvaW50IiksIHJlbW92
ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVz
KCkgPyAiUmVtb3ZlIGFsbCBET00gYnJlYWtwb2ludHMiIDogIlJlbW92ZSBBbGwgRE9NIEJyZWFr
cG9pbnRzIiksIHRoaXMuX3JlbW92ZUFsbEJyZWFrcG9pbnRzLmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwog
ICAgIH0sCiAKICAgICBfY2hlY2tib3hDbGlja2VkOiBmdW5jdGlvbihub2RlLCB0eXBlLCBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NUHJl
c2VudGF0aW9uVXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TVByZXNlbnRhdGlvblV0aWxzLmpzCmluZGV4IDE1MGZjNWY3NDlmMjM4OWQ4MTdjYzhhMWIxNzgy
NTMyZWJjN2FmMTEuLjkwNWI3OGY5ZjdhYmZiZmE5ZjRhOTZjMzQ2N2NhYzA1Njk2NGMzNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NUHJlc2VudGF0
aW9uVXRpbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01Q
cmVzZW50YXRpb25VdGlscy5qcwpAQCAtOTYsMyArOTYsNTEgQEAgV2ViSW5zcGVjdG9yLkRPTVBy
ZXNlbnRhdGlvblV0aWxzLmxpbmtpZnlOb2RlQnlJZCA9IGZ1bmN0aW9uKG5vZGVJZCkKICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
PG5vZGU+IikpOwogICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMu
bGlua2lmeU5vZGVSZWZlcmVuY2Uobm9kZSk7CiB9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9
IGltYWdlVVJMCisgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3dEaW1lbnNpb25zCisgKiBAcGFyYW0g
e2Z1bmN0aW9uKEVsZW1lbnQ9KX0gdXNlckNhbGxiYWNrCisgKiBAcGFyYW0ge09iamVjdD19IHBy
ZWNvbXB1dGVkRGltZW5zaW9ucworICovCitXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRp
bHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cyA9IGZ1bmN0aW9uKGltYWdlVVJMLCBzaG93RGlt
ZW5zaW9ucywgdXNlckNhbGxiYWNrLCBwcmVjb21wdXRlZERpbWVuc2lvbnMpCit7CisgICAgdmFy
IHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJM
KGltYWdlVVJMKTsKKyAgICBpZiAoIXJlc291cmNlKSB7CisgICAgICAgIHVzZXJDYWxsYmFjaygp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGltYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgIGltYWdlRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgYnVpbGRDb250ZW50LCBmYWxzZSk7CisgICAgaW1hZ2VFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImVycm9yIiwgZXJyb3JDYWxsYmFjaywgZmFsc2UpOworICAgIHJlc291cmNl
LnBvcHVsYXRlSW1hZ2VTb3VyY2UoaW1hZ2VFbGVtZW50KTsKKworICAgIGZ1bmN0aW9uIGVycm9y
Q2FsbGJhY2soKQorICAgIHsKKyAgICAgICAgLy8gRHJvcCB0aGUgZXZlbnQgcGFyYW1ldGVyIHdo
ZW4gaW52b2tpbmcgdXNlckNhbGxiYWNrLgorICAgICAgICB1c2VyQ2FsbGJhY2soKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBidWlsZENvbnRlbnQoKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgIGNvbnRhaW5l
ci5jbGFzc05hbWUgPSAiaW1hZ2UtcHJldmlldy1jb250YWluZXIiOworICAgICAgICB2YXIgbmF0
dXJhbFdpZHRoID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25z
Lm5hdHVyYWxXaWR0aCA6IGltYWdlRWxlbWVudC5uYXR1cmFsV2lkdGg7CisgICAgICAgIHZhciBu
YXR1cmFsSGVpZ2h0ID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNp
b25zLm5hdHVyYWxIZWlnaHQgOiBpbWFnZUVsZW1lbnQubmF0dXJhbEhlaWdodDsKKyAgICAgICAg
dmFyIG9mZnNldFdpZHRoID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1l
bnNpb25zLm9mZnNldFdpZHRoIDogbmF0dXJhbFdpZHRoOworICAgICAgICB2YXIgb2Zmc2V0SGVp
Z2h0ID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm9mZnNl
dEhlaWdodCA6IG5hdHVyYWxIZWlnaHQ7CisgICAgICAgIHZhciBkZXNjcmlwdGlvbjsKKyAgICAg
ICAgaWYgKHNob3dEaW1lbnNpb25zKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0SGVpZ2h0ID09
PSBuYXR1cmFsSGVpZ2h0ICYmIG9mZnNldFdpZHRoID09PSBuYXR1cmFsV2lkdGgpCisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb24gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQg
cGl4ZWxzIiwgb2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4
ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3ICVkIHBpeGVscykiLCBvZmZzZXRXaWR0aCwg
b2Zmc2V0SGVpZ2h0LCBuYXR1cmFsV2lkdGgsIG5hdHVyYWxIZWlnaHQpOworICAgICAgICB9CisK
KyAgICAgICAgY29udGFpbmVyLmNyZWF0ZUNoaWxkKCJ0ciIpLmNyZWF0ZUNoaWxkKCJ0ZCIsICJp
bWFnZS1jb250YWluZXIiKS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAgICAgICBpZiAo
ZGVzY3JpcHRpb24pCisgICAgICAgICAgICBjb250YWluZXIuY3JlYXRlQ2hpbGQoInRyIikuY3Jl
YXRlQ2hpbGQoInRkIikuY3JlYXRlQ2hpbGQoInNwYW4iLCAiZGVzY3JpcHRpb24iKS50ZXh0Q29u
dGVudCA9IGRlc2NyaXB0aW9uOworICAgICAgICB1c2VyQ2FsbGJhY2soY29udGFpbmVyKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rh
dGFHcmlkLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5q
cwppbmRleCAwOTc5MGY1ZTIxODc5ZTNkYjVjMmY5YzU3YWVjNDQ3YmYzZGUzOGI2Li5hNmZlZDA1
YjY4OWIyNTk5ZGYzZWI5NDQ5N2E3ZWY1MjZkY2ExZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMKQEAgLTg3OCw3ICs4NzgsNyBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51SW5EYXRh
VGFibGU6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKIAogICAgICAgICB2YXIgZ3Jp
ZE5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAg
IGlmICh0aGlzLl9yZWZyZXNoQ2FsbGJhY2sgJiYgKCFncmlkTm9kZSB8fCBncmlkTm9kZSAhPT0g
dGhpcy5jcmVhdGlvbk5vZGUpKQpAQCAtODk2LDcgKzg5Niw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSIpLCB0aGlzLl9kZWxldGVDYWxsYmFjay5i
aW5kKHRoaXMsIGdyaWROb2RlKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0TWVudS5z
aG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBf
Y2xpY2tJbkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCAwYjU2
OTgwZDE4ODRiZWNmZTQyN2I2OGVmYjc1OTlkODUwYjkxZDVjLi42ODQ4NDE5MGFhNzhjYzJiZmMw
MzM1Mjc4YTM2ZDE2OTQwODU0OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTU1LDcgKzU1LDcgQEAg
V2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yID0gZnVuY3Rpb24odXJsLCBkZWxlZ2F0ZSkK
ICAgICB2YXIgc3luY1Njcm9sbExpc3RlbmVyID0gdGhpcy5fc3luY1Njcm9sbC5iaW5kKHRoaXMp
OwogICAgIHZhciBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlzdGVuZXIgPSB0aGlzLl9zeW5jRGVj
b3JhdGlvbnNGb3JMaW5lLmJpbmQodGhpcyk7CiAgICAgdmFyIHN5bmNMaW5lSGVpZ2h0TGlzdGVu
ZXIgPSB0aGlzLl9zeW5jTGluZUhlaWdodC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX21haW5QYW5l
bCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCh0aGlzLl90ZXh0TW9kZWws
IHVybCwgc3luY1Njcm9sbExpc3RlbmVyLCBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlzdGVuZXIs
IGVudGVyVGV4dENoYW5nZU1vZGUsIGV4aXRUZXh0Q2hhbmdlTW9kZSk7CisgICAgdGhpcy5fbWFp
blBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKHRoaXMuX2RlbGVn
YXRlLCB0aGlzLl90ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9sbExpc3RlbmVyLCBzeW5jRGVjb3Jh
dGlvbnNGb3JMaW5lTGlzdGVuZXIsIGVudGVyVGV4dENoYW5nZU1vZGUsIGV4aXRUZXh0Q2hhbmdl
TW9kZSk7CiAgICAgdGhpcy5fZ3V0dGVyUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JHdXR0ZXJQYW5lbCh0aGlzLl90ZXh0TW9kZWwsIHN5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0
ZW5lciwgc3luY0xpbmVIZWlnaHRMaXN0ZW5lcik7CiAKICAgICB0aGlzLl9tYWluUGFuZWwuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9oYW5kbGVTY3JvbGxDaGFuZ2Vk
LmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBXZWJJbnNwZWN0b3IuRGVm
YXVsdFRleHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJn
ZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWxpbmUtbnVtYmVyIik7CiAg
ICAgICAgIGlmICh0YXJnZXQpCiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5wb3B1bGF0ZUxp
bmVHdXR0ZXJDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGFyZ2V0LmxpbmVOdW1iZXIpOwpAQCAt
NDIxLDcgKzQyMSw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9tYWluUGFuZWwuX2VuY2xvc2luZ0xpbmVS
b3dPclNlbGYoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnBvcHVs
YXRlVGV4dEFyZWFDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGFyZ2V0ICYmIHRhcmdldC5saW5l
TnVtYmVyKTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAg
ICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfaGFuZGxlU2Nyb2xsQ2hh
bmdlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xMjA4LDEzICsxMjA4LDE1IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yR3V0dGVyQ2h1bmsucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNodW5rZWRQYW5lbH0KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZX0gZGVsZWdhdGUKICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbH0gdGV4dE1vZGVsCiAgKiBAcGFyYW0g
ez9zdHJpbmd9IHVybAogICovCi1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCA9IGZ1
bmN0aW9uKHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsTGlzdGVuZXIsIHN5bmNEZWNvcmF0aW9u
c0ZvckxpbmVMaXN0ZW5lciwgZW50ZXJUZXh0Q2hhbmdlTW9kZSwgZXhpdFRleHRDaGFuZ2VNb2Rl
KQorV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwg
dGV4dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGxMaXN0ZW5lciwgc3luY0RlY29yYXRpb25zRm9yTGlu
ZUxpc3RlbmVyLCBlbnRlclRleHRDaGFuZ2VNb2RlLCBleGl0VGV4dENoYW5nZU1vZGUpCiB7CiAg
ICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwuY2FsbCh0aGlzLCB0ZXh0TW9k
ZWwpOwogCisgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICB0aGlzLl9zeW5jU2Ny
b2xsTGlzdGVuZXIgPSBzeW5jU2Nyb2xsTGlzdGVuZXI7CiAgICAgdGhpcy5fc3luY0RlY29yYXRp
b25zRm9yTGluZUxpc3RlbmVyID0gc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3RlbmVyOwogICAg
IHRoaXMuX2VudGVyVGV4dENoYW5nZU1vZGUgPSBlbnRlclRleHRDaGFuZ2VNb2RlOwpAQCAtMjA5
MSwyOCArMjA5MywxNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHF1b3RlID0gbnVsbDsKIAotICAgICAg
ICB2YXIgYSA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHRoaXMuX3Jld3JpdGVIcmVm
KGNvbnRlbnQpLCBjb250ZW50LCB1bmRlZmluZWQsIGlzRXh0ZXJuYWwpOwogICAgICAgICB2YXIg
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgc3Bhbi5jbGFz
c05hbWUgPSAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIjsKICAgICAgICAgaWYgKHF1b3Rl
KQogICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShx
dW90ZSkpOwotICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGEpOworICAgICAgICBzcGFuLmFwcGVu
ZENoaWxkKHRoaXMuX2RlbGVnYXRlLmNyZWF0ZUxpbmsoY29udGVudCwgaXNFeHRlcm5hbCkpOwog
ICAgICAgICBpZiAocXVvdGUpCiAgICAgICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHF1b3RlKSk7CiAgICAgICAgIHJldHVybiBzcGFuOwogICAgIH0sCiAK
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IGhyZWZWYWx1ZQotICAgICAqIEBwYXJh
bSB7Ym9vbGVhbj19IGlzRXh0ZXJuYWwKLSAgICAgKi8KLSAgICBfcmV3cml0ZUhyZWY6IGZ1bmN0
aW9uKGhyZWZWYWx1ZSwgaXNFeHRlcm5hbCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdXJs
IHx8ICFocmVmVmFsdWUgfHwgaHJlZlZhbHVlLmluZGV4T2YoIjovLyIpID4gMCkKLSAgICAgICAg
ICAgIHJldHVybiBocmVmVmFsdWU7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUGFyc2Vk
VVJMLmNvbXBsZXRlVVJMKHRoaXMuX3VybCwgaHJlZlZhbHVlKTsKLSAgICB9LAotCiAgICAgX2hh
bmRsZURPTVVwZGF0ZXM6IGZ1bmN0aW9uKGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZG9t
VXBkYXRlQ29hbGVzY2luZ0xldmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGNkYzhmNTM1YzU4ZGMwYjU3MDRhNmY3
YWViYTM1MzBhMzg4MmU2MGEuLmI2ZWNkOWI2ODNkYWU5NDBhNmUyNjAyMjMyMzFkNzBiYjdmOTIx
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMKQEAgLTMzNCwxMyArMzM0LDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5kb21X
b3JkV3JhcC5zZXQoIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5kb21Xb3JkV3JhcC5nZXQoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51KCk7Ci0gICAgICAgIHZhciBwb3B1bGF0ZWQgPSB0aGlzLnRyZWVPdXRsaW5lLnBv
cHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KTsKLSAgICAgICAgaWYgKHBvcHVs
YXRlZCkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAg
ICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsK
KyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51
LCBldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdl
Ykluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiV29yZCB3cmFwIiA6ICJXb3Jk
IFdyYXAiKSwgdG9nZ2xlV29yZFdyYXAuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmRvbVdvcmRXcmFwLmdldCgpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
KyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfZG9tV29yZFdyYXBT
ZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC00MzMsOSArNDMxLDkgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGxp
c3RJdGVtID0gYW5jaG9yLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoImxpIik7CiAg
ICAgICAgIGlmIChsaXN0SXRlbSAmJiBsaXN0SXRlbS50cmVlRWxlbWVudCkKLSAgICAgICAgICAg
IHRoaXMuX2xvYWREaW1lbnNpb25zRm9yTm9kZShsaXN0SXRlbS50cmVlRWxlbWVudCwgV2ViSW5z
cGVjdG9yLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHMuYmluZChXZWJJbnNwZWN0b3IsIGFuY2hv
ci5ocmVmLCB0cnVlLCBzaG93UG9wb3ZlcikpOworICAgICAgICAgICAgdGhpcy5fbG9hZERpbWVu
c2lvbnNGb3JOb2RlKGxpc3RJdGVtLnRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuRE9NUHJlc2Vu
dGF0aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cy5iaW5kKFdlYkluc3BlY3Rvci5E
T01QcmVzZW50YXRpb25VdGlscywgYW5jaG9yLmhyZWYsIHRydWUsIHNob3dQb3BvdmVyKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5idWlsZEltYWdlUHJldmlld0Nv
bnRlbnRzKGFuY2hvci5ocmVmLCB0cnVlLCBzaG93UG9wb3Zlcik7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cyhh
bmNob3IuaHJlZiwgdHJ1ZSwgc2hvd1BvcG92ZXIpOwogCiAgICAgICAgIC8qKgogICAgICAgICAg
KiBAcGFyYW0ge0VsZW1lbnQ9fSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IGZhM2Jm
ZTk0ZjY0NDE4OWQ2M2I1YjY4ZWY3Yjg3NjBiYzUyYzU2YmIuLmU3N2EwMjE1NzY4YjBlNzc0Mzcx
NGY3MjAxMjk4ZTdiMDNiYzM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTQ2Nyw5ICs0Njcs
OSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5pbnNwZWN0RWxlbWVudCh0
cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5pZCk7CiAgICAgICAgIH0KLSAgICAgICAgdmFy
IGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2
YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVh
bCBpbiBFbGVtZW50cyBQYW5lbCIpLCBmb2N1c0VsZW1lbnQuYmluZCh0aGlzKSk7Ci0gICAgICAg
IGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAg
ICAgfSwKIAogICAgIHBvcHVsYXRlQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBl
dmVudCkKQEAgLTQ4MywyNSArNDgzLDE3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRs
aW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRleHROb2RlICYmIHRleHROb2RlLmhhc1N0
eWxlQ2xhc3MoImJvZ3VzIikpCiAgICAgICAgICAgICB0ZXh0Tm9kZSA9IG51bGw7CiAgICAgICAg
IHZhciBjb21tZW50Tm9kZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENs
YXNzKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7Ci0gICAgICAgIHZhciBwb3B1bGF0ZWQgPSBXZWJJ
bnNwZWN0b3IucG9wdWxhdGVIcmVmQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRoaXMuc2VsZWN0
ZWRET01Ob2RlKCksIGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQXBwbGljYWJs
ZUl0ZW1zKHRoaXMuc2VsZWN0ZWRET01Ob2RlKCkpOwogICAgICAgICBpZiAodGV4dE5vZGUgJiYg
dHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBpZiAo
cG9wdWxhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigp
OworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgICAg
ICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHRO
b2RlKTsKLSAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNUYWcgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpIHsKLSAgICAgICAg
ICAgIGlmIChwb3B1bGF0ZWQpCi0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAg
ICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51
LCBldmVudCk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
aWYgKGNvbW1lbnROb2RlICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudSkg
ewotICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFy
YXRvcigpOwogICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51
KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwog
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHBvcHVsYXRlZDsKICAgICB9LAogCiAgICAgYWRq
dXN0Q29sbGFwc2VkUmFuZ2U6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMKaW5kZXggODRhZTdmZGE1OTUx
MDBlOTRmYTdmNWEwZmUxZTA3ZmJiYjY4Y2JlYi4uZjNiYTEyZDU2ZmI4MGI3MWQyYmIyOGI4ZTBh
NmVmN2ViZTkxNTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMKQEAgLTkzLDggKzkzLDE5IEBAIFdlYkluc3BlY3Rv
ci5IYW5kbGVyUmVnaXN0cnkucHJvdG90eXBlID0gewogICAgIC8qKiAKICAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5Db250ZXh0TWVudX0gY29udGV4dE1lbnUKICAgICAgKiBAcGFyYW0ge09i
amVjdH0gdGFyZ2V0CisgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKICAgICAgKi8KLSAgICBh
cHBlbmRBcHBsaWNhYmxlSXRlbXM6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB0YXJnZXQpCisgICAg
YXBwZW5kQXBwbGljYWJsZUl0ZW1zOiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGFyZ2V0LCBldmVu
dCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FwcGVuZENvbnRlbnRQcm92aWRlckl0ZW1zKGNvbnRl
eHRNZW51LCB0YXJnZXQpOworICAgICAgICB0aGlzLl9hcHBlbmRIcmVmSXRlbXMoY29udGV4dE1l
bnUsIHRhcmdldCwgZXZlbnQpOworICAgIH0sCisKKyAgICAvKiogCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51CisgICAgICogQHBhcmFtIHtPYmpl
Y3R9IHRhcmdldAorICAgICAqLworICAgIF9hcHBlbmRDb250ZW50UHJvdmlkZXJJdGVtczogZnVu
Y3Rpb24oY29udGV4dE1lbnUsIHRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICghKHRhcmdldCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUgfHwgdGFyZ2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDAsNiArMTUxLDMwIEBA
IFdlYkluc3BlY3Rvci5IYW5kbGVyUmVnaXN0cnkucHJvdG90eXBlID0gewogICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNhdmUiKSwgc2F2ZS5iaW5kKHRoaXMsIGZhbHNlKSk7
CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdl
Ykluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiU2F2ZSBhcy4uLiIgOiAiU2F2
ZSBBcy4uLiIpLCBzYXZlLmJpbmQodGhpcywgdHJ1ZSkpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db250ZXh0TWVudX0gY29udGV4dE1lbnUKKyAgICAg
KiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0CisgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAg
ICAgKi8KKyAgICBfYXBwZW5kSHJlZkl0ZW1zOiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGFyZ2V0
LCBldmVudCkKKyAgICB7CisgICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXJlc291cmNlLWxpbmsi
KSB8fCBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0
bWwtZXh0ZXJuYWwtbGluayIpOworICAgICAgICBpZiAoIWFuY2hvckVsZW1lbnQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkRPTU5vZGUpKQorICAgICAgICAgICAgdGFyZ2V0ID0gbnVsbDsKKyAgICAgICAgdmFyIHJl
c291cmNlVVJMID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMRm9yUmVsYXRlZE5vZGUodGFyZ2V0
LCBhbmNob3JFbGVtZW50LmhyZWYpOworICAgICAgICBpZiAoIXJlc291cmNlVVJMKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEFkZCByZXNvdXJjZS1yZWxhdGVkIGFjdGlvbnMu
CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLm9wZW5MaW5rRXh0
ZXJuYWxseUxhYmVsKCksIFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UuYmluZChXZWJJbnNwZWN0
b3IsIHJlc291cmNlVVJMLCBmYWxzZSkpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlc291
cmNlRm9yVVJMKHJlc291cmNlVVJMKSkKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0
bGVzKCkgPyAiT3BlbiBsaW5rIGluIFJlc291cmNlcyBwYW5lbCIgOiAiT3BlbiBMaW5rIGluIFJl
c291cmNlcyBQYW5lbCIpLCBXZWJJbnNwZWN0b3Iub3BlblJlc291cmNlLmJpbmQobnVsbCwgcmVz
b3VyY2VVUkwsIHRydWUpKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuY29weUxpbmtBZGRyZXNzTGFiZWwoKSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvcHlU
ZXh0LmJpbmQoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LCByZXNvdXJjZVVSTCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcwpp
bmRleCA3YjVjZjEzZTBlOWVlNGRlYWIyYzRkNTM1YjA1MzU3MDk3MDUyMzVlLi5hMDZkMTBhNzZh
ZDlkNWYzYTk1N2VkNTI5MGRmYzBkNTJiMWZlNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcwpAQCAtMTI2LDEwICsxMjYsMTAgQEAgV2Vi
SW5zcGVjdG9yLkltYWdlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfY29udGV4dE1lbnU6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVU
aXRsZXMoKSA/ICJDb3B5IGltYWdlIFVSTCIgOiAiQ29weSBJbWFnZSBVUkwiKSwgdGhpcy5fY29w
eUltYWdlVVJMLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdl
Ykluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygp
ID8gIk9wZW4gaW1hZ2UgaW4gbmV3IHRhYiIgOiAiT3BlbiBJbWFnZSBpbiBOZXcgVGFiIiksIHRo
aXMuX29wZW5Jbk5ld1RhYi5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhl
dmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2NvcHlJ
bWFnZVVSTDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvclZpZXcuanMKaW5kZXggYjUyMWE5ZDFkY2ZmZjRjN2EwMDlk
ZjM4Yjc2M2ZlMWYzNzI2ZjJiOC4uZTM1ZjkyYmQ4M2M2YTcwYWViYjIzNzM1MzQwODUzNWJjZmIy
Y2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5z
cGVjdG9yVmlldy5qcwpAQCAtOTEsNiArOTEsOSBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwYW5lbDsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlBhbmVsfQorICAgICAqLwogICAgIGN1cnJl
bnRQYW5lbDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQ
YW5lbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2
aWdhdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdh
dG9yVmlldy5qcwppbmRleCBhMDIyMTc0NzQzMWJjYmJlYjBlYTI4YjNiNDk5MGM4OTM4N2RiNmZj
Li44NDYxMThiMmViNjgzNDJlOTgxODg3YTQ2YmVhOGNmZTcwN2UxMDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCkBAIC0z
NDQsOSArMzQ0LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvclZpZXcucHJvdG90eXBlID0gewog
CiAgICAgaGFuZGxlQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50LCB1aVNvdXJjZUNvZGUpCiAg
ICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUoZXZlbnQpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMo
dWlTb3VyY2VDb2RlKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAg
IGNvbnRleHRNZW51LnNob3coKTsKICAgICB9CiB9CiAKQEAgLTM3OCw3ICszNzgsNyBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmUgPSBmdW5j
dGlvbiBjb21wYXJlKHRyZWVFbAogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50KSB7CiAgICAgICAg
ICAgICBpZiAodHJlZUVsZW1lbnQuaXNEb21haW4pIHsKLSAgICAgICAgICAgICAgICBpZiAodHJl
ZUVsZW1lbnQudGl0bGVUZXh0ID09PSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbikK
KyAgICAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQudGl0bGVUZXh0ID09PSBXZWJJbnNwZWN0
b3IuaW5zcGVjdGVkUGFnZURvbWFpbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgICAgIH0KQEAgLTU0OSw3ICs1NDks
NyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
QmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwot
ICAgICAgICBpZiAodGhpcy5pc0RvbWFpbiAmJiB0aGlzLnRpdGxlVGV4dCAhPSBXZWJJbnNwZWN0
b3IuaW5zcGVjdGVkUGFnZURvbWFpbikKKyAgICAgICAgaWYgKHRoaXMuaXNEb21haW4gJiYgdGhp
cy50aXRsZVRleHQgIT0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4oKSkKICAgICAg
ICAgICAgIHRoaXMuY29sbGFwc2UoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5l
eHBhbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrUGFuZWwuanMKaW5kZXggYjBiMTFlMDExZmMyMWJiNzVmODIyZWQ3ZDg4OGRmZWQ3YThmNTg1
OC4uZWZmNzIzNTJjYWI4ODllNzQ1OGQ5NmE3ZTg1YzQ2OGVhNmJiZjQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTkz
NSw3ICs5MzUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewog
CiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBj
b250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFy
IGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAg
ICAgIHZhciBncmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2
ZW50LnRhcmdldCk7CiAgICAgICAgIHZhciByZXF1ZXN0ID0gZ3JpZE5vZGUgJiYgZ3JpZE5vZGUu
X3JlcXVlc3Q7CiAKQEAgLTk2NSw3ICs5NjUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY2FuQ2xlYXJCcm93c2VyQ29va2ll
cykKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ2xlYXIgYnJvd3Nl
ciBjb29raWVzIiA6ICJDbGVhciBCcm93c2VyIENvb2tpZXMiKSwgdGhpcy5fY2xlYXJCcm93c2Vy
Q29va2llcy5iaW5kKHRoaXMpKTsKIAotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
KyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfY29weUFsbDogZnVu
Y3Rpb24oKQpAQCAtMTAwMyw3ICsxMDAzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGxvZzogKG5ldyBXZWJJbnNwZWN0b3IuSEFSTG9n
KHRoaXMuX3JlcXVlc3RzKSkuYnVpbGQoKQogICAgICAgICB9OwogICAgICAgICAKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VE
b21haW4gKyAiLmhhciIsIEpTT04uc3RyaW5naWZ5KGhhckFyY2hpdmUsIG51bGwsIDIpLCB0cnVl
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUoV2ViSW5zcGVjdG9yLmlu
c3BlY3RlZFBhZ2VEb21haW4oKSArICIuaGFyIiwgSlNPTi5zdHJpbmdpZnkoaGFyQXJjaGl2ZSwg
bnVsbCwgMiksIHRydWUpOwogICAgIH0sCiAKICAgICBfZXhwb3J0UmVxdWVzdDogZnVuY3Rpb24o
cmVxdWVzdCkKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAg
Ki8KKyAgICAgKi8gICAgCiAgICAgY2FuRmlsdGVyOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IGYxYzUwNjlkNzk5
Y2JhMmE1NDQ0MjRkN2VkNjUwNGU2NzFiZTg0MDYuLjI0YmY0ODU3MTk0MGU4ZmUwNzY4OGY0YmU2
MDEwZTY0Y2IwOGEwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcwpAQCAtNTgsMTAgKzU4
LDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7
CiAKICAgICBfY29udGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsK
KyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShl
dmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEFwcGxpY2FibGVJdGVtcyh0aGlzLm9i
amVjdCk7CiAgICAgICAgIGlmICghY29udGV4dE1lbnUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
Y29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7
CiAgICAgfSwKIAogICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKQEAgLTI2OSw5ICsyNjksOSBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlLnB1c2hOb2RlVG9Gcm9udGVuZChzZWxlY3RO
b2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gRWxlbWVudHMgUGFuZWwiKSwgcmV2
ZWFsRWxlbWVudC5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7
CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2Z1bmN0aW9uQ29u
dGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKQEAgLTI5MCw5ICsyOTAsOSBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9uRGV0YWlscyh0aGlzLnByb3BlcnR5LnZh
bHVlLm9iamVjdElkLCBkaWRHZXREZXRhaWxzLmJpbmQodGhpcykpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOwor
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2
ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNob3cgZnVuY3Rpb24gZGVmaW5pdGlvbiIpLCByZXZlYWxGdW5jdGlvbi5iaW5kKHRoaXMp
KTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKICAgICB9LAogCiAgICAgdXBkYXRlU2libGluZ3M6IGZ1bmN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFyc2VkVVJMLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYXJzZWRVUkwuanMKaW5kZXggYTA1
YTRjMzk4ZTAyOTEwZTA0Mzk5YmJiYzk3ODEzMGY1YWFjMDVhYy4uOGJlNmQwZmU2NTI2MjlhMzk5
NGFjNjBmODFhYjdjOTg1MTQ1YzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9QYXJzZWRVUkwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9QYXJzZWRVUkwuanMKQEAgLTkxLDcgKzkxLDcgQEAgV2ViSW5zcGVjdG9yLlBh
cnNlZFVSTCA9IGZ1bmN0aW9uKHVybCkKIC8qKgogICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwK
ICAqIEBwYXJhbSB7c3RyaW5nfSBocmVmCi0gKiBAcmV0dXJuIHs/c3RyaW5nfQorICogQHJldHVy
biB7c3RyaW5nfQogICovCiBXZWJJbnNwZWN0b3IuUGFyc2VkVVJMLmNvbXBsZXRlVVJMID0gZnVu
Y3Rpb24oYmFzZVVSTCwgaHJlZikKIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBXZWJJbnNwZWN0b3Iu
UGFyc2VkVVJMLmNvbXBsZXRlVVJMID0gZnVuY3Rpb24oYmFzZVVSTCwgaHJlZikKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gcGFyc2VkVVJMLnNjaGVtZSArICI6Ly8iICsgcGFyc2VkVVJMLmhv
c3QgKyAocGFyc2VkVVJMLnBvcnQgPyAoIjoiICsgcGFyc2VkVVJMLnBvcnQpIDogIiIpICsgcGF0
aDsKICAgICB9Ci0gICAgcmV0dXJuIG51bGw7CisgICAgcmV0dXJuIGhyZWY7CiB9CiAKIFdlYklu
c3BlY3Rvci5QYXJzZWRVUkwucHJvdG90eXBlID0gewpAQCAtMTU3LDcgKzE1Nyw3IEBAIFdlYklu
c3BlY3Rvci5QYXJzZWRVUkwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2Rpc3Bs
YXlOYW1lKQogICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSBXZWJJbnNwZWN0b3IuZGlz
cGxheURvbWFpbih0aGlzLmhvc3QpOwogICAgICAgICBpZiAoIXRoaXMuX2Rpc3BsYXlOYW1lICYm
IHRoaXMudXJsKQotICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlzLnVybC50cmlt
VVJMKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluID8gV2ViSW5zcGVjdG9yLmluc3Bl
Y3RlZFBhZ2VEb21haW4gOiAiIik7CisgICAgICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IHRo
aXMudXJsLnRyaW1VUkwoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4oKSA/IFdlYklu
c3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluKCkgOiAiIik7CiAgICAgICAgIGlmICh0aGlzLl9k
aXNwbGF5TmFtZSA9PT0gIi8iKQogICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlz
LnVybDsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwpAQCAtMTc0LDMgKzE3NCwx
OSBAQCBTdHJpbmcucHJvdG90eXBlLmFzUGFyc2VkVVJMID0gZnVuY3Rpb24oKQogICAgICAgICBy
ZXR1cm4gcGFyc2VkVVJMOwogICAgIHJldHVybiBudWxsOwogfQorCitXZWJJbnNwZWN0b3IuaW5z
cGVjdGVkUGFnZURvbWFpbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgcGFyc2VkVVJMID0gV2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwgJiYgV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VV
UkwuYXNQYXJzZWRVUkwoKTsKKyAgICByZXR1cm4gcGFyc2VkVVJMID8gcGFyc2VkVVJMLmhvc3Qg
OiAiIjsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gaG9zdAorICovCitXZWJJbnNwZWN0
b3IuZGlzcGxheURvbWFpbiA9IGZ1bmN0aW9uKGhvc3QpCit7CisgICAgaWYgKGhvc3QgJiYgKCFX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbigpIHx8IChXZWJJbnNwZWN0b3IuaW5zcGVj
dGVkUGFnZURvbWFpbigpICYmIGhvc3QgIT09IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9t
YWluKCkpKSkKKyAgICAgICAgcmV0dXJuIGhvc3Q7CisgICAgcmV0dXJuICIiOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmlu
ZGV4IDA5YjBmYjk0NGY1MzMwNTAxNTZjMjMzZDk2YjhkYzQ4ZDM0NDE5ZmEuLjcwMTdkYTUyZDEy
MDE2ODcxZmNjMmI1OWYxZjQxODZhYjA5YjdiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTQyNiwxMSArNDI2LDEx
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGVsZW1lbnQudHJlZUVsZW1lbnQuaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3
IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgaWYgKHRoaXMudmlz
aWJsZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90VmlldykKICAgICAg
ICAgICAgIHRoaXMudmlzaWJsZVZpZXcucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwg
ZXZlbnQpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiTG9hZCBwcm9maWxlXHUyMDI2IiksIHRoaXMuX2ZpbGVTZWxlY3RvckVsZW1lbnQuY2xp
Y2suYmluZCh0aGlzLl9maWxlU2VsZWN0b3JFbGVtZW50KSk7Ci0gICAgICAgIGNvbnRleHRNZW51
LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTI0MywxNCArMTI0MywxNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVNpZGViYXJU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMucHJvZmlsZTsK
LSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgp
OworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
KGV2ZW50KTsKICAgICAgICAgaWYgKHByb2ZpbGUuY2FuU2F2ZVRvRmlsZSgpKQogICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNhdmUgcHJv
ZmlsZVx1MjAyNiIpLCBwcm9maWxlLnNhdmVUb0ZpbGUuYmluZChwcm9maWxlKSk7CiAgICAgICAg
IC8vIEZJWE1FOiB1c2UgY29udGV4dCBtZW51IHByb3ZpZGVyCiAgICAgICAgIHZhciBwcm9maWxl
c1BhbmVsID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwuX2luc3RhbmNlOwogICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZCBwcm9maWxl
XHUyMDI2IiksIHByb2ZpbGVzUGFuZWwuX2ZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2suYmluZChw
cm9maWxlc1BhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50KSk7CiAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgcHJvZmlsZSIpLCB0aGlz
Lm9uZGVsZXRlLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
KyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzCmluZGV4IDU0OTA5
YzczMDU2NjE0ZjI5ODk1ZmI4OTRlNTIwNWJkMDllYTc2ZmMuLmJmMjUzMGM4MGMwYzkyODNkYWE3
ZmM3YjRiYTRlMTg4NDAyZjk0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKQEAgLTQ2LDE2ICs0Niw2IEBAIFdlYkluc3Bl
Y3Rvci5mb3JBbGxSZXNvdXJjZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKIH0KIAogLyoqCi0gKiBA
cGFyYW0ge3N0cmluZ30gaG9zdAotICovCi1XZWJJbnNwZWN0b3IuZGlzcGxheURvbWFpbiA9IGZ1
bmN0aW9uKGhvc3QpCi17Ci0gICAgaWYgKGhvc3QgJiYgKCFXZWJJbnNwZWN0b3IuaW5zcGVjdGVk
UGFnZURvbWFpbiB8fCAoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4gJiYgaG9zdCAh
PT0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4pKSkKLSAgICAgICAgcmV0dXJuIGhv
c3Q7Ci0gICAgcmV0dXJuICIiOwotfQotCi0vKioKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKICAq
IEByZXR1cm4ge3N0cmluZ30KICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggOGRkY2QyNTIwOWE0ZjA3ZGM4NzY3
MjBiZGU0YWI5MGM2ZTJhYmUyZi4uMzZmZDE0NTlmZTdhMzNkZGQ4NTNhNzViMWJlN2JkNjlkMzM2
ODE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzCkBAIC0xMjE3LDExICsxMjE3LDExIEBAIFdlYkluc3BlY3Rvci5GcmFt
ZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgX2hhbmRsZUNvbnRleHRN
ZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1l
bnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgaWYg
KHRoaXMuX3Jlc291cmNlLnJlcXVlc3QpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRB
cHBsaWNhYmxlSXRlbXModGhpcy5fcmVzb3VyY2UucmVxdWVzdCk7Ci0gICAgICAgIGNvbnRleHRN
ZW51LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAog
ICAgIF9zZXRCdWJibGVUZXh0OiBmdW5jdGlvbih4KQpAQCAtMTQxNiw5ICsxNDE2LDkgQEAgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9oYW5k
bGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBj
b250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFy
IGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNo
IEluZGV4ZWREQiIpLCB0aGlzLnJlZnJlc2hJbmRleGVkREIuYmluZCh0aGlzKSk7Ci0gICAgICAg
IGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAg
ICAgfSwKIAogICAgIF9jcmVhdGVJbmRleGVkREJNb2RlbDogZnVuY3Rpb24oKQpAQCAtMTUzMCw5
ICsxNTMwLDkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBMaXN0IiksIHRoaXMuX3JlZnJlc2hGaWxl
U3lzdGVtLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAg
ICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfZmlsZVN5c3RlbUFkZGVk
OiBmdW5jdGlvbihldmVudCkKQEAgLTE2MDUsOSArMTYwNSw5IEBAIFdlYkluc3BlY3Rvci5JREJE
YXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9oYW5kbGVDb250ZXh0TWVu
dUV2ZW50OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIEluZGV4ZWREQiIp
LCB0aGlzLl9yZWZyZXNoSW5kZXhlZERCLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVu
dS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAg
ICBfcmVmcmVzaEluZGV4ZWREQjogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKaW5kZXggMmVl
ZWY3M2M3ZDVhOWU5NDVlN2U2NmJmMDU0MjI3ODhiZmFmZTZiOS4uYWM4OTc2NjZmNTMzYzY2ZDY0
MThkOGRjMzliMjQ5ZDU0MzJlNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcwpAQCAtMjIxLDcgKzIyMSw3IEBA
IFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIGhhbmRsZUNvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCwgdWlTb3VyY2VDb2RlKQog
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZSkgewogICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1biIpLCB0aGlz
Ll9oYW5kbGVFdmFsdWF0ZVNuaXBwZXQuYmluZCh0aGlzLCB1aVNvdXJjZUNvZGUpKTsKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5h
bWUiKSwgdGhpcy5faGFuZGxlUmVuYW1lU25pcHBldC5iaW5kKHRoaXMsIHVpU291cmNlQ29kZSkp
OwpAQCAtMjI5LDcgKzIyOSw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk5ldyIpLCB0aGlzLl9oYW5kbGVDcmVhdGVTbmlwcGV0LmJpbmQodGhpcykpOwot
ICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hv
dygpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IDJmNDk4ZjNhMDMzNWEyMDI1ZjhmYjI2N2Qx
OTg0ZDAzZmE4YmU3MWQuLmQxYTQwNDY2MWRhOWIwODMyMWUyNjViZjJhYjk1NWIwMThlYzY2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwpAQCAtNjk1LDYgKzY5NSwxOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckRlbGVnYXRl
Rm9yU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHBvcHVsYXRlVGV4dEFyZWFDb250ZXh0
TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICB0
aGlzLl9zb3VyY2VGcmFtZS5wb3B1bGF0ZVRleHRBcmVhQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGxpbmVOdW1iZXIpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
aHJlZlZhbHVlCisgICAgICogQHBhcmFtIHtib29sZWFufSBpc0V4dGVybmFsCisgICAgICogQHJl
dHVybiB7RWxlbWVudH0KKyAgICAgKi8KKyAgICBjcmVhdGVMaW5rOiBmdW5jdGlvbihocmVmVmFs
dWUsIGlzRXh0ZXJuYWwpCisgICAgeworICAgICAgICB2YXIgdGFyZ2V0TG9jYXRpb24gPSBocmVm
VmFsdWU7CisgICAgICAgIGlmICh0aGlzLl9zb3VyY2VGcmFtZS5fdXJsICYmIGhyZWZWYWx1ZSAm
JiBocmVmVmFsdWUuaW5kZXhPZigiOi8vIikgPT09IC0xKQorICAgICAgICAgICAgdGFyZ2V0TG9j
YXRpb24gPSBXZWJJbnNwZWN0b3IuUGFyc2VkVVJMLmNvbXBsZXRlVVJMKHRoaXMuX3NvdXJjZUZy
YW1lLl91cmwsIGhyZWZWYWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGlua2lm
eVVSTEFzTm9kZSh0YXJnZXRMb2NhdGlvbiwgaHJlZlZhbHVlLCB1bmRlZmluZWQsIGlzRXh0ZXJu
YWwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggZjBmYmI0ODExMWNkYWM2YzYzZjA0
NzdmNTI4N2UxNjIwMjExY2UyZS4uNTIxMmE4ZDZmMzQ3M2RmMTBhMjJmZmYzZjM1ZjIxN2U5NmEw
YmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0xMzQsOSArMTM0LDkgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLmNhbm9uaWNhbFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpCiBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIF9jb250ZXh0
TWVudUV2ZW50RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRl
eHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOwotICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLnBvcHVsYXRlSHJlZkNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0aGlzLm5vZGUs
IGV2ZW50KSkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICB2
YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKKyAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMubm9kZSk7CisgICAg
ICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgZ2V0IF9mb3JjZWRQc2V1ZG9D
bGFzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGFiYmVkUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVk
UGFuZS5qcwppbmRleCAzZThlOGFiMTlhMTBjZWQ2ZWRkNTUxNzdiNTc2NjhlYWY4NGUzNGVlLi5h
YWMzYzgwNTgyNjNjMjIzNWE5OWJlYTUyMDM3NTM3YzU0ZGE5NjFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCkBAIC03MTMsMTEgKzcx
MywxMSBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZVRhYi5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl90YWJiZWRQYW5lLmNsb3NlQWxsVGFicyh0cnVlKTsKICAgICAgICAgfQogICAK
LSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgp
OworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
KGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNsb3NlIiksIGNsb3NlLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2UgT3RoZXJzIiksIGNsb3NlT3Ro
ZXJzLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ2xvc2UgQWxsIiksIGNsb3NlQWxsLmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwog
ICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcwppbmRleCA0YmU4ZjBkODFiMDUzNWEyMWMzNTdiZDgxMDg3YTM0ZWM3
YjE5M2I3Li5jNDQ5NDM4NWQwOGRmNTk3ZjMxODI3YjdiZDg4NmQzZDQ4NGFhMmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzCkBAIC0y
MzYsNiArMjM2LDEyIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGUucHJvdG90eXBl
ID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51fSBjb250ZXh0TWVu
dQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICovCi0gICAgcG9wdWxh
dGVUZXh0QXJlYUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJlcikg
eyB9Ci19CisgICAgcG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0
TWVudSwgbGluZU51bWJlcikgeyB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGhyZWZWYWx1ZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNFeHRlcm5hbAorICAgICAqIEBy
ZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgY3JlYXRlTGluazogZnVuY3Rpb24oaHJlZlZh
bHVlLCBpc0V4dGVybmFsKSB7IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCBkYmZkOGE4YzBmZDYxOGM2ZWQ5ZDYy
NGY4MWYwNzQ0NWQ2ZjE0YWM2Li41N2JiMTNlMzRjOThhZGNmOGNiODFiNzYyMmI1YmViNGUyNWY1
NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCkBAIC0zMzMsMTEgKzMzMywxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfY29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKICAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5jYW5TYXZl
KCkpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2F2ZSBUaW1lbGluZSBkYXRhXHUyMDI2IiksIHRoaXMuX3NhdmVUb0ZpbGUuYmluZCh0
aGlzKSwgdGhpcy5fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkIFRpbWVsaW5lIGRhdGFcdTIwMjYi
KSwgdGhpcy5fZmlsZVNlbGVjdG9yRWxlbWVudC5jbGljay5iaW5kKHRoaXMuX2ZpbGVTZWxlY3Rv
ckVsZW1lbnQpLCB0aGlzLl9vcGVyYXRpb25JblByb2dyZXNzKTsKLSAgICAgICAgY29udGV4dE1l
bnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAg
ICAgX3NhdmVUb0ZpbGU6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwpp
bmRleCA4ZWJjMTEyM2QyMTZmYWEwZDMwZTA1MThjNTE2NzFlNmIxNzU5NGEwLi42YmQ5YTk4ZjA3
MmMwNmYwZjQ5MGNhMGU2OWRjZDE0MWNlMGRlMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLmpzCkBAIC02NjQsNyArNjY0LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICBnZW5lcmF0ZVBvcHVwQ29udGVudDog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwubmVlZHNQcmV2aWV3RWxlbWVudCh0aGlzLnR5cGUpKQotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHModGhpcy51cmws
IGZhbHNlLCB0aGlzLl9nZW5lcmF0ZVBvcHVwQ29udGVudFdpdGhJbWFnZVByZXZpZXcuYmluZCh0
aGlzLCBjYWxsYmFjaykpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlv
blV0aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHModGhpcy51cmwsIGZhbHNlLCB0aGlzLl9n
ZW5lcmF0ZVBvcHVwQ29udGVudFdpdGhJbWFnZVByZXZpZXcuYmluZCh0aGlzLCBjYWxsYmFjaykp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZVBvcHVwQ29udGVudFdp
dGhJbWFnZVByZXZpZXcoY2FsbGJhY2spOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKaW5kZXggYzFlMDc1ODRlZjc3YWRlMzJjN2M4Mjc3
MzVlY2VhYmQyNzA3MDBjZC4uOTlmNzE0ZjcyNThhNmY3MDliYzZkNWNiOTM1NTg0ZTc5YWZkMGVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxz
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcwpA
QCAtMTAxNCw3NyArMTAxNCw2IEBAIFdlYkluc3BlY3Rvci5yZXZlcnREb21DaGFuZ2VzID0gZnVu
Y3Rpb24oZG9tQ2hhbmdlcykKICAgICB9CiB9CiAKLS8qKgotICogQHBhcmFtIHtzdHJpbmd9IGlt
YWdlVVJMCi0gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3dEaW1lbnNpb25zCi0gKiBAcGFyYW0ge2Z1
bmN0aW9uKEVsZW1lbnQ9KX0gdXNlckNhbGxiYWNrCi0gKiBAcGFyYW0ge09iamVjdD19IHByZWNv
bXB1dGVkRGltZW5zaW9ucwotICovCi1XZWJJbnNwZWN0b3IuYnVpbGRJbWFnZVByZXZpZXdDb250
ZW50cyA9IGZ1bmN0aW9uKGltYWdlVVJMLCBzaG93RGltZW5zaW9ucywgdXNlckNhbGxiYWNrLCBw
cmVjb21wdXRlZERpbWVuc2lvbnMpCi17Ci0gICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKGltYWdlVVJMKTsKLSAgICBpZiAoIXJl
c291cmNlKSB7Ci0gICAgICAgIHVzZXJDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgdmFyIGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OwotICAgIGltYWdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYnVpbGRDb250ZW50
LCBmYWxzZSk7Ci0gICAgaW1hZ2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgZXJy
b3JDYWxsYmFjaywgZmFsc2UpOwotICAgIHJlc291cmNlLnBvcHVsYXRlSW1hZ2VTb3VyY2UoaW1h
Z2VFbGVtZW50KTsKLQotICAgIGZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soKQotICAgIHsKLSAgICAg
ICAgLy8gRHJvcCB0aGUgZXZlbnQgcGFyYW1ldGVyIHdoZW4gaW52b2tpbmcgdXNlckNhbGxiYWNr
LgotICAgICAgICB1c2VyQ2FsbGJhY2soKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBidWlsZENv
bnRlbnQoKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRhYmxlIik7Ci0gICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAiaW1hZ2UtcHJl
dmlldy1jb250YWluZXIiOwotICAgICAgICB2YXIgbmF0dXJhbFdpZHRoID0gcHJlY29tcHV0ZWRE
aW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm5hdHVyYWxXaWR0aCA6IGltYWdlRWxl
bWVudC5uYXR1cmFsV2lkdGg7Ci0gICAgICAgIHZhciBuYXR1cmFsSGVpZ2h0ID0gcHJlY29tcHV0
ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm5hdHVyYWxIZWlnaHQgOiBpbWFn
ZUVsZW1lbnQubmF0dXJhbEhlaWdodDsKLSAgICAgICAgdmFyIG9mZnNldFdpZHRoID0gcHJlY29t
cHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm9mZnNldFdpZHRoIDogbmF0
dXJhbFdpZHRoOwotICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gcHJlY29tcHV0ZWREaW1lbnNp
b25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm9mZnNldEhlaWdodCA6IG5hdHVyYWxIZWlnaHQ7
Ci0gICAgICAgIHZhciBkZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKHNob3dEaW1lbnNpb25zKSB7
Ci0gICAgICAgICAgICBpZiAob2Zmc2V0SGVpZ2h0ID09PSBuYXR1cmFsSGVpZ2h0ICYmIG9mZnNl
dFdpZHRoID09PSBuYXR1cmFsV2lkdGgpCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIiwgb2Zmc2V0V2lkdGgsIG9m
ZnNldEhlaWdodCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGVzY3JpcHRp
b24gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAl
ZCBceGQ3ICVkIHBpeGVscykiLCBvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0LCBuYXR1cmFsV2lk
dGgsIG5hdHVyYWxIZWlnaHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGFpbmVyLmNyZWF0
ZUNoaWxkKCJ0ciIpLmNyZWF0ZUNoaWxkKCJ0ZCIsICJpbWFnZS1jb250YWluZXIiKS5hcHBlbmRD
aGlsZChpbWFnZUVsZW1lbnQpOwotICAgICAgICBpZiAoZGVzY3JpcHRpb24pCi0gICAgICAgICAg
ICBjb250YWluZXIuY3JlYXRlQ2hpbGQoInRyIikuY3JlYXRlQ2hpbGQoInRkIikuY3JlYXRlQ2hp
bGQoInNwYW4iLCAiZGVzY3JpcHRpb24iKS50ZXh0Q29udGVudCA9IGRlc2NyaXB0aW9uOwotICAg
ICAgICB1c2VyQ2FsbGJhY2soY29udGFpbmVyKTsKLSAgICB9Ci19Ci0KLS8qKgotICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51Ci0gKiBAcGFyYW0ge05vZGV9
IGNvbnRleHROb2RlCi0gKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICovCi1XZWJJbnNwZWN0b3Iu
cG9wdWxhdGVIcmVmQ29udGV4dE1lbnUgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgY29udGV4dE5v
ZGUsIGV2ZW50KQotewotICAgIHZhciBhbmNob3JFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xv
c2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXJlc291cmNlLWxpbmsiKSB8fCBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtZXh0
ZXJuYWwtbGluayIpOwotICAgIGlmICghYW5jaG9yRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgdmFyIHJlc291cmNlVVJMID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMRm9y
UmVsYXRlZE5vZGUoY29udGV4dE5vZGUsIGFuY2hvckVsZW1lbnQuaHJlZik7Ci0gICAgaWYgKCFy
ZXNvdXJjZVVSTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQWRkIHJlc291cmNl
LXJlbGF0ZWQgYWN0aW9ucy4KLSAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5vcGVuTGlua0V4dGVybmFsbHlMYWJlbCgpLCBXZWJJbnNwZWN0b3Iub3BlblJlc291cmNlLmJp
bmQoV2ViSW5zcGVjdG9yLCByZXNvdXJjZVVSTCwgZmFsc2UpKTsKLSAgICBpZiAoV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKHJlc291cmNlVVJMKSkKLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1l
bnVUaXRsZXMoKSA/ICJPcGVuIGxpbmsgaW4gUmVzb3VyY2VzIHBhbmVsIiA6ICJPcGVuIExpbmsg
aW4gUmVzb3VyY2VzIFBhbmVsIiksIFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UuYmluZChudWxs
LCByZXNvdXJjZVVSTCwgdHJ1ZSkpOwotICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLmNvcHlMaW5rQWRkcmVzc0xhYmVsKCksIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5
VGV4dC5iaW5kKEluc3BlY3RvckZyb250ZW5kSG9zdCwgcmVzb3VyY2VVUkwpKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogV2ViSW5zcGVjdG9yLl9jb2FsZXNjaW5nTGV2ZWwgPSAwOwogCiBXZWJJ
bnNwZWN0b3Iuc3RhcnRCYXRjaFVwZGF0ZSA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5l
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25z
U2lkZWJhclBhbmUuanMKaW5kZXggY2FlZDRmOTg4YTQ4NmRjYjFlZTZlZDE2OTA3MjQwNDgxMzkw
ZDY0ZS4uYjIzNzdkNWUzZWQxNTM3NDJjZTIwNTM3YWRmMmY4NTBiZjYyYjc0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lk
ZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRj
aEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKQEAgLTM2NCwxMSArMzY0LDExIEBAIFdlYkluc3Bl
Y3Rvci5XYXRjaEV4cHJlc3Npb25UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgCiAgICAg
X2NvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRl
eHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgd2F0Y2gg
ZXhwcmVzc2lvbiIpLCB0aGlzLl9kZWxldGVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwogICAg
ICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLndhdGNoRXhwcmVzc2lvbnMubGVuZ3Ro
ID4gMSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEZWxldGUgYWxsIHdhdGNoIGV4cHJlc3Npb25zIiksIHRoaXMuX2RlbGV0ZUFsbEJ1
dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQp
OworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKICAgICAKICAgICBfZGVsZXRl
QWxsQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9leHRlcm5zLmpzCmluZGV4IDhjZjUzZDI2YzVmNzU3ZWUxY2NmMjA1ZDExMGZk
MjUwOWI5ZDIyYWQuLmVkODIyNWFkMjc4ZmQ1MmY2MzAyYTczMzU5MDZhNDFmOTI2MWRiYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTI1
NywxMSArMjU3LDYgQEAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKQog
ewogfQogCi0vKioKLSAqIEB0eXBlIHtzdHJpbmd9IAotICovCi1XZWJJbnNwZWN0b3IuaW5zcGVj
dGVkUGFnZURvbWFpbjsKLQogV2ViSW5zcGVjdG9yLmlzQ29tcGFjdE1vZGUgPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VKYXZhU2NyaXB0VG9rZW5p
emVyID0ge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKaW5kZXggMjhkZmEyZWVlNzY5YWJmMjljY2ZhMTM0NGVmNzQ2ZjVhZjkzYTVkZS4uOGVm
OTdkNmJjMWMwMDAxYTEyYTM5Nzk4NzMyNmFmMzY5YjU1OWVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTMxOSwxMiArMzE5LDYg
QEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgICAgIGVycm9yV2FybmluZ0VsZW1lbnQu
dGl0bGUgPSBudWxsOwogICAgIH0sCiAKLSAgICBnZXQgaW5zcGVjdGVkUGFnZURvbWFpbigpCi0g
ICAgewotICAgICAgICB2YXIgcGFyc2VkVVJMID0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VV
UkwgJiYgV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwuYXNQYXJzZWRVUkwoKTsKLSAgICAg
ICAgcmV0dXJuIHBhcnNlZFVSTCA/IHBhcnNlZFVSTC5ob3N0IDogIiI7Ci0gICAgfSwKLQogICAg
IF9pbml0aWFsaXplQ2FwYWJpbGl0eTogZnVuY3Rpb24obmFtZSwgY2FsbGJhY2ssIGVycm9yLCBy
ZXN1bHQpCiAgICAgewogICAgICAgICBDYXBhYmlsaXRpZXNbbmFtZV0gPSByZXN1bHQ7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNmRjNTBiODE1ZjdlZTVhMzI5OWZlZmNkZGIzMDgxYWI3MGMxYmRkOC4uMDUzNzY1OGE1OTg2
M2NlMWJlZmFiZTk2YTBhNTliYmU5OWZiMzQxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTA4LTIzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1ha2UgdWkgY29tcG9uZW50IGNvbXBpbGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL2luZGVu
dGF0aW9uLmh0bWw6CisKIDIwMTItMDgtMjMgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IE11bHRpcGx5IGxhcmdlIGZvbnRzIGxl
c3MsIGFzIHRoZXkgYXJlIGFscmVhZHkgbW9yZSBsZWdpYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sCmluZGV4IGNhNjQ4ZDRkNGQ2OGQyYjFmNjMw
MjhjMTYxYTVmMzliYjk4MjQxYjQuLmIzZWM0ZGZmNTY4MGExOTEzMzU5MzkwODg3NzYxMzdlNzQx
MjMzNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0aW9uLmh0
bWwKQEAgLTEyLDcgKzEyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIG1vZGVsID0gbmV3
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwoKTsKICAgICBtb2RlbC5zZXRUZXh0KHNyYyk7
CiAgICAgZnVuY3Rpb24gbm9vcCgpIHt9Ci0gICAgdmFyIHRleHRFZGl0b3JNYWluUGFuZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwobW9kZWwsICcnLCBub29wLCBub29w
LCBub29wLCBub29wKTsKKyAgICB2YXIgdGV4dEVkaXRvck1haW5QYW5lbCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbChudWxsLCBtb2RlbCwgJycsIG5vb3AsIG5vb3AsIG5v
b3AsIG5vb3ApOwogCiAgICAgdmFyIHNlbGVjdGlvbjsKICAgICBmdW5jdGlvbiBkdW1wVGV4dE1v
ZGVsKG1zZykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160198</attachid>
            <date>2012-08-23 11:03:10 -0700</date>
            <delta_ts>2012-08-24 05:31:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94827-20120823220306.patch</filename>
            <type>text/plain</type>
            <size>59233</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFlMzExY2YwNWJlNDZj
YzFiM2NhMjU2MTFlYjNlNWMwNjQzNTJjNy4uMTM0NGNhYjY3MWM3OWUzNjFjMTA3ZTI0ZjRmMDU4
YzYyMDY0MGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wOC0yMyAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBtYWtlIHVpIGNvbXBvbmVudCBjb21waWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIC0gUGFzc2VzIGV2ZW50IGludG8gdGhlIENvbnRleHRNZW51
IGNvbnN0cnVjdG9yCisgICAgICAgIC0gSW1wbGVtZW50cyBocmVmIGNvbnRleHQgbWVudSBhcyBh
IGNvbnRleHQgbWVudSBwcm92aWRlcgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJlc3VsdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRWaWV3
LnByb3RvdHlwZS5fY29udGV4dE1lbnVFdmVudEZpcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLl9icmVha3BvaW50
Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnRzU2lkZWJh
clBhbmUucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxs
U3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnByb3RvdHlwZS5fcGxhY2FyZENvbnRleHRNZW51KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUuY2xvbmUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBl
LnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5hcHBl
bmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LlBy
b3ZpZGVyLnByb3RvdHlwZS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NvbnRleHRN
ZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlvblV0aWxz
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1h
Z2VQcmV2aWV3Q29udGVudHMuZXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cy5idWlsZENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1h
Z2VQcmV2aWV3Q29udGVudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdy
aWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9jb250ZXh0
TWVudUluRGF0YVRhYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRU
ZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnBy
b3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9jcmVhdGVMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJv
dG90eXBlLl9jb250ZXh0TWVudUV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUuYXBwZW5kQXBwbGljYWJsZUl0ZW1z
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IYW5kbGVyUmVnaXN0cnkucHJvdG90eXBlLl9hcHBl
bmRDb250ZW50UHJvdmlkZXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGFuZGxlclJl
Z2lzdHJ5LnByb3RvdHlwZS5fYXBwZW5kSHJlZkl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ltYWdlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbWFnZVZpZXcu
cHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9y
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5o
YW5kbGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91
dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmUuY29tcGFyZS50eXBlV2VpZ2h0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzQ29tcGFyZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5
cGUuX2V4cG9ydEFsbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9w
ZXJ0aWVzU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVz
U2VjdGlvbi5wcm90b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbnRleHRNZW51
RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2Z1bmN0aW9uQ29udGV4dE1lbnVFdmVudEZpcmVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BhcnNlZFVSTC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5QYXJzZWRVUkwuY29tcGxldGVVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhcnNlZFVS
TC5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRQYWdlRG9tYWluKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kaXNwbGF5RG9tYWluKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51
RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VVdGlscy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxlQ29udGV4
dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3Iu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3RvdHlw
ZS5oYW5kbGVDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JT
b3VyY2VGcmFtZS5wcm90b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5
cGUuY3JlYXRlTGluayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX2NvbnRleHRNZW51RXZlbnRGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9UYWJiZWRQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmVUYWIu
cHJvdG90eXBlLl90YWJDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0
ZS5wcm90b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGUucHJvdG90eXBlLmNyZWF0ZUxpbmspOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5
cGUuZ2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VUlVdGlscy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lv
bnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25U
cmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2V4dGVybnMuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisKIDIwMTItMDgtMjMgIEpvaG4gR3JpZ2dzICA8amdyaWdnc0ByaW0uY29tPgog
CiAgICAgICAgICAgICAgICAgUmVwbGFjZSBhY2Nlc3Mgb3QgSFRNTE1lZGlhRWxlbWVudCBmcm9t
IE1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkgd2l0aCBtZXRob2RzIGluIE1lZGlhUGxheWVy
Q2xpZW50IC0gdXBkYXRlZCB3aXRoIG5vdGVzIGZyb20gaW5pdGlhbCByZXZpZXdzLiAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjkxCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCmluZGV4IDU3
ZjU3YWQ4NWIwYTlhZDI1Y2IzNzNlYzY3ZTVkZmVmNTBlYTllYWUuLjU2YjVlOThlY2E1MjYxNmMx
MGNjMGVhMzdiMjc2Zjk1OGE0YmM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCkBAIC01MCw5ICs1MCw5IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJlc3VsdFZpZXcgPSBmdW5jdGlvbihjYXRlZ29yeVJlc3VsdHMpCiBX
ZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfY29udGV4dE1l
bnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUhyZWZDb250ZXh0TWVudShjb250ZXh0TWVudSwgbnVsbCwgZXZlbnQp
KQotICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMobnVsbCk7CisgICAgICAgIGNvbnRleHRN
ZW51LnNob3coKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCAwYzJj
ZjM0NGJjNmM0ZDg5OWE0ODUyMmVmYTljZDMzYWRiMmUxNzkyLi4yOTRjZjYwMjI0NzNhMGNmZjAy
NjU5MWI3N2FjNTFhMDI5NDExYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC0xNjYs
NyArMTY2LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5l
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfYnJlYWtwb2ludENvbnRleHRNZW51OiBmdW5j
dGlvbihicmVha3BvaW50LCBldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludCIp
LCBicmVha3BvaW50LnJlbW92ZS5iaW5kKGJyZWFrcG9pbnQpKTsKICAgICAgICAgdmFyIHJlbW92
ZUFsbFRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNh
c2VNZW51VGl0bGVzKCkgPyAiUmVtb3ZlIGFsbCBicmVha3BvaW50cyIgOiAiUmVtb3ZlIEFsbCBC
cmVha3BvaW50cyIpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKHJlbW92ZUFsbFRp
dGxlLCB0aGlzLl9icmVha3BvaW50TWFuYWdlci5yZW1vdmVBbGxCcmVha3BvaW50cy5iaW5kKHRo
aXMuX2JyZWFrcG9pbnRNYW5hZ2VyKSk7CkBAIC0xOTYsNyArMTk2LDcgQEAgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oZGlzYWJsZVRpdGxlLCB0aGlzLl9icmVha3BvaW50
TWFuYWdlci50b2dnbGVBbGxCcmVha3BvaW50cy5iaW5kKHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2Vy
LCBmYWxzZSksICEoZW5hYmxlQnJlYWtwb2ludENvdW50ID4gMSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3co
KTsKICAgICB9LAogCiAgICAgX2FkZExpc3RFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50LCBiZWZv
cmVFbGVtZW50KQpAQCAtMzQ1LDE0ICszNDUsMTQgQEAgV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9p
bnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlv
bih1cmwsIGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQnJl
YWtwb2ludCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQo
dXJsKTsKICAgICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwogICAgICAgICB9CiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1v
dmUgQnJlYWtwb2ludCIpLCByZW1vdmVCcmVha3BvaW50LmJpbmQodGhpcykpOwotICAgICAgICBj
b250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAg
IH0sCiAKICAgICBfY2hlY2tib3hDbGlja2VkOiBmdW5jdGlvbih1cmwsIGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lk
ZWJhclBhbmUuanMKaW5kZXggNmFiM2VjODYyNzUyYzYzNDZkNzk1ODE4NTdhMDgwMTc1MjZhZWI5
ZS4uODBlZWJmYWQ2NzhjYTNjNjg5NDJjZTY5M2YxMGVmNDVjMDkxMjk3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGVi
YXJQYW5lLmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGVi
YXJQYW5lLlBsYWNhcmQucHJvdG90eXBlID0gewogCiAgICAgX3BsYWNhcmRDb250ZXh0TWVudTog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jYW5TZXRTY3JpcHRTb3VyY2UoKSkgewogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3RhcnQgRnJhbWUi
KSwgdGhpcy5fcmVzdGFydEZyYW1lLmJpbmQodGhpcykpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFdl
Ykluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29weSBTdGFjayBUcmFjZSIpLCB0aGlzLl9wYW5lLl9jb3B5U3RhY2tUcmFjZS5iaW5k
KHRoaXMuX3BhbmUpKTsKIAotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAg
ICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfcmVzdGFydEZyYW1lOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlTWVzc2FnZS5qcwppbmRleCA5NWUyMTdiODA5ZTQ4NzA3ZmIyZTgyNTE1YTMwNDQ3MWU5MTQz
ZGJhLi5mMjkwYTZiYWRjYWM1ZTY5NjVhMzhlM2YwYmY2ZTc3NjRhZmMzMTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMK
QEAgLTcxNSw3ICs3MTUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBjbG9uZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGUodGhpcy5zb3VyY2UsIHRo
aXMubGV2ZWwsIHRoaXMuX21lc3NhZ2VUZXh0LCB0aGlzLnR5cGUsIHRoaXMudXJsLCB0aGlzLmxp
bmUsIHRoaXMucmVwZWF0Q291bnQsIHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMuX3N0YWNrVHJhY2Us
IHRoaXMuX3JlcXVlc3RJZCwgdGhpcy5faXNPdXRkYXRlZCk7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlKHRoaXMuc291cmNlLCB0aGlzLmxldmVsLCB0
aGlzLl9tZXNzYWdlVGV4dCwgdGhpcy50eXBlLCB0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLnJl
cGVhdENvdW50LCB0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9zdGFja1RyYWNlLCB0aGlzLl9yZXF1
ZXN0ID8gdGhpcy5fcmVxdWVzdC5yZXF1ZXN0SWQgOiB1bmRlZmluZWQsIHRoaXMuX2lzT3V0ZGF0
ZWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKaW5kZXggNzBlZjhlNGY2MjljODA0NDExNjViN2NjOWJjMDFhOWQz
MzZhN2Q3ZS4uMjE2YWZkMDVkMGUwM2RhYTgxYmUwY2Y0NTZmNDk1M2U4Zjg5OTU0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBA
IC01NTAsMTAgKzU1MCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29udGV4dE1l
bnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7Ci0KLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUhyZWZDb250ZXh0TWVudShjb250ZXh0TWVudSwgbnVsbCwgZXZlbnQp
KQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOworICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMobnVsbCk7CiAKICAgICAgICAg
ZnVuY3Rpb24gbW9uaXRvcmluZ1hIUkl0ZW1BY3Rpb24oKQogICAgICAgICB7CkBAIC01NjksNyAr
NTY3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1l
bnVUaXRsZXMoKSA/ICJDbGVhciBjb25zb2xlIiA6ICJDbGVhciBDb25zb2xlIiksIHRoaXMuX3Jl
cXVlc3RDbGVhck1lc3NhZ2VzLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93
KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAgICBfbW9u
aXRvcmluZ1hIUkVuYWJsZWRTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcwppbmRleCA2
ODIxYzRhOWE1MGRhODc1NTBiNjEzYjVkMDkyYzZlZjhkYTVmYjA0Li4xMDA5ZGIyNTY0ZjE1Nzk3
Y2I1MDRjZTRhNzlhYmFkMTg4ZGVjN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMKQEAgLTE1MSw5ICsxNTEsMTIgQEAgV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51SXQKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbX0KKyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CiAg
Ki8KLVdlYkluc3BlY3Rvci5Db250ZXh0TWVudSA9IGZ1bmN0aW9uKCkgeworV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51ID0gZnVuY3Rpb24oZXZlbnQpCit7CiAgICAgV2ViSW5zcGVjdG9yLkNvbnRl
eHRTdWJNZW51SXRlbS5jYWxsKHRoaXMsIHRoaXMsICIiKTsKKyAgICB0aGlzLl9ldmVudCA9IGV2
ZW50OwogICAgIHRoaXMuX2hhbmRsZXJzID0ge307CiAgICAgdGhpcy5faWQgPSAwOwogfQpAQCAt
MTY0LDE1ICsxNjcsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2lkKys7CiAgICAgfSwKIAotICAgIHNob3c6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHNob3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBtZW51T2Jq
ZWN0ID0gdGhpcy5fYnVpbGREZXNjcmlwdG9yKCk7CiAKICAgICAgICAgaWYgKG1lbnVPYmplY3Qu
bGVuZ3RoKSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51ID0gdGhpczsK
LSAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zaG93Q29udGV4dE1lbnUoZXZlbnQs
IG1lbnVPYmplY3QpOworICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250
ZXh0TWVudSh0aGlzLl9ldmVudCwgbWVudU9iamVjdCk7CisgICAgICAgICAgICB0aGlzLl9ldmVu
dC5jb25zdW1lKCk7CiAgICAgICAgIH0KLSAgICAgICAgZXZlbnQuY29uc3VtZSgpOwogICAgIH0s
CiAKICAgICBfc2V0SGFuZGxlcjogZnVuY3Rpb24oaWQsIGhhbmRsZXIpCkBAIC0yMDMsNyArMjA2
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51Ll9wcm92aWRlcnNbaV07CiAgICAgICAgICAgICB0aGlzLmFwcGVuZFNlcGFyYXRvcigp
OwotICAgICAgICAgICAgcHJvdmlkZXIuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMsIHRhcmdl
dCk7CisgICAgICAgICAgICBwcm92aWRlci5hcHBlbmRBcHBsaWNhYmxlSXRlbXModGhpcywgdGFy
Z2V0LCB0aGlzLl9ldmVudCk7CiAgICAgICAgICAgICB0aGlzLmFwcGVuZFNlcGFyYXRvcigpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjIxLDggKzIyNCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5Qcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqIAogICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51fSBjb250ZXh0TWVudQogICAgICAqIEBwYXJhbSB7T2JqZWN0
fSB0YXJnZXQKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAogICAgICAqLwotICAgIGFwcGVu
ZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oY29udGV4dE1lbnUsIHRhcmdldCkgeyB9CisgICAg
YXBwZW5kQXBwbGljYWJsZUl0ZW1zOiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGFyZ2V0LCBldmVu
dCkgeyB9CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRleCAxNjk4ZDMyNTM3OGQ3ODlkY2NhZGIzNDU1
NTMwYjk2ZTg5MWEyN2Q2Li41YzAxZTU4MmZhYjkzMDQ1YTc1N2Q4ZmE0MzFhOTg3NGE5OTViMjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0
ZW1zVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZUl0ZW1zVmlldy5qcwpAQCAtMTUxLDkgKzE1MSw5IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVt
c1ZpZXcucHJvdG90eXBlID0gewogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2Nvb2tpZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2
YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAg
ICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50
KTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWZyZXNoIiksIHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCmluZGV4IGFi
ZDc1YmFjYWQxODc5OTViMzk0Mzk5OWI3MTExN2IxMTBhYjMxOTMuLjZjMjJkN2M4NTk3NTQwMTYx
OTY3MjgyYmQyNjNmYTk2ZjRkZTY4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMK
QEAgLTIzNiw3ICsyMzYsNyBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUgPSB7CiAKICAgICBfY29udGV4dE1lbnU6IGZ1bmN0aW9uKG5vZGUsIHR5cGUs
IGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQnJlYWtwb2lu
dCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQobm9kZSwg
dHlwZSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRzU2lk
ZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgQnJlYWtwb2ludCIpLCByZW1v
dmVCcmVha3BvaW50LmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxl
cygpID8gIlJlbW92ZSBhbGwgRE9NIGJyZWFrcG9pbnRzIiA6ICJSZW1vdmUgQWxsIERPTSBCcmVh
a3BvaW50cyIpLCB0aGlzLl9yZW1vdmVBbGxCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsK
ICAgICB9LAogCiAgICAgX2NoZWNrYm94Q2xpY2tlZDogZnVuY3Rpb24obm9kZSwgdHlwZSwgZXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVBy
ZXNlbnRhdGlvblV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01QcmVzZW50YXRpb25VdGlscy5qcwppbmRleCAxNTBmYzVmNzQ5ZjIzODlkODE3Y2M4YTFiMTc4
MjUzMmViYzdhZjExLi45MDViNzhmOWY3YWJmYmZhOWY0YTk2YzM0NjdjYWMwNTY5NjRjMzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRh
dGlvblV0aWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
UHJlc2VudGF0aW9uVXRpbHMuanMKQEAgLTk2LDMgKzk2LDUxIEBAIFdlYkluc3BlY3Rvci5ET01Q
cmVzZW50YXRpb25VdGlscy5saW5raWZ5Tm9kZUJ5SWQgPSBmdW5jdGlvbihub2RlSWQpCiAgICAg
ICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ijxub2RlPiIpKTsKICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxz
LmxpbmtpZnlOb2RlUmVmZXJlbmNlKG5vZGUpOwogfQorCisvKioKKyAqIEBwYXJhbSB7c3RyaW5n
fSBpbWFnZVVSTAorICogQHBhcmFtIHtib29sZWFufSBzaG93RGltZW5zaW9ucworICogQHBhcmFt
IHtmdW5jdGlvbihFbGVtZW50PSl9IHVzZXJDYWxsYmFjaworICogQHBhcmFtIHtPYmplY3Q9fSBw
cmVjb21wdXRlZERpbWVuc2lvbnMKKyAqLworV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0
aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHMgPSBmdW5jdGlvbihpbWFnZVVSTCwgc2hvd0Rp
bWVuc2lvbnMsIHVzZXJDYWxsYmFjaywgcHJlY29tcHV0ZWREaW1lbnNpb25zKQoreworICAgIHZh
ciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVS
TChpbWFnZVVSTCk7CisgICAgaWYgKCFyZXNvdXJjZSkgeworICAgICAgICB1c2VyQ2FsbGJhY2so
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBpbWFnZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICBpbWFnZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGJ1aWxkQ29udGVudCwgZmFsc2UpOworICAgIGltYWdlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJlcnJvciIsIGVycm9yQ2FsbGJhY2ssIGZhbHNlKTsKKyAgICByZXNvdXJj
ZS5wb3B1bGF0ZUltYWdlU291cmNlKGltYWdlRWxlbWVudCk7CisKKyAgICBmdW5jdGlvbiBlcnJv
ckNhbGxiYWNrKCkKKyAgICB7CisgICAgICAgIC8vIERyb3AgdGhlIGV2ZW50IHBhcmFtZXRlciB3
aGVuIGludm9raW5nIHVzZXJDYWxsYmFjay4KKyAgICAgICAgdXNlckNhbGxiYWNrKCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gYnVpbGRDb250ZW50KCkKKyAgICB7CisgICAgICAgIHZhciBjb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAgICAgICBjb250YWlu
ZXIuY2xhc3NOYW1lID0gImltYWdlLXByZXZpZXctY29udGFpbmVyIjsKKyAgICAgICAgdmFyIG5h
dHVyYWxXaWR0aCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9u
cy5uYXR1cmFsV2lkdGggOiBpbWFnZUVsZW1lbnQubmF0dXJhbFdpZHRoOworICAgICAgICB2YXIg
bmF0dXJhbEhlaWdodCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5z
aW9ucy5uYXR1cmFsSGVpZ2h0IDogaW1hZ2VFbGVtZW50Lm5hdHVyYWxIZWlnaHQ7CisgICAgICAg
IHZhciBvZmZzZXRXaWR0aCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGlt
ZW5zaW9ucy5vZmZzZXRXaWR0aCA6IG5hdHVyYWxXaWR0aDsKKyAgICAgICAgdmFyIG9mZnNldEhl
aWdodCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5vZmZz
ZXRIZWlnaHQgOiBuYXR1cmFsSGVpZ2h0OworICAgICAgICB2YXIgZGVzY3JpcHRpb247CisgICAg
ICAgIGlmIChzaG93RGltZW5zaW9ucykgeworICAgICAgICAgICAgaWYgKG9mZnNldEhlaWdodCA9
PT0gbmF0dXJhbEhlaWdodCAmJiBvZmZzZXRXaWR0aCA9PT0gbmF0dXJhbFdpZHRoKQorICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVk
IHBpeGVscyIsIG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBc
eGQ3ICVkIHBpeGVscyAoTmF0dXJhbDogJWQgXHhkNyAlZCBwaXhlbHMpIiwgb2Zmc2V0V2lkdGgs
IG9mZnNldEhlaWdodCwgbmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0KTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnRhaW5lci5jcmVhdGVDaGlsZCgidHIiKS5jcmVhdGVDaGlsZCgidGQiLCAi
aW1hZ2UtY29udGFpbmVyIikuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKKyAgICAgICAgaWYg
KGRlc2NyaXB0aW9uKQorICAgICAgICAgICAgY29udGFpbmVyLmNyZWF0ZUNoaWxkKCJ0ciIpLmNy
ZWF0ZUNoaWxkKCJ0ZCIpLmNyZWF0ZUNoaWxkKCJzcGFuIiwgImRlc2NyaXB0aW9uIikudGV4dENv
bnRlbnQgPSBkZXNjcmlwdGlvbjsKKyAgICAgICAgdXNlckNhbGxiYWNrKGNvbnRhaW5lcik7Cisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
YXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQu
anMKaW5kZXggMDk3OTBmNWUyMTg3OWUzZGI1YzJmOWM1N2FlYzQ0N2JmM2RlMzhiNi4uYTZmZWQw
NWI2ODliMjU5OWRmM2ViOTQ0OTdhN2VmNTI2ZGNhMWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCkBAIC04NzgsNyArODc4LDcgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250ZXh0TWVudUluRGF0
YVRhYmxlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKICAgICAgICAgdmFyIGdy
aWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAg
ICBpZiAodGhpcy5fcmVmcmVzaENhbGxiYWNrICYmICghZ3JpZE5vZGUgfHwgZ3JpZE5vZGUgIT09
IHRoaXMuY3JlYXRpb25Ob2RlKSkKQEAgLTg5Niw3ICs4OTYsNyBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2su
YmluZCh0aGlzLCBncmlkTm9kZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgY29udGV4dE1lbnUu
c2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAg
X2NsaWNrSW5EYXRhVGFibGU6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggMGI1
Njk4MGQxODg0YmVjZmU0MjdiNjhlZmI3NTk5ZDg1MGI5MWQ1Yy4uNjg0ODQxOTBhYTc4Y2MyYmZj
MDMzNTI3OGEzNmQxNjk0MDg1NDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC01NSw3ICs1NSw3IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUp
CiAgICAgdmFyIHN5bmNTY3JvbGxMaXN0ZW5lciA9IHRoaXMuX3N5bmNTY3JvbGwuYmluZCh0aGlz
KTsKICAgICB2YXIgc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3RlbmVyID0gdGhpcy5fc3luY0Rl
Y29yYXRpb25zRm9yTGluZS5iaW5kKHRoaXMpOwogICAgIHZhciBzeW5jTGluZUhlaWdodExpc3Rl
bmVyID0gdGhpcy5fc3luY0xpbmVIZWlnaHQuYmluZCh0aGlzKTsKLSAgICB0aGlzLl9tYWluUGFu
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwodGhpcy5fdGV4dE1vZGVs
LCB1cmwsIHN5bmNTY3JvbGxMaXN0ZW5lciwgc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3RlbmVy
LCBlbnRlclRleHRDaGFuZ2VNb2RlLCBleGl0VGV4dENoYW5nZU1vZGUpOworICAgIHRoaXMuX21h
aW5QYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCh0aGlzLl9kZWxl
Z2F0ZSwgdGhpcy5fdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGxMaXN0ZW5lciwgc3luY0RlY29y
YXRpb25zRm9yTGluZUxpc3RlbmVyLCBlbnRlclRleHRDaGFuZ2VNb2RlLCBleGl0VGV4dENoYW5n
ZU1vZGUpOwogICAgIHRoaXMuX2d1dHRlclBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yR3V0dGVyUGFuZWwodGhpcy5fdGV4dE1vZGVsLCBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlz
dGVuZXIsIHN5bmNMaW5lSGVpZ2h0TGlzdGVuZXIpOwogCiAgICAgdGhpcy5fbWFpblBhbmVsLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5faGFuZGxlU2Nyb2xsQ2hhbmdl
ZC5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC00MTMsNyArNDEzLDcgQEAgV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1saW5lLW51bWJlciIpOwog
ICAgICAgICBpZiAodGFyZ2V0KQogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUucG9wdWxhdGVM
aW5lR3V0dGVyQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRhcmdldC5saW5lTnVtYmVyKTsKQEAg
LTQyMSw3ICs0MjEsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5fbWFpblBhbmVsLl9lbmNsb3NpbmdMaW5l
Um93T3JTZWxmKGV2ZW50LnRhcmdldCk7CiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5wb3B1
bGF0ZVRleHRBcmVhQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRhcmdldCAmJiB0YXJnZXQubGlu
ZU51bWJlcik7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2hhbmRsZVNjcm9sbENo
YW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTIwOCwxMyArMTIwOCwxNSBAQCBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvckd1dHRlckNodW5rLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVj
dG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWx9Cisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGV9IGRlbGVnYXRlCiAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWx9IHRleHRNb2RlbAogICogQHBhcmFt
IHs/c3RyaW5nfSB1cmwKICAqLwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBm
dW5jdGlvbih0ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9sbExpc3RlbmVyLCBzeW5jRGVjb3JhdGlv
bnNGb3JMaW5lTGlzdGVuZXIsIGVudGVyVGV4dENoYW5nZU1vZGUsIGV4aXRUZXh0Q2hhbmdlTW9k
ZSkKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUs
IHRleHRNb2RlbCwgdXJsLCBzeW5jU2Nyb2xsTGlzdGVuZXIsIHN5bmNEZWNvcmF0aW9uc0Zvckxp
bmVMaXN0ZW5lciwgZW50ZXJUZXh0Q2hhbmdlTW9kZSwgZXhpdFRleHRDaGFuZ2VNb2RlKQogewog
ICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLmNhbGwodGhpcywgdGV4dE1v
ZGVsKTsKIAorICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgdGhpcy5fc3luY1Nj
cm9sbExpc3RlbmVyID0gc3luY1Njcm9sbExpc3RlbmVyOwogICAgIHRoaXMuX3N5bmNEZWNvcmF0
aW9uc0ZvckxpbmVMaXN0ZW5lciA9IHN5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5lcjsKICAg
ICB0aGlzLl9lbnRlclRleHRDaGFuZ2VNb2RlID0gZW50ZXJUZXh0Q2hhbmdlTW9kZTsKQEAgLTIw
OTEsMjggKzIwOTMsMTYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBxdW90ZSA9IG51bGw7CiAKLSAgICAg
ICAgdmFyIGEgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSh0aGlzLl9yZXdyaXRlSHJl
Zihjb250ZW50KSwgY29udGVudCwgdW5kZWZpbmVkLCBpc0V4dGVybmFsKTsKICAgICAgICAgdmFy
IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHNwYW4uY2xh
c3NOYW1lID0gIndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSI7CiAgICAgICAgIGlmIChxdW90
ZSkKICAgICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
cXVvdGUpKTsKLSAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChhKTsKKyAgICAgICAgc3Bhbi5hcHBl
bmRDaGlsZCh0aGlzLl9kZWxlZ2F0ZS5jcmVhdGVMaW5rKGNvbnRlbnQsIGlzRXh0ZXJuYWwpKTsK
ICAgICAgICAgaWYgKHF1b3RlKQogICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShxdW90ZSkpOwogICAgICAgICByZXR1cm4gc3BhbjsKICAgICB9LAog
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmc9fSBocmVmVmFsdWUKLSAgICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSBpc0V4dGVybmFsCi0gICAgICovCi0gICAgX3Jld3JpdGVIcmVmOiBmdW5j
dGlvbihocmVmVmFsdWUsIGlzRXh0ZXJuYWwpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3Vy
bCB8fCAhaHJlZlZhbHVlIHx8IGhyZWZWYWx1ZS5pbmRleE9mKCI6Ly8iKSA+IDApCi0gICAgICAg
ICAgICByZXR1cm4gaHJlZlZhbHVlOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBhcnNl
ZFVSTC5jb21wbGV0ZVVSTCh0aGlzLl91cmwsIGhyZWZWYWx1ZSk7Ci0gICAgfSwKLQogICAgIF9o
YW5kbGVET01VcGRhdGVzOiBmdW5jdGlvbihlKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rv
bVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBjZGM4ZjUzNWM1OGRjMGI1NzA0YTZm
N2FlYmEzNTMwYTM4ODJlNjBhLi5iNmVjZDliNjgzZGFlOTQwYTZlMjYwMjIzMjMxZDcwYmI3Zjky
MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCkBAIC0zMzQsMTMgKzMzNCwxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZG9t
V29yZFdyYXAuc2V0KCFXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZG9tV29yZFdyYXAuZ2V0KCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5D
b250ZXh0TWVudSgpOwotICAgICAgICB2YXIgcG9wdWxhdGVkID0gdGhpcy50cmVlT3V0bGluZS5w
b3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7Ci0gICAgICAgIGlmIChwb3B1
bGF0ZWQpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAg
ICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7
CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVu
dSwgZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhX
ZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIldvcmQgd3JhcCIgOiAiV29y
ZCBXcmFwIiksIHRvZ2dsZVdvcmRXcmFwLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5kb21Xb3JkV3JhcC5nZXQoKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7
CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2RvbVdvcmRXcmFw
U2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNDMzLDkgKzQzMSw5IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBs
aXN0SXRlbSA9IGFuY2hvci5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJsaSIpOwog
ICAgICAgICBpZiAobGlzdEl0ZW0gJiYgbGlzdEl0ZW0udHJlZUVsZW1lbnQpCi0gICAgICAgICAg
ICB0aGlzLl9sb2FkRGltZW5zaW9uc0Zvck5vZGUobGlzdEl0ZW0udHJlZUVsZW1lbnQsIFdlYklu
c3BlY3Rvci5idWlsZEltYWdlUHJldmlld0NvbnRlbnRzLmJpbmQoV2ViSW5zcGVjdG9yLCBhbmNo
b3IuaHJlZiwgdHJ1ZSwgc2hvd1BvcG92ZXIpKTsKKyAgICAgICAgICAgIHRoaXMuX2xvYWREaW1l
bnNpb25zRm9yTm9kZShsaXN0SXRlbS50cmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLkRPTVByZXNl
bnRhdGlvblV0aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHMuYmluZChXZWJJbnNwZWN0b3Iu
RE9NUHJlc2VudGF0aW9uVXRpbHMsIGFuY2hvci5ocmVmLCB0cnVlLCBzaG93UG9wb3ZlcikpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuYnVpbGRJbWFnZVByZXZpZXdD
b250ZW50cyhhbmNob3IuaHJlZiwgdHJ1ZSwgc2hvd1BvcG92ZXIpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHMo
YW5jaG9yLmhyZWYsIHRydWUsIHNob3dQb3BvdmVyKTsKIAogICAgICAgICAvKioKICAgICAgICAg
ICogQHBhcmFtIHtFbGVtZW50PX0gY29udGVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCBmYTNi
ZmU5NGY2NDQxODlkNjNiNWI2OGVmN2I4NzYwYmM1MmM1NmJiLi5lNzdhMDIxNTc2OGIwZTc3NDM3
MTRmNzIwMTI5OGU3YjAzYmMzODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC00NjcsOSArNDY3
LDkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAg
ICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuaW5zcGVjdEVsZW1lbnQo
dHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuaWQpOwogICAgICAgICB9Ci0gICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAg
dmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZl
YWwgaW4gRWxlbWVudHMgUGFuZWwiKSwgZm9jdXNFbGVtZW50LmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwog
ICAgIH0sCiAKICAgICBwb3B1bGF0ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwg
ZXZlbnQpCkBAIC00ODMsMjUgKzQ4MywxNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0
bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0ZXh0Tm9kZSAmJiB0ZXh0Tm9kZS5oYXNT
dHlsZUNsYXNzKCJib2d1cyIpKQogICAgICAgICAgICAgdGV4dE5vZGUgPSBudWxsOwogICAgICAg
ICB2YXIgY29tbWVudE5vZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhD
bGFzcygid2Via2l0LWh0bWwtY29tbWVudCIpOwotICAgICAgICB2YXIgcG9wdWxhdGVkID0gV2Vi
SW5zcGVjdG9yLnBvcHVsYXRlSHJlZkNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0aGlzLnNlbGVj
dGVkRE9NTm9kZSgpLCBldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEFwcGxpY2Fi
bGVJdGVtcyh0aGlzLnNlbGVjdGVkRE9NTm9kZSgpKTsKICAgICAgICAgaWYgKHRleHROb2RlICYm
IHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYg
KHBvcHVsYXRlZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0
Tm9kZSk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYg
KGlzVGFnICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KSB7Ci0gICAgICAg
ICAgICBpZiAocG9wdWxhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNl
cGFyYXRvcigpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAg
ICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVu
dSwgZXZlbnQpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IGlmIChjb21tZW50Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVOb2RlQ29udGV4dE1lbnUp
IHsKLSAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCi0gICAgICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBh
cmF0b3IoKTsKICAgICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVu
dShjb250ZXh0TWVudSwgdGV4dE5vZGUpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsK
ICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwb3B1bGF0ZWQ7CiAgICAgfSwKIAogICAgIGFk
anVzdENvbGxhcHNlZFJhbmdlOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJSZWdpc3RyeS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCmluZGV4IDg0YWU3ZmRhNTk1
MTAwZTk0ZmE3ZjVhMGZlMWUwN2ZiYmI2OGNiZWIuLmYzYmExMmQ1NmZiODBiNzFkMmJiMjhiOGUw
YTZlZjdlYmU5MTUxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCkBAIC05Myw4ICs5MywxOSBAQCBXZWJJbnNwZWN0
b3IuSGFuZGxlclJlZ2lzdHJ5LnByb3RvdHlwZSA9IHsKICAgICAvKiogCiAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51CiAgICAgICogQHBhcmFtIHtP
YmplY3R9IHRhcmdldAorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CiAgICAgICovCi0gICAg
YXBwZW5kQXBwbGljYWJsZUl0ZW1zOiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGFyZ2V0KQorICAg
IGFwcGVuZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oY29udGV4dE1lbnUsIHRhcmdldCwgZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLl9hcHBlbmRDb250ZW50UHJvdmlkZXJJdGVtcyhjb250
ZXh0TWVudSwgdGFyZ2V0KTsKKyAgICAgICAgdGhpcy5fYXBwZW5kSHJlZkl0ZW1zKGNvbnRleHRN
ZW51LCB0YXJnZXQsIGV2ZW50KTsKKyAgICB9LAorCisgICAgLyoqIAorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51fSBjb250ZXh0TWVudQorICAgICAqIEBwYXJhbSB7T2Jq
ZWN0fSB0YXJnZXQKKyAgICAgKi8KKyAgICBfYXBwZW5kQ29udGVudFByb3ZpZGVySXRlbXM6IGZ1
bmN0aW9uKGNvbnRleHRNZW51LCB0YXJnZXQpCiAgICAgewogICAgICAgICBpZiAoISh0YXJnZXQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlIHx8IHRhcmdldCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCB0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
TmV0d29ya1JlcXVlc3QpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQwLDYgKzE1MSwzMCBA
QCBXZWJJbnNwZWN0b3IuSGFuZGxlclJlZ2lzdHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTYXZlIiksIHNhdmUuYmluZCh0aGlzLCBmYWxzZSkp
OwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhX
ZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIlNhdmUgYXMuLi4iIDogIlNh
dmUgQXMuLi4iKSwgc2F2ZS5iaW5kKHRoaXMsIHRydWUpKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51CisgICAg
ICogQHBhcmFtIHtPYmplY3R9IHRhcmdldAorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX2FwcGVuZEhyZWZJdGVtczogZnVuY3Rpb24oY29udGV4dE1lbnUsIHRhcmdl
dCwgZXZlbnQpCisgICAgeworICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGV2ZW50LnRhcmdl
dC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5r
IikgfHwgZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1o
dG1sLWV4dGVybmFsLWxpbmsiKTsKKyAgICAgICAgaWYgKCFhbmNob3JFbGVtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5ET01Ob2RlKSkKKyAgICAgICAgICAgIHRhcmdldCA9IG51bGw7CisgICAgICAgIHZhciBy
ZXNvdXJjZVVSTCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlKHRhcmdl
dCwgYW5jaG9yRWxlbWVudC5ocmVmKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZVVSTCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBBZGQgcmVzb3VyY2UtcmVsYXRlZCBhY3Rpb25z
LgorICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5vcGVuTGlua0V4
dGVybmFsbHlMYWJlbCgpLCBXZWJJbnNwZWN0b3Iub3BlblJlc291cmNlLmJpbmQoV2ViSW5zcGVj
dG9yLCByZXNvdXJjZVVSTCwgZmFsc2UpKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXNv
dXJjZUZvclVSTChyZXNvdXJjZVVSTCkpCisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRp
dGxlcygpID8gIk9wZW4gbGluayBpbiBSZXNvdXJjZXMgcGFuZWwiIDogIk9wZW4gTGluayBpbiBS
ZXNvdXJjZXMgUGFuZWwiKSwgV2ViSW5zcGVjdG9yLm9wZW5SZXNvdXJjZS5iaW5kKG51bGwsIHJl
c291cmNlVVJMLCB0cnVlKSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLmNvcHlMaW5rQWRkcmVzc0xhYmVsKCksIEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5
VGV4dC5iaW5kKEluc3BlY3RvckZyb250ZW5kSG9zdCwgcmVzb3VyY2VVUkwpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VW
aWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMK
aW5kZXggN2I1Y2YxM2UwZTllZTRkZWFiMmM0ZDUzNWIwNTM1NzA5NzA1MjM1ZS4uYTA2ZDEwYTc2
YWQ5ZDVmM2E5NTdlZDUyOTBkZmMwZDUyYjFmZTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZVZpZXcuanMKQEAgLTEyNiwxMCArMTI2LDEwIEBAIFdl
Ykluc3BlY3Rvci5JbWFnZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51OiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdl
Ykluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51
VGl0bGVzKCkgPyAiQ29weSBpbWFnZSBVUkwiIDogIkNvcHkgSW1hZ2UgVVJMIiksIHRoaXMuX2Nv
cHlJbWFnZVVSTC5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMo
KSA/ICJPcGVuIGltYWdlIGluIG5ldyB0YWIiIDogIk9wZW4gSW1hZ2UgaW4gTmV3IFRhYiIpLCB0
aGlzLl9vcGVuSW5OZXdUYWIuYmluZCh0aGlzKSk7Ci0gICAgICAgIGNvbnRleHRNZW51LnNob3co
ZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAogICAgIF9jb3B5
SW1hZ2VVUkw6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3LmpzCmluZGV4IGI1MjFhOWQxZGNmZmY0YzdhMDA5
ZGYzOGI3NjNmZTFmMzcyNmYyYjguLmUzNWY5MmJkODNjNmE3MGFlYmIyMzczNTM0MDg1MzViY2Zi
MmNiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5z
cGVjdG9yVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
c3BlY3RvclZpZXcuanMKQEAgLTkxLDYgKzkxLDkgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvclZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcGFuZWw7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5QYW5lbH0KKyAgICAgKi8KICAgICBjdXJy
ZW50UGFuZWw6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50
UGFuZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05h
dmlnYXRvclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmln
YXRvclZpZXcuanMKaW5kZXggYTAyMjE3NDc0MzFiY2JiZWIwZWEyOGIzYjQ5OTBjODkzODdkYjZm
Yy4uODQ2MTE4YjJlYjY4MzQyZTk4MTg4N2E0NmJlYThjZmU3MDdlMTA5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5qcwpAQCAt
MzQ0LDkgKzM0NCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZSA9IHsK
IAogICAgIGhhbmRsZUNvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCwgdWlTb3VyY2VDb2RlKQog
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudSgpOworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51KGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQXBwbGljYWJsZUl0ZW1z
KHVpU291cmNlQ29kZSk7Ci0gICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAg
ICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfQogfQogCkBAIC0zNzgsNyArMzc4LDcgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRvclRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNDb21wYXJlID0gZnVu
Y3Rpb24gY29tcGFyZSh0cmVlRWwKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JGb2xkZXJUcmVlRWxlbWVudCkgewogICAgICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50LmlzRG9tYWluKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50LnRpdGxlVGV4dCA9PT0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4p
CisgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnRpdGxlVGV4dCA9PT0gV2ViSW5zcGVj
dG9yLmluc3BlY3RlZFBhZ2VEb21haW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICAgICB9CkBAIC01NDksNyArNTQ5
LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsK
LSAgICAgICAgaWYgKHRoaXMuaXNEb21haW4gJiYgdGhpcy50aXRsZVRleHQgIT0gV2ViSW5zcGVj
dG9yLmluc3BlY3RlZFBhZ2VEb21haW4pCisgICAgICAgIGlmICh0aGlzLmlzRG9tYWluICYmIHRo
aXMudGl0bGVUZXh0ICE9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluKCkpCiAgICAg
ICAgICAgICB0aGlzLmNvbGxhcHNlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMu
ZXhwYW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzCmluZGV4IGIwYjExZTAxMWZjMjFiYjc1ZjgyMmVkN2Q4ODhkZmVkN2E4ZjU4
NTguLmVmZjcyMzUyY2FiODg5ZTc0NThkOTZhN2U4NWM0NjhlYTZiYmY0MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC05
MzUsNyArOTM1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsK
IAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
Y29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAg
ICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGcm9tTm9kZShl
dmVudC50YXJnZXQpOwogICAgICAgICB2YXIgcmVxdWVzdCA9IGdyaWROb2RlICYmIGdyaWROb2Rl
Ll9yZXF1ZXN0OwogCkBAIC05NjUsNyArOTY1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2NhbkNsZWFyQnJvd3NlckNvb2tp
ZXMpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNsZWFyIGJyb3dz
ZXIgY29va2llcyIgOiAiQ2xlYXIgQnJvd3NlciBDb29raWVzIiksIHRoaXMuX2NsZWFyQnJvd3Nl
ckNvb2tpZXMuYmluZCh0aGlzKSk7CiAKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7
CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2NvcHlBbGw6IGZ1
bmN0aW9uKCkKQEAgLTEwMDMsNyArMTAwMyw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBsb2c6IChuZXcgV2ViSW5zcGVjdG9yLkhBUkxv
Zyh0aGlzLl9yZXF1ZXN0cykpLmJ1aWxkKCkKICAgICAgICAgfTsKICAgICAgICAgCi0gICAgICAg
IFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdl
RG9tYWluICsgIi5oYXIiLCBKU09OLnN0cmluZ2lmeShoYXJBcmNoaXZlLCBudWxsLCAyKSwgdHJ1
ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlKFdlYkluc3BlY3Rvci5p
bnNwZWN0ZWRQYWdlRG9tYWluKCkgKyAiLmhhciIsIEpTT04uc3RyaW5naWZ5KGhhckFyY2hpdmUs
IG51bGwsIDIpLCB0cnVlKTsKICAgICB9LAogCiAgICAgX2V4cG9ydFJlcXVlc3Q6IGZ1bmN0aW9u
KHJlcXVlc3QpCkBAIC0xNDcyLDcgKzE0NzIsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAg
ICovCisgICAgICovICAgIAogICAgIGNhbkZpbHRlcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcwppbmRleCBmMWM1MDY5ZDc5
OWNiYTJhNTQ0NDI0ZDdlZDY1MDRlNjcxYmU4NDA2Li4yNGJmNDg1NzE5NDBlOGZlMDc2ODhmNGJl
NjAxMGU2NGNiMDhhMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTU4LDEwICs1
OCwxMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0g
ewogCiAgICAgX2NvbnRleHRNZW51RXZlbnRGaXJlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7
CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
ZXZlbnQpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRBcHBsaWNhYmxlSXRlbXModGhpcy5v
YmplY3QpOwogICAgICAgICBpZiAoIWNvbnRleHRNZW51LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdygp
OwogICAgIH0sCiAKICAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCkBAIC0yNjksOSArMjY5LDkg
QEAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZS5wdXNoTm9kZVRvRnJvbnRlbmQoc2VsZWN0
Tm9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIEVsZW1lbnRzIFBhbmVsIiksIHJl
dmVhbEVsZW1lbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQp
OworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAogICAgIF9mdW5jdGlvbkNv
bnRleHRNZW51RXZlbnRGaXJlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0yOTAsOSArMjkwLDkgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRGdW5jdGlvbkRldGFpbHModGhpcy5wcm9wZXJ0eS52
YWx1ZS5vYmplY3RJZCwgZGlkR2V0RGV0YWlscy5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsK
KyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShl
dmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IGZ1bmN0aW9uIGRlZmluaXRpb24iKSwgcmV2ZWFsRnVuY3Rpb24uYmluZCh0aGlz
KSk7Ci0gICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVu
dS5zaG93KCk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVNpYmxpbmdzOiBmdW5jdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhcnNlZFVSTC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFyc2VkVVJMLmpzCmluZGV4IGEw
NWE0YzM5OGUwMjkxMGUwNDM5OWJiYmM5NzgxMzBmNWFhYzA1YWMuLjhiZTZkMGZlNjUyNjI5YTM5
OTRhYzYwZjgxYWI3Yzk4NTE0NWMyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUGFyc2VkVVJMLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUGFyc2VkVVJMLmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5Q
YXJzZWRVUkwgPSBmdW5jdGlvbih1cmwpCiAvKioKICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJM
CiAgKiBAcGFyYW0ge3N0cmluZ30gaHJlZgotICogQHJldHVybiB7P3N0cmluZ30KKyAqIEByZXR1
cm4ge3N0cmluZ30KICAqLwogV2ViSW5zcGVjdG9yLlBhcnNlZFVSTC5jb21wbGV0ZVVSTCA9IGZ1
bmN0aW9uKGJhc2VVUkwsIGhyZWYpCiB7CkBAIC0xMzYsNyArMTM2LDcgQEAgV2ViSW5zcGVjdG9y
LlBhcnNlZFVSTC5jb21wbGV0ZVVSTCA9IGZ1bmN0aW9uKGJhc2VVUkwsIGhyZWYpCiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHBhcnNlZFVSTC5zY2hlbWUgKyAiOi8vIiArIHBhcnNlZFVSTC5o
b3N0ICsgKHBhcnNlZFVSTC5wb3J0ID8gKCI6IiArIHBhcnNlZFVSTC5wb3J0KSA6ICIiKSArIHBh
dGg7CiAgICAgfQotICAgIHJldHVybiBudWxsOworICAgIHJldHVybiBocmVmOwogfQogCiBXZWJJ
bnNwZWN0b3IuUGFyc2VkVVJMLnByb3RvdHlwZSA9IHsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBXZWJJ
bnNwZWN0b3IuUGFyc2VkVVJMLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9kaXNw
bGF5TmFtZSkKICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gV2ViSW5zcGVjdG9yLmRp
c3BsYXlEb21haW4odGhpcy5ob3N0KTsKICAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5TmFtZSAm
JiB0aGlzLnVybCkKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhpcy51cmwudHJp
bVVSTChXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbiA/IFdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRQYWdlRG9tYWluIDogIiIpOworICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0
aGlzLnVybC50cmltVVJMKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluKCkgPyBXZWJJ
bnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbigpIDogIiIpOwogICAgICAgICBpZiAodGhpcy5f
ZGlzcGxheU5hbWUgPT09ICIvIikKICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhp
cy51cmw7CiAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKQEAgLTE3NCwzICsxNzQs
MTkgQEAgU3RyaW5nLnByb3RvdHlwZS5hc1BhcnNlZFVSTCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
cmV0dXJuIHBhcnNlZFVSTDsKICAgICByZXR1cm4gbnVsbDsKIH0KKworV2ViSW5zcGVjdG9yLmlu
c3BlY3RlZFBhZ2VEb21haW4gPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHBhcnNlZFVSTCA9IFdl
Ykluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMICYmIFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdl
VVJMLmFzUGFyc2VkVVJMKCk7CisgICAgcmV0dXJuIHBhcnNlZFVSTCA/IHBhcnNlZFVSTC5ob3N0
IDogIiI7Cit9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGhvc3QKKyAqLworV2ViSW5zcGVj
dG9yLmRpc3BsYXlEb21haW4gPSBmdW5jdGlvbihob3N0KQoreworICAgIGlmIChob3N0ICYmICgh
V2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4oKSB8fCAoV2ViSW5zcGVjdG9yLmluc3Bl
Y3RlZFBhZ2VEb21haW4oKSAmJiBob3N0ICE9PSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURv
bWFpbigpKSkpCisgICAgICAgIHJldHVybiBob3N0OworICAgIHJldHVybiAiIjsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpp
bmRleCAwOWIwZmI5NDRmNTMzMDUwMTU2YzIzM2Q5NmI4ZGM0OGQzNDQxOWZhLi43MDE3ZGE1MmQx
MjAxNjg3MWZjYzJiNTlmMWY0MTg2YWIwOWI3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC00MjYsMTEgKzQyNiwx
MSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBlbGVtZW50LnRyZWVFbGVtZW50LmhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGlmICh0aGlzLnZp
c2libGVWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcpCiAgICAg
ICAgICAgICB0aGlzLnZpc2libGVWaWV3LnBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGV2ZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkxvYWQgcHJvZmlsZVx1MjAyNiIpLCB0aGlzLl9maWxlU2VsZWN0b3JFbGVtZW50LmNs
aWNrLmJpbmQodGhpcy5fZmlsZVNlbGVjdG9yRWxlbWVudCkpOwotICAgICAgICBjb250ZXh0TWVu
dS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAKICAg
ICAvKioKQEAgLTEyNDMsMTQgKzEyNDMsMTQgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLnByb2ZpbGU7
Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
KTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dShldmVudCk7CiAgICAgICAgIGlmIChwcm9maWxlLmNhblNhdmVUb0ZpbGUoKSkKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTYXZlIHBy
b2ZpbGVcdTIwMjYiKSwgcHJvZmlsZS5zYXZlVG9GaWxlLmJpbmQocHJvZmlsZSkpOwogICAgICAg
ICAvLyBGSVhNRTogdXNlIGNvbnRleHQgbWVudSBwcm92aWRlcgogICAgICAgICB2YXIgcHJvZmls
ZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLl9pbnN0YW5jZTsKICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWQgcHJvZmls
ZVx1MjAyNiIpLCBwcm9maWxlc1BhbmVsLl9maWxlU2VsZWN0b3JFbGVtZW50LmNsaWNrLmJpbmQo
cHJvZmlsZXNQYW5lbC5fZmlsZVNlbGVjdG9yRWxlbWVudCkpOwogICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIHByb2ZpbGUiKSwgdGhp
cy5vbmRlbGV0ZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7
CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcwppbmRleCA1NDkw
OWM3MzA1NjYxNGYyOTg5NWZiODk0ZTUyMDViZDA5ZWE3NmZjLi5iZjI1MzBjODBjMGM5MjgzZGFh
N2ZjN2I0YmE0ZTE4ODQwMmY5NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzCkBAIC00NiwxNiArNDYsNiBAQCBXZWJJbnNw
ZWN0b3IuZm9yQWxsUmVzb3VyY2VzID0gZnVuY3Rpb24oY2FsbGJhY2spCiB9CiAKIC8qKgotICog
QHBhcmFtIHtzdHJpbmd9IGhvc3QKLSAqLwotV2ViSW5zcGVjdG9yLmRpc3BsYXlEb21haW4gPSBm
dW5jdGlvbihob3N0KQotewotICAgIGlmIChob3N0ICYmICghV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFBhZ2VEb21haW4gfHwgKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluICYmIGhvc3Qg
IT09IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluKSkpCi0gICAgICAgIHJldHVybiBo
b3N0OwotICAgIHJldHVybiAiIjsKLX0KLQotLyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAg
KiBAcmV0dXJuIHtzdHJpbmd9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDhkZGNkMjUyMDlhNGYwN2RjODc2
NzIwYmRlNGFiOTBjNmUyYWJlMmYuLjM2ZmQxNDU5ZmU3YTMzZGRkODUzYTc1YjFiZTdiZDY5ZDMz
NjgxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTIxNywxMSArMTIxNywxMSBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9oYW5kbGVDb250ZXh0
TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVu
dSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRN
ZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEFwcGxpY2FibGVJdGVtcyh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgIGlm
ICh0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0KQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
QXBwbGljYWJsZUl0ZW1zKHRoaXMuX3Jlc291cmNlLnJlcXVlc3QpOwotICAgICAgICBjb250ZXh0
TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAK
ICAgICBfc2V0QnViYmxlVGV4dDogZnVuY3Rpb24oeCkKQEAgLTE0MTYsOSArMTQxNiw5IEBAIFdl
Ykluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfaGFu
ZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
Y29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZh
ciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVz
aCBJbmRleGVkREIiKSwgdGhpcy5yZWZyZXNoSW5kZXhlZERCLmJpbmQodGhpcykpOwotICAgICAg
ICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwog
ICAgIH0sCiAKICAgICBfY3JlYXRlSW5kZXhlZERCTW9kZWw6IGZ1bmN0aW9uKCkKQEAgLTE1MzAs
OSArMTUzMCw5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKIAogICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudShldmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gTGlzdCIpLCB0aGlzLl9yZWZyZXNoRmls
ZVN5c3RlbS5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAgICAgX2ZpbGVTeXN0ZW1BZGRl
ZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xNjA1LDkgKzE2MDUsOSBAQCBXZWJJbnNwZWN0b3IuSURC
RGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfaGFuZGxlQ29udGV4dE1l
bnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dE1lbnUg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250ZXh0TWVu
dSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCBJbmRleGVkREIi
KSwgdGhpcy5fcmVmcmVzaEluZGV4ZWREQi5iaW5kKHRoaXMpKTsKLSAgICAgICAgY29udGV4dE1l
bnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9LAogCiAg
ICAgX3JlZnJlc2hJbmRleGVkREI6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IDJl
ZWVmNzNjN2Q1YTllOTQ1ZTdlNjZiZjA1NDIyNzg4YmZhZmU2YjkuLmFjODk3NjY2ZjUzM2M2NmQ2
NDE4ZDhkYzM5YjI0OWQ1NDMyZTU3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTIyMSw3ICsyMjEsNyBA
QCBXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBoYW5kbGVDb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQsIHVpU291cmNlQ29kZSkK
ICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudShldmVudCk7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpIHsKICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW4iKSwgdGhp
cy5faGFuZGxlRXZhbHVhdGVTbmlwcGV0LmJpbmQodGhpcywgdWlTb3VyY2VDb2RlKSk7CiAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVu
YW1lIiksIHRoaXMuX2hhbmRsZVJlbmFtZVNuaXBwZXQuYmluZCh0aGlzLCB1aVNvdXJjZUNvZGUp
KTsKQEAgLTIyOSw3ICsyMjksNyBAQCBXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigp
OwogICAgICAgICB9CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJOZXciKSwgdGhpcy5faGFuZGxlQ3JlYXRlU25pcHBldC5iaW5kKHRoaXMpKTsK
LSAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNo
b3coKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCAyZjQ5OGYzYTAzMzVhMjAyNWY4ZmIyNjdk
MTk4NGQwM2ZhOGJlNzFkLi5kMWE0MDQ2NjFkYTliMDgzMjFlMjY1YmYyYWI5NTViMDE4ZWM2NjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZy
YW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJh
bWUuanMKQEAgLTY5NSw2ICs2OTUsMTkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0
ZUZvclNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICBwb3B1bGF0ZVRleHRBcmVhQ29udGV4
dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAg
dGhpcy5fc291cmNlRnJhbWUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KGNvbnRleHRNZW51
LCBsaW5lTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGhyZWZWYWx1ZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNFeHRlcm5hbAorICAgICAqIEBy
ZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgY3JlYXRlTGluazogZnVuY3Rpb24oaHJlZlZh
bHVlLCBpc0V4dGVybmFsKQorICAgIHsKKyAgICAgICAgdmFyIHRhcmdldExvY2F0aW9uID0gaHJl
ZlZhbHVlOworICAgICAgICBpZiAodGhpcy5fc291cmNlRnJhbWUuX3VybCAmJiBocmVmVmFsdWUg
JiYgaHJlZlZhbHVlLmluZGV4T2YoIjovLyIpID09PSAtMSkKKyAgICAgICAgICAgIHRhcmdldExv
Y2F0aW9uID0gV2ViSW5zcGVjdG9yLlBhcnNlZFVSTC5jb21wbGV0ZVVSTCh0aGlzLl9zb3VyY2VG
cmFtZS5fdXJsLCBocmVmVmFsdWUpOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtp
ZnlVUkxBc05vZGUodGFyZ2V0TG9jYXRpb24sIGhyZWZWYWx1ZSwgdW5kZWZpbmVkLCBpc0V4dGVy
bmFsKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGYwZmJiNDgxMTFjZGFjNmM2M2Yw
NDc3ZjUyODdlMTYyMDIxMWNlMmUuLjUyMTJhOGQ2ZjM0NzNkZjEwYTIyZmZmM2YzNWYyMTdlOTZh
MGJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTM0LDkgKzEzNCw5IEBAIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5jYW5vbmljYWxQcm9wZXJ0eU5hbWUgPSBmdW5jdGlvbihuYW1lKQog
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY29udGV4
dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5wb3B1bGF0ZUhyZWZDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGhpcy5ub2Rl
LCBldmVudCkpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICAgICAg
dmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEFwcGxpY2FibGVJdGVtcyh0aGlzLm5vZGUpOworICAg
ICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAogICAgIGdldCBfZm9yY2VkUHNldWRv
Q2xhc3NlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RhYmJlZFBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJl
ZFBhbmUuanMKaW5kZXggM2U4ZThhYjE5YTEwY2VkNmVkZDU1MTc3YjU3NjY4ZWFmODRlMzRlZS4u
YWFjM2M4MDU4MjYzYzIyMzVhOTliZWE1MjAzNzUzN2M1NGRhOTYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qcwpAQCAtNzEzLDExICs3
MTMsMTEgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmVUYWIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5fdGFiYmVkUGFuZS5jbG9zZUFsbFRhYnModHJ1ZSk7CiAgICAgICAgIH0KICAg
Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
KTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dShldmVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDbG9zZSIpLCBjbG9zZS5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlIE90aGVycyIpLCBjbG9zZU90
aGVycy5iaW5kKHRoaXMpKTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsb3NlIEFsbCIpLCBjbG9zZUFsbC5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsK
ICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRFZGl0b3IuanMKaW5kZXggNGJlOGYwZDgxYjA1MzVhMjFjMzU3YmQ4MTA4N2EzNGVj
N2IxOTNiNy4uYzQ0OTQzODVkMDhkZjU5N2YzMTgyN2I3YmQ4ODZkM2Q0ODRhYTJhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcwpAQCAt
MjM2LDYgKzIzNiwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckRlbGVnYXRlLnByb3RvdHlw
ZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db250ZXh0TWVudX0gY29udGV4dE1l
bnUKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqLwotICAgIHBvcHVs
YXRlVGV4dEFyZWFDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGxpbmVOdW1iZXIp
IHsgfQotfQorICAgIHBvcHVsYXRlVGV4dEFyZWFDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4
dE1lbnUsIGxpbmVOdW1iZXIpIHsgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBocmVmVmFsdWUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRXh0ZXJuYWwKKyAgICAgKiBA
cmV0dXJuIHtFbGVtZW50fQorICAgICAqLworICAgIGNyZWF0ZUxpbms6IGZ1bmN0aW9uKGhyZWZW
YWx1ZSwgaXNFeHRlcm5hbCkgeyB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggZGJmZDhhOGMwZmQ2MThjNmVkOWQ2
MjRmODFmMDc0NDVkNmYxNGFjNi4uNTdiYjEzZTM0Yzk4YWRjZjhjYjgxYjc2MjJiNWJlYjRlMjVm
NTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGlt
ZWxpbmVQYW5lbC5qcwpAQCAtMzMzLDExICszMzMsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2NvbnRleHRNZW51OiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnUoKTsKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudShldmVudCk7CiAgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3QuY2FuU2F2
ZSgpKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNhdmUgVGltZWxpbmUgZGF0YVx1MjAyNiIpLCB0aGlzLl9zYXZlVG9GaWxlLmJpbmQo
dGhpcyksIHRoaXMuX29wZXJhdGlvbkluUHJvZ3Jlc3MpOwogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZCBUaW1lbGluZSBkYXRhXHUyMDI2
IiksIHRoaXMuX2ZpbGVTZWxlY3RvckVsZW1lbnQuY2xpY2suYmluZCh0aGlzLl9maWxlU2VsZWN0
b3JFbGVtZW50KSwgdGhpcy5fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAgIGNvbnRleHRN
ZW51LnNob3coZXZlbnQpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CiAgICAgfSwKIAog
ICAgIF9zYXZlVG9GaWxlOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMK
aW5kZXggOGViYzExMjNkMjE2ZmFhMGQzMGUwNTE4YzUxNjcxZTZiMTc1OTRhMC4uNmJkOWE5OGYw
NzJjMDZmMGY0OTBjYTBlNjlkY2QxNDFjZTBkZTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5qcwpAQCAtNjY0LDcgKzY2NCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgZ2VuZXJhdGVQb3B1cENvbnRlbnQ6
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLm5lZWRzUHJldmlld0VsZW1lbnQodGhpcy50eXBlKSkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5idWlsZEltYWdlUHJldmlld0NvbnRlbnRzKHRoaXMudXJs
LCBmYWxzZSwgdGhpcy5fZ2VuZXJhdGVQb3B1cENvbnRlbnRXaXRoSW1hZ2VQcmV2aWV3LmJpbmQo
dGhpcywgY2FsbGJhY2spKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5ET01QcmVzZW50YXRp
b25VdGlscy5idWlsZEltYWdlUHJldmlld0NvbnRlbnRzKHRoaXMudXJsLCBmYWxzZSwgdGhpcy5f
Z2VuZXJhdGVQb3B1cENvbnRlbnRXaXRoSW1hZ2VQcmV2aWV3LmJpbmQodGhpcywgY2FsbGJhY2sp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVQb3B1cENvbnRlbnRX
aXRoSW1hZ2VQcmV2aWV3KGNhbGxiYWNrKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCmluZGV4IGMxZTA3NTg0ZWY3N2FkZTMyYzdjODI3
NzM1ZWNlYWJkMjcwNzAwY2QuLjk5ZjcxNGY3MjU4YTZmNzA5YmM2ZDVjYjkzNTU4NGU3OWFmZDBl
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGls
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMK
QEAgLTEwMTQsNzcgKzEwMTQsNiBAQCBXZWJJbnNwZWN0b3IucmV2ZXJ0RG9tQ2hhbmdlcyA9IGZ1
bmN0aW9uKGRvbUNoYW5nZXMpCiAgICAgfQogfQogCi0vKioKLSAqIEBwYXJhbSB7c3RyaW5nfSBp
bWFnZVVSTAotICogQHBhcmFtIHtib29sZWFufSBzaG93RGltZW5zaW9ucwotICogQHBhcmFtIHtm
dW5jdGlvbihFbGVtZW50PSl9IHVzZXJDYWxsYmFjawotICogQHBhcmFtIHtPYmplY3Q9fSBwcmVj
b21wdXRlZERpbWVuc2lvbnMKLSAqLwotV2ViSW5zcGVjdG9yLmJ1aWxkSW1hZ2VQcmV2aWV3Q29u
dGVudHMgPSBmdW5jdGlvbihpbWFnZVVSTCwgc2hvd0RpbWVuc2lvbnMsIHVzZXJDYWxsYmFjaywg
cHJlY29tcHV0ZWREaW1lbnNpb25zKQotewotICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTChpbWFnZVVSTCk7Ci0gICAgaWYgKCFy
ZXNvdXJjZSkgewotICAgICAgICB1c2VyQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHZhciBpbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWci
KTsKLSAgICBpbWFnZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGJ1aWxkQ29udGVu
dCwgZmFsc2UpOwotICAgIGltYWdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGVy
cm9yQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICByZXNvdXJjZS5wb3B1bGF0ZUltYWdlU291cmNlKGlt
YWdlRWxlbWVudCk7Ci0KLSAgICBmdW5jdGlvbiBlcnJvckNhbGxiYWNrKCkKLSAgICB7Ci0gICAg
ICAgIC8vIERyb3AgdGhlIGV2ZW50IHBhcmFtZXRlciB3aGVuIGludm9raW5nIHVzZXJDYWxsYmFj
ay4KLSAgICAgICAgdXNlckNhbGxiYWNrKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYnVpbGRD
b250ZW50KCkKLSAgICB7Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0YWJsZSIpOwotICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gImltYWdlLXBy
ZXZpZXctY29udGFpbmVyIjsKLSAgICAgICAgdmFyIG5hdHVyYWxXaWR0aCA9IHByZWNvbXB1dGVk
RGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5uYXR1cmFsV2lkdGggOiBpbWFnZUVs
ZW1lbnQubmF0dXJhbFdpZHRoOwotICAgICAgICB2YXIgbmF0dXJhbEhlaWdodCA9IHByZWNvbXB1
dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5uYXR1cmFsSGVpZ2h0IDogaW1h
Z2VFbGVtZW50Lm5hdHVyYWxIZWlnaHQ7Ci0gICAgICAgIHZhciBvZmZzZXRXaWR0aCA9IHByZWNv
bXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5vZmZzZXRXaWR0aCA6IG5h
dHVyYWxXaWR0aDsKLSAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHByZWNvbXB1dGVkRGltZW5z
aW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5vZmZzZXRIZWlnaHQgOiBuYXR1cmFsSGVpZ2h0
OwotICAgICAgICB2YXIgZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChzaG93RGltZW5zaW9ucykg
ewotICAgICAgICAgICAgaWYgKG9mZnNldEhlaWdodCA9PT0gbmF0dXJhbEhlaWdodCAmJiBvZmZz
ZXRXaWR0aCA9PT0gbmF0dXJhbFdpZHRoKQotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVkIHBpeGVscyIsIG9mZnNldFdpZHRoLCBv
ZmZzZXRIZWlnaHQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVkIHBpeGVscyAoTmF0dXJhbDog
JWQgXHhkNyAlZCBwaXhlbHMpIiwgb2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCwgbmF0dXJhbFdp
ZHRoLCBuYXR1cmFsSGVpZ2h0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRhaW5lci5jcmVh
dGVDaGlsZCgidHIiKS5jcmVhdGVDaGlsZCgidGQiLCAiaW1hZ2UtY29udGFpbmVyIikuYXBwZW5k
Q2hpbGQoaW1hZ2VFbGVtZW50KTsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uKQotICAgICAgICAg
ICAgY29udGFpbmVyLmNyZWF0ZUNoaWxkKCJ0ciIpLmNyZWF0ZUNoaWxkKCJ0ZCIpLmNyZWF0ZUNo
aWxkKCJzcGFuIiwgImRlc2NyaXB0aW9uIikudGV4dENvbnRlbnQgPSBkZXNjcmlwdGlvbjsKLSAg
ICAgICAgdXNlckNhbGxiYWNrKGNvbnRhaW5lcik7Ci0gICAgfQotfQotCi0vKioKLSAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51fSBjb250ZXh0TWVudQotICogQHBhcmFtIHtOb2Rl
fSBjb250ZXh0Tm9kZQotICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAqLwotV2ViSW5zcGVjdG9y
LnBvcHVsYXRlSHJlZkNvbnRleHRNZW51ID0gZnVuY3Rpb24oY29udGV4dE1lbnUsIGNvbnRleHRO
b2RlLCBldmVudCkKLXsKLSAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIikgfHwg
ZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLWV4
dGVybmFsLWxpbmsiKTsKLSAgICBpZiAoIWFuY2hvckVsZW1lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHZhciByZXNvdXJjZVVSTCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTEZv
clJlbGF0ZWROb2RlKGNvbnRleHROb2RlLCBhbmNob3JFbGVtZW50LmhyZWYpOwotICAgIGlmICgh
cmVzb3VyY2VVUkwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFkZCByZXNvdXJj
ZS1yZWxhdGVkIGFjdGlvbnMuCi0gICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3Iub3BlbkxpbmtFeHRlcm5hbGx5TGFiZWwoKSwgV2ViSW5zcGVjdG9yLm9wZW5SZXNvdXJjZS5i
aW5kKFdlYkluc3BlY3RvciwgcmVzb3VyY2VVUkwsIGZhbHNlKSk7Ci0gICAgaWYgKFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZUZvclVSTChyZXNvdXJjZVVSTCkpCi0gICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VN
ZW51VGl0bGVzKCkgPyAiT3BlbiBsaW5rIGluIFJlc291cmNlcyBwYW5lbCIgOiAiT3BlbiBMaW5r
IGluIFJlc291cmNlcyBQYW5lbCIpLCBXZWJJbnNwZWN0b3Iub3BlblJlc291cmNlLmJpbmQobnVs
bCwgcmVzb3VyY2VVUkwsIHRydWUpKTsKLSAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5jb3B5TGlua0FkZHJlc3NMYWJlbCgpLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29w
eVRleHQuYmluZChJbnNwZWN0b3JGcm9udGVuZEhvc3QsIHJlc291cmNlVVJMKSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIFdlYkluc3BlY3Rvci5fY29hbGVzY2luZ0xldmVsID0gMDsKIAogV2Vi
SW5zcGVjdG9yLnN0YXJ0QmF0Y2hVcGRhdGUgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9u
c1NpZGViYXJQYW5lLmpzCmluZGV4IGNhZWQ0Zjk4OGE0ODZkY2IxZWU2ZWQxNjkwNzI0MDQ4MTM5
MGQ2NGUuLmIyMzc3ZDVlM2VkMTUzNzQyY2UyMDUzN2FkZjJmODUwYmY2MmI3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1Np
ZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0
Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBXZWJJbnNw
ZWN0b3IuV2F0Y2hFeHByZXNzaW9uVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIAogICAg
IF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4
dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIHdhdGNo
IGV4cHJlc3Npb24iKSwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKICAg
ICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi53YXRjaEV4cHJlc3Npb25zLmxlbmd0
aCA+IDEpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGVsZXRlIGFsbCB3YXRjaCBleHByZXNzaW9ucyIpLCB0aGlzLl9kZWxldGVBbGxC
dXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50
KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0sCiAgICAgCiAgICAgX2RlbGV0
ZUFsbEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRleCA4Y2Y1M2QyNmM1Zjc1N2VlMWNjZjIwNWQxMTBm
ZDI1MDliOWQyMmFkLi5lZDgyMjVhZDI3OGZkNTJmNjMwMmE3MzM1OTA2YTQxZjkyNjFkYmM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCkBAIC0y
NTcsMTEgKzI1Nyw2IEBAIFdlYkluc3BlY3Rvci5zaG93UGFuZWwgPSBmdW5jdGlvbihwYW5lbCkK
IHsKIH0KIAotLyoqCi0gKiBAdHlwZSB7c3RyaW5nfSAKLSAqLwotV2ViSW5zcGVjdG9yLmluc3Bl
Y3RlZFBhZ2VEb21haW47Ci0KIFdlYkluc3BlY3Rvci5pc0NvbXBhY3RNb2RlID0gZnVuY3Rpb24o
KSB7IHJldHVybiBmYWxzZTsgfQogCiBXZWJJbnNwZWN0b3IuU291cmNlSmF2YVNjcmlwdFRva2Vu
aXplciA9IHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCmluZGV4IDI4ZGZhMmVlZTc2OWFiZjI5Y2NmYTEzNDRlZjc0NmY1YWY5M2E1ZGUuLjhl
Zjk3ZDZiYzFjMDAwMWExMmEzOTc5ODczMjZhZjM2OWI1NTllZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zMTksMTIgKzMxOSw2
IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgICAgICBlcnJvcldhcm5pbmdFbGVtZW50
LnRpdGxlID0gbnVsbDsKICAgICB9LAogCi0gICAgZ2V0IGluc3BlY3RlZFBhZ2VEb21haW4oKQot
ICAgIHsKLSAgICAgICAgdmFyIHBhcnNlZFVSTCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdl
VVJMICYmIFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMLmFzUGFyc2VkVVJMKCk7Ci0gICAg
ICAgIHJldHVybiBwYXJzZWRVUkwgPyBwYXJzZWRVUkwuaG9zdCA6ICIiOwotICAgIH0sCi0KICAg
ICBfaW5pdGlhbGl6ZUNhcGFiaWxpdHk6IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrLCBlcnJvciwg
cmVzdWx0KQogICAgIHsKICAgICAgICAgQ2FwYWJpbGl0aWVzW25hbWVdID0gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDZkYzUwYjgxNWY3ZWU1YTMyOTlmZWZjZGRiMzA4MWFiNzBjMWJkZDguLjA1Mzc2NThhNTk4
NjNjZTFiZWZhYmU5NmEwYTU5YmJlOTlmYjM0MWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Mi0wOC0yMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBtYWtlIHVpIGNvbXBvbmVudCBjb21waWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDgyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci9pbmRl
bnRhdGlvbi5odG1sOgorCiAyMDEyLTA4LTIzICBKb2huIE1lbGxvciAgPGpvaG5tZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBNdWx0aXBseSBsYXJnZSBmb250cyBs
ZXNzLCBhcyB0aGV5IGFyZSBhbHJlYWR5IG1vcmUgbGVnaWJsZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbAppbmRleCBjYTY0OGQ0ZDRkNjhkMmIxZjYz
MDI4YzE2MWE1ZjM5YmI5ODI0MWI0Li5iM2VjNGRmZjU2ODBhMTkxMzM1OTM5MDg4Nzc2MTM3ZTc0
MTIzMzZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0
aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5o
dG1sCkBAIC0xMiw3ICsxMiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHZhciBtb2RlbCA9IG5l
dyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsKCk7CiAgICAgbW9kZWwuc2V0VGV4dChzcmMp
OwogICAgIGZ1bmN0aW9uIG5vb3AoKSB7fQotICAgIHZhciB0ZXh0RWRpdG9yTWFpblBhbmVsID0g
bmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKG1vZGVsLCAnJywgbm9vcCwgbm9v
cCwgbm9vcCwgbm9vcCk7CisgICAgdmFyIHRleHRFZGl0b3JNYWluUGFuZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwobnVsbCwgbW9kZWwsICcnLCBub29wLCBub29wLCBu
b29wLCBub29wKTsKIAogICAgIHZhciBzZWxlY3Rpb247CiAgICAgZnVuY3Rpb24gZHVtcFRleHRN
b2RlbChtc2cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160403</attachid>
            <date>2012-08-24 05:31:17 -0700</date>
            <delta_ts>2012-08-24 06:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94827-20120824163112.patch</filename>
            <type>text/plain</type>
            <size>19833</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc2MDA0ZDc1ZTM4YmJh
YTk0NzY1YzIxNThiYWFkMWMzYzUzYmM4OS4uMzA2NGFjYzNmNTM2MjRiZTdlNjJkZjQ4MDQ0Yzdm
ODRlNzQ1NjkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEyLTA4LTI0ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1ha2UgdWkgY29tcG9uZW50IGNvbXBpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cyBpbnRv
IHRoZSBzZGstYXdhcmUgY29kZS4KKyAgICAgICAgRHJpdmUtYnkgbW9yZSBjb21waWxhdGlvbiBm
aXhlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlvblV0aWxzLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29u
dGVudHMuZXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0
aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50cy5idWlsZENvbnRlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0aWxzLmJ1aWxkSW1hZ2VQcmV2aWV3Q29u
dGVudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fY3JlYXRlTGluayk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9yZWZyZXNoTmFtZUNlbGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvUGFyc2VkVVJMLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBh
cnNlZFVSTC5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdh
dGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5w
cm90b3R5cGUuY3JlYXRlTGluayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JEZWxlZ2F0ZS5wcm90
b3R5cGUucG9wdWxhdGVUZXh0QXJlYUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yRGVsZWdhdGUucHJvdG90eXBlLmNyZWF0ZUxpbmspOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUu
Z2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVUlV
dGlscy5qczoKKworMjAxMi0wOC0yNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXNvbHZlIFVSTHMgdXBvbiBjcmVhdGlv
biwgZ2V0IHJpZCBvZiBwb3B1bGF0ZUhyZWZDb250ZXh0TWVudQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5MDAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDU3MmJjZmIxOTkzNWQyNDhiYWFi
MTQ0OGUyNjJiNTUyOTFmYWRiZmYuLjQ5MmIyOGI4ZjdmZjcxMTE2NjBlMzAyMDhiMmFkODIzMThl
ZWMzOTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250
LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKQEAgLTM3MCwxMSArMzcwLDEzIEBAIGRlZiBkdW1wX21vZHVsZShuYW1lLCByZWN1cnNpdmVs
eSwgcHJvY2Vzc2VkX21vZHVsZXMpOgogbW9kdWxlc19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkK
IGNvbXBpbGVyX2NvbW1hbmQgPSAiamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1z
dW1tYXJ5X2RldGFpbF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2ZWwgU0lNUExFX09QVElNSVpB
VElPTlMgLS13YXJuaW5nX2xldmVsIFZFUkJPU0UgLS1sYW5ndWFnZV9pbiBFQ01BU0NSSVBUNSAt
LWFjY2VwdF9jb25zdF9rZXl3b3JkIC0tbW9kdWxlX291dHB1dF9wYXRoX3ByZWZpeCAlcy8gXFxc
biIgJSBtb2R1bGVzX2RpcgogCi1wcm9jZXNzX3JlY3Vyc2l2ZWx5ID0gbGVuKHN5cy5hcmd2KSA9
PSAyCitwcm9jZXNzX3JlY3Vyc2l2ZWx5ID0gbGVuKHN5cy5hcmd2KSA+IDEKIGlmIHByb2Nlc3Nf
cmVjdXJzaXZlbHk6CiAgICAgbW9kdWxlX25hbWUgPSBzeXMuYXJndlsxXQogICAgIGlmIG1vZHVs
ZV9uYW1lICE9ICJhbGwiOgotICAgICAgICBtb2R1bGVzID0gW21vZHVsZXNfYnlfbmFtZVtzeXMu
YXJndlsxXV1dCisgICAgICAgIG1vZHVsZXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgx
LCBsZW4oc3lzLmFyZ3YpKToKKyAgICAgICAgICAgIG1vZHVsZXMuYXBwZW5kKG1vZHVsZXNfYnlf
bmFtZVtzeXMuYXJndltpXV0pCiAgICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgogICAgICAgICBj
b21tYW5kID0gY29tcGlsZXJfY29tbWFuZAogICAgICAgICBjb21tYW5kICs9ICIgICAgLS1leHRl
cm5zICIgKyBpbnNwZWN0b3JfZnJvbnRlbmRfcGF0aCArICIvZXh0ZXJucy5qcyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NUHJlc2VudGF0aW9uVXRp
bHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlv
blV0aWxzLmpzCmluZGV4IDE1MGZjNWY3NDlmMjM4OWQ4MTdjYzhhMWIxNzgyNTMyZWJjN2FmMTEu
LjkwNWI3OGY5ZjdhYmZiZmE5ZjRhOTZjMzQ2N2NhYzA1Njk2NGMzNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NUHJlc2VudGF0aW9uVXRpbHMuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01QcmVzZW50YXRpb25V
dGlscy5qcwpAQCAtOTYsMyArOTYsNTEgQEAgV2ViSW5zcGVjdG9yLkRPTVByZXNlbnRhdGlvblV0
aWxzLmxpbmtpZnlOb2RlQnlJZCA9IGZ1bmN0aW9uKG5vZGVJZCkKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiPG5vZGU+IikpOwog
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMubGlua2lmeU5vZGVS
ZWZlcmVuY2Uobm9kZSk7CiB9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGltYWdlVVJMCisg
KiBAcGFyYW0ge2Jvb2xlYW59IHNob3dEaW1lbnNpb25zCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEVs
ZW1lbnQ9KX0gdXNlckNhbGxiYWNrCisgKiBAcGFyYW0ge09iamVjdD19IHByZWNvbXB1dGVkRGlt
ZW5zaW9ucworICovCitXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJbWFn
ZVByZXZpZXdDb250ZW50cyA9IGZ1bmN0aW9uKGltYWdlVVJMLCBzaG93RGltZW5zaW9ucywgdXNl
ckNhbGxiYWNrLCBwcmVjb21wdXRlZERpbWVuc2lvbnMpCit7CisgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKGltYWdlVVJMKTsK
KyAgICBpZiAoIXJlc291cmNlKSB7CisgICAgICAgIHVzZXJDYWxsYmFjaygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdmFyIGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpOworICAgIGltYWdlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
YnVpbGRDb250ZW50LCBmYWxzZSk7CisgICAgaW1hZ2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImVycm9yIiwgZXJyb3JDYWxsYmFjaywgZmFsc2UpOworICAgIHJlc291cmNlLnBvcHVsYXRlSW1h
Z2VTb3VyY2UoaW1hZ2VFbGVtZW50KTsKKworICAgIGZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soKQor
ICAgIHsKKyAgICAgICAgLy8gRHJvcCB0aGUgZXZlbnQgcGFyYW1ldGVyIHdoZW4gaW52b2tpbmcg
dXNlckNhbGxiYWNrLgorICAgICAgICB1c2VyQ2FsbGJhY2soKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBidWlsZENvbnRlbnQoKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUg
PSAiaW1hZ2UtcHJldmlldy1jb250YWluZXIiOworICAgICAgICB2YXIgbmF0dXJhbFdpZHRoID0g
cHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm5hdHVyYWxXaWR0
aCA6IGltYWdlRWxlbWVudC5uYXR1cmFsV2lkdGg7CisgICAgICAgIHZhciBuYXR1cmFsSGVpZ2h0
ID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm5hdHVyYWxI
ZWlnaHQgOiBpbWFnZUVsZW1lbnQubmF0dXJhbEhlaWdodDsKKyAgICAgICAgdmFyIG9mZnNldFdp
ZHRoID0gcHJlY29tcHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm9mZnNl
dFdpZHRoIDogbmF0dXJhbFdpZHRoOworICAgICAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gcHJlY29t
cHV0ZWREaW1lbnNpb25zID8gcHJlY29tcHV0ZWREaW1lbnNpb25zLm9mZnNldEhlaWdodCA6IG5h
dHVyYWxIZWlnaHQ7CisgICAgICAgIHZhciBkZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKHNob3dE
aW1lbnNpb25zKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0SGVpZ2h0ID09PSBuYXR1cmFsSGVp
Z2h0ICYmIG9mZnNldFdpZHRoID09PSBuYXR1cmFsV2lkdGgpCisgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb24gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIiwgb2Zm
c2V0V2lkdGgsIG9mZnNldEhlaWdodCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb24gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxz
IChOYXR1cmFsOiAlZCBceGQ3ICVkIHBpeGVscykiLCBvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0
LCBuYXR1cmFsV2lkdGgsIG5hdHVyYWxIZWlnaHQpOworICAgICAgICB9CisKKyAgICAgICAgY29u
dGFpbmVyLmNyZWF0ZUNoaWxkKCJ0ciIpLmNyZWF0ZUNoaWxkKCJ0ZCIsICJpbWFnZS1jb250YWlu
ZXIiKS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAgICAgICBpZiAoZGVzY3JpcHRpb24p
CisgICAgICAgICAgICBjb250YWluZXIuY3JlYXRlQ2hpbGQoInRyIikuY3JlYXRlQ2hpbGQoInRk
IikuY3JlYXRlQ2hpbGQoInNwYW4iLCAiZGVzY3JpcHRpb24iKS50ZXh0Q29udGVudCA9IGRlc2Ny
aXB0aW9uOworICAgICAgICB1c2VyQ2FsbGJhY2soY29udGFpbmVyKTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwppbmRleCA3MjM4
OWM1YWI4MTRkZDhmZjI1NmJhY2ZkZGU4ZmVlNWY4OTdjN2RhLi45ZTY3Njk2OWY4MTU4YTI4MmIw
MzliMTQyYzU4MTdlMWI5NGM5NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGF0YWJhc2UuanMKQEAgLTc5LDEyICs3OSw2IEBAIFdlYkluc3BlY3Rvci5EYXRh
YmFzZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RvbWFpbiA9IHg7CiAgICAgfSwKIAot
ICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd9ICovCi0gICAgZ2V0IGRpc3BsYXlEb21haW4oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5RG9tYWluKHRoaXMuX2RvbWFp
bik7Ci0gICAgfSwKLQogICAgIC8qKgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPHN0
cmluZz4pfSBjYWxsYmFjawogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggMGI1Njk4MGQxODg0
YmVjZmU0MjdiNjhlZmI3NTk5ZDg1MGI5MWQ1Yy4uM2E0NWM2YTc3NTIxNWVmMjcyNTJkYmFlMmQz
ZTEzZjVhOGZlYTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC01NSw3ICs1NSw3IEBAIFdlYkluc3Bl
Y3Rvci5EZWZhdWx0VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUpCiAgICAgdmFy
IHN5bmNTY3JvbGxMaXN0ZW5lciA9IHRoaXMuX3N5bmNTY3JvbGwuYmluZCh0aGlzKTsKICAgICB2
YXIgc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3RlbmVyID0gdGhpcy5fc3luY0RlY29yYXRpb25z
Rm9yTGluZS5iaW5kKHRoaXMpOwogICAgIHZhciBzeW5jTGluZUhlaWdodExpc3RlbmVyID0gdGhp
cy5fc3luY0xpbmVIZWlnaHQuYmluZCh0aGlzKTsKLSAgICB0aGlzLl9tYWluUGFuZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwodGhpcy5fdGV4dE1vZGVsLCB1cmwsIHN5
bmNTY3JvbGxMaXN0ZW5lciwgc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3RlbmVyLCBlbnRlclRl
eHRDaGFuZ2VNb2RlLCBleGl0VGV4dENoYW5nZU1vZGUpOworICAgIHRoaXMuX21haW5QYW5lbCA9
IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCh0aGlzLl9kZWxlZ2F0ZSwgdGhp
cy5fdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGxMaXN0ZW5lciwgc3luY0RlY29yYXRpb25zRm9y
TGluZUxpc3RlbmVyLCBlbnRlclRleHRDaGFuZ2VNb2RlLCBleGl0VGV4dENoYW5nZU1vZGUpOwog
ICAgIHRoaXMuX2d1dHRlclBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yR3V0dGVy
UGFuZWwodGhpcy5fdGV4dE1vZGVsLCBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlzdGVuZXIsIHN5
bmNMaW5lSGVpZ2h0TGlzdGVuZXIpOwogCiAgICAgdGhpcy5fbWFpblBhbmVsLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5faGFuZGxlU2Nyb2xsQ2hhbmdlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CkBAIC00MTMsNiArNDEzLDkgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQp
CiAgICAgeworICAgICAgICB2YXIgYW5jaG9yID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoTm9kZU5hbWUoImEiKTsKKyAgICAgICAgaWYgKGFuY2hvcikKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudSgpOwogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1saW5lLW51bWJlciIpOwogICAgICAgICBpZiAodGFy
Z2V0KQpAQCAtMTIwOCwxMyArMTIxMSwxNSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckd1dHRl
ckNodW5rLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWx9CisgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yRGVsZWdhdGV9IGRlbGVnYXRlCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTW9kZWx9IHRleHRNb2RlbAogICogQHBhcmFtIHs/c3RyaW5nfSB1cmwKICAq
LwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbih0ZXh0TW9kZWws
IHVybCwgc3luY1Njcm9sbExpc3RlbmVyLCBzeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlzdGVuZXIs
IGVudGVyVGV4dENoYW5nZU1vZGUsIGV4aXRUZXh0Q2hhbmdlTW9kZSkKK1dlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUsIHRleHRNb2RlbCwgdXJsLCBz
eW5jU2Nyb2xsTGlzdGVuZXIsIHN5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5lciwgZW50ZXJU
ZXh0Q2hhbmdlTW9kZSwgZXhpdFRleHRDaGFuZ2VNb2RlKQogewogICAgIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLmNhbGwodGhpcywgdGV4dE1vZGVsKTsKIAorICAgIHRoaXMu
X2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgdGhpcy5fc3luY1Njcm9sbExpc3RlbmVyID0gc3lu
Y1Njcm9sbExpc3RlbmVyOwogICAgIHRoaXMuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5l
ciA9IHN5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5lcjsKICAgICB0aGlzLl9lbnRlclRleHRD
aGFuZ2VNb2RlID0gZW50ZXJUZXh0Q2hhbmdlTW9kZTsKQEAgLTIwOTEsMjggKzIwOTYsMTYgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBxdW90ZSA9IG51bGw7CiAKLSAgICAgICAgdmFyIGEgPSBXZWJJbnNw
ZWN0b3IubGlua2lmeVVSTEFzTm9kZSh0aGlzLl9yZXdyaXRlSHJlZihjb250ZW50KSwgY29udGVu
dCwgdW5kZWZpbmVkLCBpc0V4dGVybmFsKTsKICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gIndlYmtpdC1o
dG1sLWF0dHJpYnV0ZS12YWx1ZSI7CiAgICAgICAgIGlmIChxdW90ZSkKICAgICAgICAgICAgIHNw
YW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocXVvdGUpKTsKLSAgICAgICAg
c3Bhbi5hcHBlbmRDaGlsZChhKTsKKyAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZCh0aGlzLl9kZWxl
Z2F0ZS5jcmVhdGVMaW5rKGNvbnRlbnQsIGlzRXh0ZXJuYWwpKTsKICAgICAgICAgaWYgKHF1b3Rl
KQogICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShx
dW90ZSkpOwogICAgICAgICByZXR1cm4gc3BhbjsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmc9fSBocmVmVmFsdWUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0V4
dGVybmFsCi0gICAgICovCi0gICAgX3Jld3JpdGVIcmVmOiBmdW5jdGlvbihocmVmVmFsdWUsIGlz
RXh0ZXJuYWwpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3VybCB8fCAhaHJlZlZhbHVlIHx8
IGhyZWZWYWx1ZS5pbmRleE9mKCI6Ly8iKSA+IDApCi0gICAgICAgICAgICByZXR1cm4gaHJlZlZh
bHVlOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBhcnNlZFVSTC5jb21wbGV0ZVVSTCh0
aGlzLl91cmwsIGhyZWZWYWx1ZSk7Ci0gICAgfSwKLQogICAgIF9oYW5kbGVET01VcGRhdGVzOiBm
dW5jdGlvbihlKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdM
ZXZlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qcwppbmRleCA4ZGUwZWU2N2IxOWJhNzFkMjIwYmYxNjgzNDQ2NGM2YjYzZjZlNmYy
Li5lYjEzMTczZGIzNmEzMWU2OGY3OTM1OGJiNTY2NmQ2ZDNhNmZkOWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00
MzIsOSArNDMyLDkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgIHsKICAgICAgICAgdmFyIGxpc3RJdGVtID0gYW5jaG9yLmVuY2xvc2luZ05vZGVPclNlbGZX
aXRoTm9kZU5hbWUoImxpIik7CiAgICAgICAgIGlmIChsaXN0SXRlbSAmJiBsaXN0SXRlbS50cmVl
RWxlbWVudCkKLSAgICAgICAgICAgIHRoaXMuX2xvYWREaW1lbnNpb25zRm9yTm9kZShsaXN0SXRl
bS50cmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLmJ1aWxkSW1hZ2VQcmV2aWV3Q29udGVudHMuYmlu
ZChXZWJJbnNwZWN0b3IsIGFuY2hvci5ocmVmLCB0cnVlLCBzaG93UG9wb3ZlcikpOworICAgICAg
ICAgICAgdGhpcy5fbG9hZERpbWVuc2lvbnNGb3JOb2RlKGxpc3RJdGVtLnRyZWVFbGVtZW50LCBX
ZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJbWFnZVByZXZpZXdDb250ZW50
cy5iaW5kKFdlYkluc3BlY3Rvci5ET01QcmVzZW50YXRpb25VdGlscywgYW5jaG9yLmhyZWYsIHRy
dWUsIHNob3dQb3BvdmVyKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5idWlsZEltYWdlUHJldmlld0NvbnRlbnRzKGFuY2hvci5ocmVmLCB0cnVlLCBzaG93UG9wb3Zl
cik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRE9NUHJlc2VudGF0aW9uVXRpbHMuYnVpbGRJ
bWFnZVByZXZpZXdDb250ZW50cyhhbmNob3IuaHJlZiwgdHJ1ZSwgc2hvd1BvcG92ZXIpOwogCiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnQ9fSBjb250ZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRl
eCA1YzI2NzE4YTE0YmZkYWJmMmY4MTRlMGM5NjNmZTVhZTZhYTdjZjEwLi5jNzU1ZjYzZTFkNzMy
NDg2MmMwOWUwZGNmZjA0YWEzMDBkNDAyZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtMTkyNiw3ICsxOTI2LDcgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9uYW1lQ2VsbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9m
aWxlTmFtZSgpKSk7CiAKIAotICAgICAgICB2YXIgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlz
cGxheURvbWFpbih0aGlzLl9yZXF1ZXN0LnBhcnNlZFVSTC5ob3N0KTsKKyAgICAgICAgdmFyIHN1
YnRpdGxlID0gdGhpcy5fcmVxdWVzdC5wYXJzZWRVUkwuaG9zdDsKIAogICAgICAgICBpZiAodGhp
cy5fcmVxdWVzdC5wYXJzZWRVUkwucGF0aCkKICAgICAgICAgICAgIHN1YnRpdGxlICs9IHRoaXMu
X3JlcXVlc3QuZm9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9QYXJzZWRVUkwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1BhcnNlZFVSTC5qcwppbmRleCA1OTJmYTk0Y2ZmZDJiM2M2MGYwNzA0YWRkNmJlMDE5Y2JkNzE3
OWM4Li4zMWEzMGY2MGNiNGVmYzczYWFlN2M5Njg3MjAyNDUzMWI1ZmRmYTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhcnNlZFVSTC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhcnNlZFVSTC5qcwpAQCAtMTU4LDcg
KzE1OCw3IEBAIFdlYkluc3BlY3Rvci5QYXJzZWRVUkwucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhpcy5sYXN0UGF0aENvbXBvbmVudDsKICAgICAgICAgaWYg
KCF0aGlzLl9kaXNwbGF5TmFtZSkKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gV2Vi
SW5zcGVjdG9yLmRpc3BsYXlEb21haW4odGhpcy5ob3N0KTsKKyAgICAgICAgICAgIHRoaXMuX2Rp
c3BsYXlOYW1lID0gdGhpcy5ob3N0OwogICAgICAgICBpZiAoIXRoaXMuX2Rpc3BsYXlOYW1lICYm
IHRoaXMudXJsKQogICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlzLnVybC50cmlt
VVJMKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluID8gV2ViSW5zcGVjdG9yLmluc3Bl
Y3RlZFBhZ2VEb21haW4gOiAiIik7CiAgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TmFtZSA9PT0g
Ii8iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVV0aWxzLmpzCmluZGV4IGNlMDcwMjZiZTIzNzI5MzdlZjMxYWM0NjY2YWJhZTMyYjNmZDliOWQu
LjE2YTYyNjc2ZThlOTE2YzY2MTgwZDY0N2M4MjIzMDI3ODIzODQ5MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKQEAgLTQ2
LDE2ICs0Niw2IEBAIFdlYkluc3BlY3Rvci5mb3JBbGxSZXNvdXJjZXMgPSBmdW5jdGlvbihjYWxs
YmFjaykKIH0KIAogLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gaG9zdAotICovCi1XZWJJbnNwZWN0
b3IuZGlzcGxheURvbWFpbiA9IGZ1bmN0aW9uKGhvc3QpCi17Ci0gICAgaWYgKGhvc3QgJiYgKCFX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbiB8fCAoV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFBhZ2VEb21haW4gJiYgaG9zdCAhPT0gV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4p
KSkKLSAgICAgICAgcmV0dXJuIGhvc3Q7Ci0gICAgcmV0dXJuICIiOwotfQotCi0vKioKICAqIEBw
YXJhbSB7c3RyaW5nfSB1cmwKICAqIEByZXR1cm4ge3N0cmluZ30KICAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggMmY0OThm
M2EwMzM1YTIwMjVmOGZiMjY3ZDE5ODRkMDNmYThiZTcxZC4uZDFhNDA0NjYxZGE5YjA4MzIxZTI2
NWJmMmFiOTU1YjAxOGVjNjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC02OTUsNiArNjk1LDE5IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yRGVsZWdhdGVGb3JTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgcG9w
dWxhdGVUZXh0QXJlYUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lLnBvcHVsYXRlVGV4dEFyZWFDb250
ZXh0TWVudShjb250ZXh0TWVudSwgbGluZU51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBocmVmVmFsdWUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
RXh0ZXJuYWwKKyAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQorICAgICAqLworICAgIGNyZWF0ZUxp
bms6IGZ1bmN0aW9uKGhyZWZWYWx1ZSwgaXNFeHRlcm5hbCkKKyAgICB7CisgICAgICAgIHZhciB0
YXJnZXRMb2NhdGlvbiA9IGhyZWZWYWx1ZTsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUZyYW1l
Ll91cmwgJiYgaHJlZlZhbHVlICYmIGhyZWZWYWx1ZS5pbmRleE9mKCI6Ly8iKSA9PT0gLTEpCisg
ICAgICAgICAgICB0YXJnZXRMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5QYXJzZWRVUkwuY29tcGxl
dGVVUkwodGhpcy5fc291cmNlRnJhbWUuX3VybCwgaHJlZlZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHRhcmdldExvY2F0aW9uLCBocmVmVmFsdWUs
IHVuZGVmaW5lZCwgaXNFeHRlcm5hbCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKaW5kZXggNGJlOGYwZDgxYjA1MzVh
MjFjMzU3YmQ4MTA4N2EzNGVjN2IxOTNiNy4uYzQ0OTQzODVkMDhkZjU5N2YzMTgyN2I3YmQ4ODZk
M2Q0ODRhYTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dEVkaXRvci5qcwpAQCAtMjM2LDYgKzIzNiwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ckRlbGVnYXRlLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db250
ZXh0TWVudX0gY29udGV4dE1lbnUKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgog
ICAgICAqLwotICAgIHBvcHVsYXRlVGV4dEFyZWFDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4
dE1lbnUsIGxpbmVOdW1iZXIpIHsgfQotfQorICAgIHBvcHVsYXRlVGV4dEFyZWFDb250ZXh0TWVu
dTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGxpbmVOdW1iZXIpIHsgfSwKIAorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBocmVmVmFsdWUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
RXh0ZXJuYWwKKyAgICAgKiBAcmV0dXJuIHtFbGVtZW50fQorICAgICAqLworICAgIGNyZWF0ZUxp
bms6IGZ1bmN0aW9uKGhyZWZWYWx1ZSwgaXNFeHRlcm5hbCkgeyB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuanMKaW5kZXggOGViYzExMjNkMjE2ZmFhMGQzMGUwNTE4YzUxNjcxZTZiMTc1
OTRhMC4uNmJkOWE5OGYwNzJjMDZmMGY0OTBjYTBlNjlkY2QxNDFjZTBkZTFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtNjY0LDcgKzY2NCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgZ2VuZXJh
dGVQb3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLm5lZWRzUHJldmlld0VsZW1lbnQo
dGhpcy50eXBlKSkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5idWlsZEltYWdlUHJldmlld0Nv
bnRlbnRzKHRoaXMudXJsLCBmYWxzZSwgdGhpcy5fZ2VuZXJhdGVQb3B1cENvbnRlbnRXaXRoSW1h
Z2VQcmV2aWV3LmJpbmQodGhpcywgY2FsbGJhY2spKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5ET01QcmVzZW50YXRpb25VdGlscy5idWlsZEltYWdlUHJldmlld0NvbnRlbnRzKHRoaXMudXJs
LCBmYWxzZSwgdGhpcy5fZ2VuZXJhdGVQb3B1cENvbnRlbnRXaXRoSW1hZ2VQcmV2aWV3LmJpbmQo
dGhpcywgY2FsbGJhY2spKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZ2VuZXJh
dGVQb3B1cENvbnRlbnRXaXRoSW1hZ2VQcmV2aWV3KGNhbGxiYWNrKTsKICAgICB9LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCmluZGV4IGNhMjhlNzlk
YjI4MGJlMGNlZjczZDQwNzBlNTE5NmRjNzM0OWYzZjMuLmFjNzQxOTUzMWNiYzg5NTQ4ZDM5Yjkx
NTRhMTY3YjA1NDZhN2JjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVUlVdGlscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJVXRpbHMuanMKQEAgLTEwMzEsNTQgKzEwMzEsNiBAQCBXZWJJbnNwZWN0b3IucmV2ZXJ0
RG9tQ2hhbmdlcyA9IGZ1bmN0aW9uKGRvbUNoYW5nZXMpCiAgICAgfQogfQogCi0vKioKLSAqIEBw
YXJhbSB7c3RyaW5nfSBpbWFnZVVSTAotICogQHBhcmFtIHtib29sZWFufSBzaG93RGltZW5zaW9u
cwotICogQHBhcmFtIHtmdW5jdGlvbihFbGVtZW50PSl9IHVzZXJDYWxsYmFjawotICogQHBhcmFt
IHtPYmplY3Q9fSBwcmVjb21wdXRlZERpbWVuc2lvbnMKLSAqLwotV2ViSW5zcGVjdG9yLmJ1aWxk
SW1hZ2VQcmV2aWV3Q29udGVudHMgPSBmdW5jdGlvbihpbWFnZVVSTCwgc2hvd0RpbWVuc2lvbnMs
IHVzZXJDYWxsYmFjaywgcHJlY29tcHV0ZWREaW1lbnNpb25zKQotewotICAgIHZhciByZXNvdXJj
ZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTChpbWFnZVVS
TCk7Ci0gICAgaWYgKCFyZXNvdXJjZSkgewotICAgICAgICB1c2VyQ2FsbGJhY2soKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBpbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKLSAgICBpbWFnZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsIGJ1aWxkQ29udGVudCwgZmFsc2UpOwotICAgIGltYWdlRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJlcnJvciIsIGVycm9yQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICByZXNvdXJjZS5wb3B1bGF0
ZUltYWdlU291cmNlKGltYWdlRWxlbWVudCk7Ci0KLSAgICBmdW5jdGlvbiBlcnJvckNhbGxiYWNr
KCkKLSAgICB7Ci0gICAgICAgIC8vIERyb3AgdGhlIGV2ZW50IHBhcmFtZXRlciB3aGVuIGludm9r
aW5nIHVzZXJDYWxsYmFjay4KLSAgICAgICAgdXNlckNhbGxiYWNrKCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gYnVpbGRDb250ZW50KCkKLSAgICB7Ci0gICAgICAgIHZhciBjb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgICAgICBjb250YWluZXIuY2xhc3NO
YW1lID0gImltYWdlLXByZXZpZXctY29udGFpbmVyIjsKLSAgICAgICAgdmFyIG5hdHVyYWxXaWR0
aCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5uYXR1cmFs
V2lkdGggOiBpbWFnZUVsZW1lbnQubmF0dXJhbFdpZHRoOwotICAgICAgICB2YXIgbmF0dXJhbEhl
aWdodCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5uYXR1
cmFsSGVpZ2h0IDogaW1hZ2VFbGVtZW50Lm5hdHVyYWxIZWlnaHQ7Ci0gICAgICAgIHZhciBvZmZz
ZXRXaWR0aCA9IHByZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5v
ZmZzZXRXaWR0aCA6IG5hdHVyYWxXaWR0aDsKLSAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHBy
ZWNvbXB1dGVkRGltZW5zaW9ucyA/IHByZWNvbXB1dGVkRGltZW5zaW9ucy5vZmZzZXRIZWlnaHQg
OiBuYXR1cmFsSGVpZ2h0OwotICAgICAgICB2YXIgZGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChz
aG93RGltZW5zaW9ucykgewotICAgICAgICAgICAgaWYgKG9mZnNldEhlaWdodCA9PT0gbmF0dXJh
bEhlaWdodCAmJiBvZmZzZXRXaWR0aCA9PT0gbmF0dXJhbFdpZHRoKQotICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVkIHBpeGVscyIs
IG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGRlc2NyaXB0aW9uID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVkIHBp
eGVscyAoTmF0dXJhbDogJWQgXHhkNyAlZCBwaXhlbHMpIiwgb2Zmc2V0V2lkdGgsIG9mZnNldEhl
aWdodCwgbmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbnRhaW5lci5jcmVhdGVDaGlsZCgidHIiKS5jcmVhdGVDaGlsZCgidGQiLCAiaW1hZ2UtY29u
dGFpbmVyIikuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKLSAgICAgICAgaWYgKGRlc2NyaXB0
aW9uKQotICAgICAgICAgICAgY29udGFpbmVyLmNyZWF0ZUNoaWxkKCJ0ciIpLmNyZWF0ZUNoaWxk
KCJ0ZCIpLmNyZWF0ZUNoaWxkKCJzcGFuIiwgImRlc2NyaXB0aW9uIikudGV4dENvbnRlbnQgPSBk
ZXNjcmlwdGlvbjsKLSAgICAgICAgdXNlckNhbGxiYWNrKGNvbnRhaW5lcik7Ci0gICAgfQotfQot
CiBXZWJJbnNwZWN0b3IuX2NvYWxlc2NpbmdMZXZlbCA9IDA7CiAKIFdlYkluc3BlY3Rvci5zdGFy
dEJhdGNoVXBkYXRlID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9pbmRlbnRhdGlvbi5odG1sCmluZGV4IGNhNjQ4ZDRkNGQ2OGQyYjFmNjMwMjhjMTYxYTVmMzli
Yjk4MjQxYjQuLmIzZWM0ZGZmNTY4MGExOTEzMzU5MzkwODg3NzYxMzdlNzQxMjMzNmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0aW9uLmh0bWwKQEAgLTEyLDcg
KzEyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIG1vZGVsID0gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTW9kZWwoKTsKICAgICBtb2RlbC5zZXRUZXh0KHNyYyk7CiAgICAgZnVuY3Rp
b24gbm9vcCgpIHt9Ci0gICAgdmFyIHRleHRFZGl0b3JNYWluUGFuZWwgPSBuZXcgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwobW9kZWwsICcnLCBub29wLCBub29wLCBub29wLCBub29w
KTsKKyAgICB2YXIgdGV4dEVkaXRvck1haW5QYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbChudWxsLCBtb2RlbCwgJycsIG5vb3AsIG5vb3AsIG5vb3AsIG5vb3ApOwog
CiAgICAgdmFyIHNlbGVjdGlvbjsKICAgICBmdW5jdGlvbiBkdW1wVGV4dE1vZGVsKG1zZykK
</data>
<flag name="review"
          id="170962"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>