<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>9025</bug_id>
          
          <creation_ts>2016-02-02 03:51:29 +0000</creation_ts>
          <short_desc>Yocto 2.1M2_rc1: Build appliance got stuck when build core-image-minimal</short_desc>
          <delta_ts>2016-08-02 03:23:04 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>Runtime</product>
          <component>build-appliance</component>
          <version>2.1</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.1 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ke Zou">ke.zou</reporter>
          <assigned_to name="Juro Bystricky">juro.bystricky</assigned_to>
          <cc>alexandru.c.georgescu</cc>
    
    <cc>jose.perez.carranza</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>yi.zhao</cc>
          
          <qa_contact name="Ke Zou">ke.zou</qa_contact>
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58406</commentid>
    <comment_count>0</comment_count>
      <attachid>2958</attachid>
    <who name="Ke Zou">ke.zou</who>
    <bug_when>2016-02-02 03:51:29 +0000</bug_when>
    <thetext>Created attachment 2958
build-appliance error log

Build appliance image location:
http://autobuilder.yoctoproject.org/pub/releases/yocto-2.1_M2.rc1/build-appliance/

How to receate this issue:
On test host(Ubuntu 14), when using build appliance to build core-image-minimal,
no matter what arch is chosen, the build fails.

Piece of Errorlog message(the log has been attached):

Build Configuration:
BB_VERSION        = &quot;1.28.0&quot;
BUILD_SYS         = &quot;x86_64-linux&quot;
NATIVELSBSTRING   = &quot;poky-2.0+snapshot-20160127&quot;
TARGET_SYS        = &quot;mips-poky-linux&quot;
MACHINE           = &quot;qemumips&quot;
DISTRO            = &quot;poky&quot;
DISTRO_VERSION    = &quot;2.0+snapshot-20160201&quot;
TUNE_FEATURES     = &quot;o32 bigendian fpu-hard mips32r2&quot;
TARGET_FPU        = &quot;&quot;
meta
meta-yocto
meta-yocto-bsp    = &quot;&lt;unknown&gt;:&lt;unknown&gt;&quot;

NOTE: Preparing RunQueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 1 of 1903 (ID: 1273, /home/builder/poky/meta/recipes-devtools/quilt/quilt-native_0.64.bb, do_fetch)
NOTE: Running task 2 of 1903 (ID: 1587, /home/builder/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb, do_fetch)
ERROR: Execution of event handler &apos;run_buildstats&apos; failed
Traceback (most recent call last):
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 154, in run_buildstats(e=&lt;bb.build.TaskSucceeded object at 0x7f43a769f210&gt;):
         elif isinstance(e, bb.build.TaskSucceeded):
    &gt;        write_task_data(&quot;passed&quot;, os.path.join(taskdir, e.task), e, d)
             if e.task == &quot;do_rootfs&quot;:
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 85, in write_task_data(status=&apos;passed&apos;, logfile=&apos;/home/builder/poky/build/tmp/buildstats/20160201020056/quilt-native-0.64-r0/do_fetch&apos;, e=&lt;bb.build.TaskSucceeded object at 0x7f43a769f210&gt;, d=&lt;bb.data_smart.DataSmart object at 0x7f43a7606e50&gt;):
                                         (e.task, elapsedtime)))
    &gt;            cpu, iostats, resources, childres = get_process_cputime(os.getpid())
                 if cpu:
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 29, in get_process_cputime(pid=1386):
         iostats = {}
    &gt;    with open(&quot;/proc/%d/io&quot; % pid, &quot;r&quot;) as f:
             while True:
IOError: [Errno 2] No such file or directory: &apos;/proc/1386/io&apos;

ERROR: Build of do_fetch failed
ERROR: Traceback (most recent call last):
  File &quot;/home/builder/poky/bitbake/lib/bb/build.py&quot;, line 560, in exec_task
    return _exec_task(fn, task, d, quieterr)
  File &quot;/home/builder/poky/bitbake/lib/bb/build.py&quot;, line 534, in _exec_task
    event.fire(TaskSucceeded(task, logfn, localdata), localdata)
  File &quot;/home/builder/poky/bitbake/lib/bb/event.py&quot;, line 171, in fire
    fire_class_handlers(event, d)
  File &quot;/home/builder/poky/bitbake/lib/bb/event.py&quot;, line 110, in fire_class_handlers
    execute_handler(name, handler, event, d)
  File &quot;/home/builder/poky/bitbake/lib/bb/event.py&quot;, line 82, in execute_handler
    ret = handler(event)
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 154, in run_buildstats
    write_task_data(&quot;passed&quot;, os.path.join(taskdir, e.task), e, d)
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 85, in write_task_data
    cpu, iostats, resources, childres = get_process_cputime(os.getpid())
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 29, in get_process_cputime
    with open(&quot;/proc/%d/io&quot; % pid, &quot;r&quot;) as f:
IOError: [Errno 2] No such file or directory: &apos;/proc/1386/io&apos;

ERROR: Execution of event handler &apos;run_buildstats&apos; failed
Traceback (most recent call last):
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 154, in run_buildstats(e=&lt;bb.build.TaskSucceeded object at 0x7f43a764dfd0&gt;):
         elif isinstance(e, bb.build.TaskSucceeded):
    &gt;        write_task_data(&quot;passed&quot;, os.path.join(taskdir, e.task), e, d)
             if e.task == &quot;do_rootfs&quot;:
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 85, in write_task_data(status=&apos;passed&apos;, logfile=&apos;/home/builder/poky/build/tmp/buildstats/20160201020056/texinfo-dummy-native-1.0-r0/do_fetch&apos;, e=&lt;bb.build.TaskSucceeded object at 0x7f43a764dfd0&gt;, d=&lt;bb.data_smart.DataSmart object at 0x7f43aeaaf490&gt;):
                                         (e.task, elapsedtime)))
    &gt;            cpu, iostats, resources, childres = get_process_cputime(os.getpid())
                 if cpu:
  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 29, in get_process_cputime(pid=1387):
         iostats = {}
    &gt;    with open(&quot;/proc/%d/io&quot; % pid, &quot;r&quot;) as f:
             while True:
IOError: [Errno 2] No such file or directory: &apos;/proc/1387/io&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58667</commentid>
    <comment_count>1</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-05 17:12:54 +0000</bug_when>
    <thetext>seems a process does not exist any more by the time we try to obtain some info about the process...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58675</commentid>
    <comment_count>2</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-05 18:12:47 +0000</bug_when>
    <thetext>on second thought, it seems to be a permission error, as the preceding read executed without errors: 

   with open(&quot;/proc/%d/stat&quot; % pid, &quot;r&quot;) as f:

but the following one failed:

    with open(&quot;/proc/%d/io&quot; % pid, &quot;r&quot;) as f:

Looking at the permissions we see they have different permission:

-r--------  io
-r--r--r--  stat</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58676</commentid>
    <comment_count>3</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-05 18:16:16 +0000</bug_when>
    <thetext>But then again, the error explicitly says:

IOError: [Errno 2] No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58932</commentid>
    <comment_count>4</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-11 21:36:37 +0000</bug_when>
    <thetext>Something does not make sense:
The Build Appliance recipe clones poky based on commit:
SRCREV ?= &quot;992e5774714ef44bc91d45e2aaf2acfc23c72d63&quot; //12-01-2015 Precedes 2.1_M1

but the error message come from 

  File &quot;/home/builder/poky/meta/classes/buildstats.bbclass&quot;, line 29, in get_process_cputime(pid=1386):
         iostats = {}
    &gt;    with open(&quot;/proc/%d/io&quot; % pid, &quot;r&quot;) as f:
             while True:
IOError: [Errno 2] No such file or directory: &apos;/proc/1386/io&apos;

adfdca4df18f4b9d261dd865243accc868eeacc7 //12-18-2015 follows 2.1_M1
How can this happen? The BA image should not contain the new buidstats.bbclass!

Also, the yocto master does not seem to have 2.1M2 tag, only 2.1M1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58978</commentid>
    <comment_count>5</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-12 23:30:53 +0000</bug_when>
    <thetext>So there is one logical explanation:
I assumed BA was built using this GIT commit:
SRCREV ?= &quot;992e5774714ef44bc91d45e2aaf2acfc23c72d63&quot;

Apparently not, as that commit does not contain the code printing the error message.
So somewhere during the build SRCREV was set to some other value.
The proper way is to modify the recipe as:
SRCREV = &quot;992e5774714ef44bc91d45e2aaf2acfc23c72d63&quot;

to guarantee a known BA content.

Once I rebuild BA with this, there were no errors. 

Speaking of a known BA content, it also populates the folder &quot;downloads&quot; using the envar:
 
cp -RpL ${DL_DIR}/* ${IMAGE_ROOTFS}/home/builder/poky/build/downloads/

I don&apos;t think {DL_DIR} contents are unique, and can be quite huge.
So best leaving this out of the recipe. This will make the BA binaries significantly smaller as well. I am not sure what was the the reason behind the decision to copy downloaded data from host machine to BA image during the BA build as opposed to download the data on demand when it is actually needed.
(The user in essence downloads the same data anyway: Either as a part of a giant BA, or as required by recipe at the time the BA is used for building a recipe)

The BA should somehow reflect its contents, as there are many BAs around, for various Yocto releases. One way is to tag the actual commit number to the name.

Lastly, each build of BA leaves behind almost 100G of used disk space.
The files that are no longer needed should be deleted automatically by the recipe.

I am going to post a patch to fix various BA issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58979</commentid>
    <comment_count>6</comment_count>
      <attachid>2982</attachid>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-12 23:32:07 +0000</bug_when>
    <thetext>Created attachment 2982
Several fixes for Build Appliance recipe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59062</commentid>
    <comment_count>7</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-16 08:11:51 +0000</bug_when>
    <thetext>I built my own build-appliance image, &quot;bitbake build-appiance-image&quot; then ran it, &quot;runqemu qemux86&quot;. Once it booted, I looked at /proc and it looks like the io files are missing from this image.

To address this bug, we likely need to:

a) Check for the io files during the sanity check and print an warning to user that statistics collection will be impacted if they are missing

b) Check for the io files before opening them

c) Figure out which kernel option needs to be set and set it for our qemux86* builds (and mention the option name in a).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59132</commentid>
    <comment_count>8</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-17 00:26:03 +0000</bug_when>
    <thetext>(In reply to comment #7)
&gt; I built my own build-appliance image, &quot;bitbake build-appiance-image&quot; then
&gt; ran it, &quot;runqemu qemux86&quot;. Once it booted, I looked at /proc and it looks
&gt; like the io files are missing from this image.
&gt; 
&gt; To address this bug, we likely need to:
&gt; 
&gt; a) Check for the io files during the sanity check and print an warning to
&gt; user that statistics collection will be impacted if they are missing
&gt; 
&gt; b) Check for the io files before opening them
&gt; 
&gt; c) Figure out which kernel option needs to be set and set it for our
&gt; qemux86* builds (and mention the option name in a).

The problem may be in .config:

CONFIG_TASKSTATS is not set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59176</commentid>
    <comment_count>9</comment_count>
      <attachid>2995</attachid>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-18 00:55:37 +0000</bug_when>
    <thetext>Created attachment 2995
patch to prevent from gathering I/O stats if kernel does not allow it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59177</commentid>
    <comment_count>10</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-18 00:58:30 +0000</bug_when>
    <thetext>I am currently testing the patch patch to prevent from gathering I/O stats if kernel does not allow it. The patch fixes a, b, and 50% of c.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59245</commentid>
    <comment_count>11</comment_count>
    <who name="Yi Zhao">yi.zhao</who>
    <bug_when>2016-02-19 07:50:17 +0000</bug_when>
    <thetext>This issue still exists on 2.1_M2 rc3 build.
git rev: master/152914f2983c5d69001de1d46ce99547fa1e75fe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59309</commentid>
    <comment_count>12</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-02-20 02:04:47 +0000</bug_when>
    <thetext>(In reply to comment #11)
&gt; This issue still exists on 2.1_M2 rc3 build.
&gt; git rev: master/152914f2983c5d69001de1d46ce99547fa1e75fe

Not surprising. It needs a patch. Sent one to openembedded-core@lists.openembedded.org moments ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59958</commentid>
    <comment_count>13</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-14 20:47:18 +0000</bug_when>
    <thetext>Patch merged:
https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=4b32351f2def081580fcf5fbe723d005938743ad

I am closing this as resolved, but see
https://bugzilla.yoctoproject.org/show_bug.cgi?id=9210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64775</commentid>
    <comment_count>14</comment_count>
    <who name="Yi Zhao">yi.zhao</who>
    <bug_when>2016-08-02 03:23:04 +0000</bug_when>
    <thetext>Verified it with 2.1.1 RC2
git rev: krogoth/f5da2a5913319ad6ac2141438ba1aa17576326ab</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2958</attachid>
            <date>2016-02-02 03:51:29 +0000</date>
            <delta_ts>2016-02-02 03:51:29 +0000</delta_ts>
            <desc>build-appliance error log</desc>
            <filename>20160201015322.log</filename>
            <type>text/x-log</type>
            <size>19023</size>
            <attacher name="Ke Zou">ke.zou</attacher>
            
              <data encoding="base64">Tk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCldBUk5J
Tkc6IC9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9jcnVtYnMvaG9id2lkZ2V0
LnB5OjgyODogV2FybmluZzogZ19vYmplY3Rfc2V0X3FkYXRhOiBhc3NlcnRpb24gJ0dfSVNfT0JK
RUNUIChvYmplY3QpJyBmYWlsZWQKICBpZiBzZWxmLnByb3BzLmljb25fbmFtZSBvciBzZWxmLnBy
b3BzLnBpeGJ1ZiBvciBzZWxmLnByb3BzLnN0b2NrX2lkOgoKV0FSTklORzogL2hvbWUvYnVpbGRl
ci9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2NydW1icy9ob2J3aWRnZXQucHk6ODEwOiBXYXJuaW5n
OiBnX29iamVjdF9zZXRfcWRhdGE6IGFzc2VydGlvbiAnR19JU19PQkpFQ1QgKG9iamVjdCknIGZh
aWxlZAogIGVsaWYgc2VsZi5wcm9wcy5waXhidWY6CgoKQnVpbGQgQ29uZmlndXJhdGlvbjoKQkJf
VkVSU0lPTiAgICAgICAgPSAiMS4yOC4wIgpCVUlMRF9TWVMgICAgICAgICA9ICJ4ODZfNjQtbGlu
dXgiCk5BVElWRUxTQlNUUklORyAgID0gInBva3ktMi4wK3NuYXBzaG90LTIwMTYwMTI3IgpUQVJH
RVRfU1lTICAgICAgICA9ICJtaXBzLXBva3ktbGludXgiCk1BQ0hJTkUgICAgICAgICAgID0gInFl
bXVtaXBzIgpESVNUUk8gICAgICAgICAgICA9ICJwb2t5IgpESVNUUk9fVkVSU0lPTiAgICA9ICIy
LjArc25hcHNob3QtMjAxNjAyMDEiClRVTkVfRkVBVFVSRVMgICAgID0gIm8zMiBiaWdlbmRpYW4g
ZnB1LWhhcmQgbWlwczMycjIiClRBUkdFVF9GUFUgICAgICAgID0gIiIKbWV0YSAgICAgICAgICAg
ICAgCm1ldGEteW9jdG8gICAgICAgIAptZXRhLXlvY3RvLWJzcCAgICA9ICI8dW5rbm93bj46PHVu
a25vd24+IgoKTk9URTogUHJlcGFyaW5nIFJ1blF1ZXVlCk5PVEU6IEV4ZWN1dGluZyBTZXRTY2Vu
ZSBUYXNrcwpOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKTk9URTogUnVubmluZyB0YXNr
IDEgb2YgMTkwMyAoSUQ6IDEyNzMsIC9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3JlY2lwZXMtZGV2
dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjQuYmIsIGRvX2ZldGNoKQpOT1RFOiBSdW5uaW5n
IHRhc2sgMiBvZiAxOTAzIChJRDogMTU4NywgL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvcmVjaXBl
cy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYiwg
ZG9fZmV0Y2gpCkVSUk9SOiBFeGVjdXRpb24gb2YgZXZlbnQgaGFuZGxlciAncnVuX2J1aWxkc3Rh
dHMnIGZhaWxlZApUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hv
bWUvYnVpbGRlci9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MiLCBsaW5lIDE1
NCwgaW4gcnVuX2J1aWxkc3RhdHMoZT08YmIuYnVpbGQuVGFza1N1Y2NlZWRlZCBvYmplY3QgYXQg
MHg3ZjQzYTc2OWYyMTA+KToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUsIGJiLmJ1aWxkLlRh
c2tTdWNjZWVkZWQpOgogICAgPiAgICAgICAgd3JpdGVfdGFza19kYXRhKCJwYXNzZWQiLCBvcy5w
YXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZSwgZCkKICAgICAgICAgICAgIGlmIGUudGFzayA9
PSAiZG9fcm9vdGZzIjoKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1
aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgODUsIGluIHdyaXRlX3Rhc2tfZGF0YShzdGF0dXM9J3Bh
c3NlZCcsIGxvZ2ZpbGU9Jy9ob21lL2J1aWxkZXIvcG9reS9idWlsZC90bXAvYnVpbGRzdGF0cy8y
MDE2MDIwMTAyMDA1Ni9xdWlsdC1uYXRpdmUtMC42NC1yMC9kb19mZXRjaCcsIGU9PGJiLmJ1aWxk
LlRhc2tTdWNjZWVkZWQgb2JqZWN0IGF0IDB4N2Y0M2E3NjlmMjEwPiwgZD08YmIuZGF0YV9zbWFy
dC5EYXRhU21hcnQgb2JqZWN0IGF0IDB4N2Y0M2E3NjA2ZTUwPik6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGUudGFzaywgZWxhcHNlZHRpbWUpKSkKICAgID4gICAg
ICAgICAgICBjcHUsIGlvc3RhdHMsIHJlc291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19j
cHV0aW1lKG9zLmdldHBpZCgpKQogICAgICAgICAgICAgICAgIGlmIGNwdToKICBGaWxlICIvaG9t
ZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgMjks
IGluIGdldF9wcm9jZXNzX2NwdXRpbWUocGlkPTEzODYpOgogICAgICAgICBpb3N0YXRzID0ge30K
ICAgID4gICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKICAgICAg
ICAgICAgIHdoaWxlIFRydWU6CklPRXJyb3I6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGly
ZWN0b3J5OiAnL3Byb2MvMTM4Ni9pbycKCkVSUk9SOiBCdWlsZCBvZiBkb19mZXRjaCBmYWlsZWQK
RVJST1I6IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvaG9tZS9i
dWlsZGVyL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkiLCBsaW5lIDU2MCwgaW4gZXhlY190
YXNrCiAgICByZXR1cm4gX2V4ZWNfdGFzayhmbiwgdGFzaywgZCwgcXVpZXRlcnIpCiAgRmlsZSAi
L2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5IiwgbGluZSA1MzQsIGlu
IF9leGVjX3Rhc2sKICAgIGV2ZW50LmZpcmUoVGFza1N1Y2NlZWRlZCh0YXNrLCBsb2dmbiwgbG9j
YWxkYXRhKSwgbG9jYWxkYXRhKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xp
Yi9iYi9ldmVudC5weSIsIGxpbmUgMTcxLCBpbiBmaXJlCiAgICBmaXJlX2NsYXNzX2hhbmRsZXJz
KGV2ZW50LCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVu
dC5weSIsIGxpbmUgMTEwLCBpbiBmaXJlX2NsYXNzX2hhbmRsZXJzCiAgICBleGVjdXRlX2hhbmRs
ZXIobmFtZSwgaGFuZGxlciwgZXZlbnQsIGQpCiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2Jp
dGJha2UvbGliL2JiL2V2ZW50LnB5IiwgbGluZSA4MiwgaW4gZXhlY3V0ZV9oYW5kbGVyCiAgICBy
ZXQgPSBoYW5kbGVyKGV2ZW50KQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNz
ZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAxNTQsIGluIHJ1bl9idWlsZHN0YXRzCiAgICB3
cml0ZV90YXNrX2RhdGEoInBhc3NlZCIsIG9zLnBhdGguam9pbih0YXNrZGlyLCBlLnRhc2spLCBl
LCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5i
YmNsYXNzIiwgbGluZSA4NSwgaW4gd3JpdGVfdGFza19kYXRhCiAgICBjcHUsIGlvc3RhdHMsIHJl
c291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBpZCgpKQogIEZp
bGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwg
bGluZSAyOSwgaW4gZ2V0X3Byb2Nlc3NfY3B1dGltZQogICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9p
byIgJSBwaWQsICJyIikgYXMgZjoKSU9FcnJvcjogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBk
aXJlY3Rvcnk6ICcvcHJvYy8xMzg2L2lvJwoKRVJST1I6IEV4ZWN1dGlvbiBvZiBldmVudCBoYW5k
bGVyICdydW5fYnVpbGRzdGF0cycgZmFpbGVkClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs
YXN0KToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMu
YmJjbGFzcyIsIGxpbmUgMTU0LCBpbiBydW5fYnVpbGRzdGF0cyhlPTxiYi5idWlsZC5UYXNrU3Vj
Y2VlZGVkIG9iamVjdCBhdCAweDdmNDNhNzY0ZGZkMD4pOgogICAgICAgICBlbGlmIGlzaW5zdGFu
Y2UoZSwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6CiAgICA+ICAgICAgICB3cml0ZV90YXNrX2Rh
dGEoInBhc3NlZCIsIG9zLnBhdGguam9pbih0YXNrZGlyLCBlLnRhc2spLCBlLCBkKQogICAgICAg
ICAgICAgaWYgZS50YXNrID09ICJkb19yb290ZnMiOgogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9r
eS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSA4NSwgaW4gd3JpdGVfdGFz
a19kYXRhKHN0YXR1cz0ncGFzc2VkJywgbG9nZmlsZT0nL2hvbWUvYnVpbGRlci9wb2t5L2J1aWxk
L3RtcC9idWlsZHN0YXRzLzIwMTYwMjAxMDIwMDU2L3RleGluZm8tZHVtbXktbmF0aXZlLTEuMC1y
MC9kb19mZXRjaCcsIGU9PGJiLmJ1aWxkLlRhc2tTdWNjZWVkZWQgb2JqZWN0IGF0IDB4N2Y0M2E3
NjRkZmQwPiwgZD08YmIuZGF0YV9zbWFydC5EYXRhU21hcnQgb2JqZWN0IGF0IDB4N2Y0M2FlYWFm
NDkwPik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUudGFzaywg
ZWxhcHNlZHRpbWUpKSkKICAgID4gICAgICAgICAgICBjcHUsIGlvc3RhdHMsIHJlc291cmNlcywg
Y2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBpZCgpKQogICAgICAgICAgICAg
ICAgIGlmIGNwdToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxk
c3RhdHMuYmJjbGFzcyIsIGxpbmUgMjksIGluIGdldF9wcm9jZXNzX2NwdXRpbWUocGlkPTEzODcp
OgogICAgICAgICBpb3N0YXRzID0ge30KICAgID4gICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIg
JSBwaWQsICJyIikgYXMgZjoKICAgICAgICAgICAgIHdoaWxlIFRydWU6CklPRXJyb3I6IFtFcnJu
byAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnL3Byb2MvMTM4Ny9pbycKCk5PVEU6IHJl
Y2lwZSBxdWlsdC1uYXRpdmUtMC42NC1yMDogdGFzayBkb19mZXRjaDogRmFpbGVkCkVSUk9SOiBC
dWlsZCBvZiBkb19mZXRjaCBmYWlsZWQKRVJST1I6IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs
bCBsYXN0KToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQu
cHkiLCBsaW5lIDU2MCwgaW4gZXhlY190YXNrCiAgICByZXR1cm4gX2V4ZWNfdGFzayhmbiwgdGFz
aywgZCwgcXVpZXRlcnIpCiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2Ji
L2J1aWxkLnB5IiwgbGluZSA1MzQsIGluIF9leGVjX3Rhc2sKICAgIGV2ZW50LmZpcmUoVGFza1N1
Y2NlZWRlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogIEZpbGUgIi9ob21l
L2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSIsIGxpbmUgMTcxLCBpbiBmaXJl
CiAgICBmaXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50LCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIv
cG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSIsIGxpbmUgMTEwLCBpbiBmaXJlX2NsYXNzX2hh
bmRsZXJzCiAgICBleGVjdXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlciwgZXZlbnQsIGQpCiAgRmls
ZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5IiwgbGluZSA4Miwg
aW4gZXhlY3V0ZV9oYW5kbGVyCiAgICByZXQgPSBoYW5kbGVyKGV2ZW50KQogIEZpbGUgIi9ob21l
L2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAxNTQs
IGluIHJ1bl9idWlsZHN0YXRzCiAgICB3cml0ZV90YXNrX2RhdGEoInBhc3NlZCIsIG9zLnBhdGgu
am9pbih0YXNrZGlyLCBlLnRhc2spLCBlLCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9t
ZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSA4NSwgaW4gd3JpdGVfdGFza19k
YXRhCiAgICBjcHUsIGlvc3RhdHMsIHJlc291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19j
cHV0aW1lKG9zLmdldHBpZCgpKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNz
ZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAyOSwgaW4gZ2V0X3Byb2Nlc3NfY3B1dGltZQog
ICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKSU9FcnJvcjogW0Vy
cm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICcvcHJvYy8xMzg3L2lvJwoKRVJST1I6
IFRhc2sgMTI3MyAoL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWls
dC9xdWlsdC1uYXRpdmVfMC42NC5iYiwgZG9fZmV0Y2gpIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAn
MScKTk9URTogUnVubmluZyB0YXNrIDMgb2YgMTkwMyAoSUQ6IDEzNzMsIHZpcnR1YWw6bmF0aXZl
Oi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUt
Y29uZmlnX2dpdC5iYiwgZG9fZmV0Y2gpCk5PVEU6IHJlY2lwZSB0ZXhpbmZvLWR1bW15LW5hdGl2
ZS0xLjAtcjA6IHRhc2sgZG9fZmV0Y2g6IEZhaWxlZApFUlJPUjogVGFzayAxNTg3ICgvaG9tZS9i
dWlsZGVyL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3Rl
eGluZm8tZHVtbXktbmF0aXZlLmJiLCBkb19mZXRjaCkgZmFpbGVkIHdpdGggZXhpdCBjb2RlICcx
JwpOT1RFOiBTZW5kaW5nIFNJR1RFUk0gdG8gcmVtYWluaW5nIDEgdGFza3MKTk9URTogVGFza3Mg
U3VtbWFyeTogQXR0ZW1wdGVkIDIgdGFza3Mgb2Ygd2hpY2ggMCBkaWRuJ3QgbmVlZCB0byBiZSBy
ZXJ1biBhbmQgMiBmYWlsZWQuCldBUk5JTkc6IC9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xp
Yi9iYi91aS9jcnVtYnMvYnVpbGRkZXRhaWxzcGFnZS5weToyOTg6IEd0a1dhcm5pbmc6IC4uLy4u
L2d0aystMi4yNC4yOS9ndGsvZ3Rrd2lkZ2V0LmM6NTcwOTogd2lkZ2V0IG5vdCB3aXRoaW4gYSBH
dGtXaW5kb3cKICBidWlsZF9zdG9wX3RvcC5ncmFiX2RlZmF1bHQoKQoKTk9URTogUmVzb2x2aW5n
IGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCgpCdWlsZCBDb25maWd1cmF0aW9u
OgpCQl9WRVJTSU9OICAgICAgICA9ICIxLjI4LjAiCkJVSUxEX1NZUyAgICAgICAgID0gIng4Nl82
NC1saW51eCIKTkFUSVZFTFNCU1RSSU5HICAgPSAicG9reS0yLjArc25hcHNob3QtMjAxNjAxMjci
ClRBUkdFVF9TWVMgICAgICAgID0gImFybS1wb2t5LWxpbnV4LWdudWVhYmkiCk1BQ0hJTkUgICAg
ICAgICAgID0gInFlbXVhcm0iCkRJU1RSTyAgICAgICAgICAgID0gInBva3kiCkRJU1RST19WRVJT
SU9OICAgID0gIjIuMCtzbmFwc2hvdC0yMDE2MDIwMSIKVFVORV9GRUFUVVJFUyAgICAgPSAiYXJt
IGFybXY1IHRodW1iIGRzcCIKVEFSR0VUX0ZQVSAgICAgICAgPSAic29mdCIKbWV0YSAgICAgICAg
ICAgICAgCm1ldGEteW9jdG8gICAgICAgIAptZXRhLXlvY3RvLWJzcCAgICA9ICI8dW5rbm93bj46
PHVua25vd24+IgoKTk9URTogUHJlcGFyaW5nIFJ1blF1ZXVlCk5PVEU6IEV4ZWN1dGluZyBTZXRT
Y2VuZSBUYXNrcwpOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKTk9URTogUnVubmluZyB0
YXNrIDEgb2YgMTkwMyAoSUQ6IDEyNzMsIC9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3JlY2lwZXMt
ZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjQuYmIsIGRvX2ZldGNoKQpOT1RFOiBSdW5u
aW5nIHRhc2sgMiBvZiAxOTAzIChJRDogMTQxNywgL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvcmVj
aXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5i
YiwgZG9fZmV0Y2gpCkVSUk9SOiBFeGVjdXRpb24gb2YgZXZlbnQgaGFuZGxlciAncnVuX2J1aWxk
c3RhdHMnIGZhaWxlZApUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAi
L2hvbWUvYnVpbGRlci9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MiLCBsaW5l
IDE1NCwgaW4gcnVuX2J1aWxkc3RhdHMoZT08YmIuYnVpbGQuVGFza1N1Y2NlZWRlZCBvYmplY3Qg
YXQgMHg3ZmViYWZjNzk0ZDA+KToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUsIGJiLmJ1aWxk
LlRhc2tTdWNjZWVkZWQpOgogICAgPiAgICAgICAgd3JpdGVfdGFza19kYXRhKCJwYXNzZWQiLCBv
cy5wYXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZSwgZCkKICAgICAgICAgICAgIGlmIGUudGFz
ayA9PSAiZG9fcm9vdGZzIjoKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2Vz
L2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgODUsIGluIHdyaXRlX3Rhc2tfZGF0YShzdGF0dXM9
J3Bhc3NlZCcsIGxvZ2ZpbGU9Jy9ob21lL2J1aWxkZXIvcG9reS9idWlsZC90bXAvYnVpbGRzdGF0
cy8yMDE2MDIwMTAyNDMzNi9xdWlsdC1uYXRpdmUtMC42NC1yMC9kb19mZXRjaCcsIGU9PGJiLmJ1
aWxkLlRhc2tTdWNjZWVkZWQgb2JqZWN0IGF0IDB4N2ZlYmFmYzc5NGQwPiwgZD08YmIuZGF0YV9z
bWFydC5EYXRhU21hcnQgb2JqZWN0IGF0IDB4N2ZlYmI3NTVjNDkwPik6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUudGFzaywgZWxhcHNlZHRpbWUpKSkKICAgID4g
ICAgICAgICAgICBjcHUsIGlvc3RhdHMsIHJlc291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vz
c19jcHV0aW1lKG9zLmdldHBpZCgpKQogICAgICAgICAgICAgICAgIGlmIGNwdToKICBGaWxlICIv
aG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUg
MjksIGluIGdldF9wcm9jZXNzX2NwdXRpbWUocGlkPTE0NTcpOgogICAgICAgICBpb3N0YXRzID0g
e30KICAgID4gICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKICAg
ICAgICAgICAgIHdoaWxlIFRydWU6CklPRXJyb3I6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3Ig
ZGlyZWN0b3J5OiAnL3Byb2MvMTQ1Ny9pbycKCkVSUk9SOiBCdWlsZCBvZiBkb19mZXRjaCBmYWls
ZWQKRVJST1I6IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvaG9t
ZS9idWlsZGVyL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkiLCBsaW5lIDU2MCwgaW4gZXhl
Y190YXNrCiAgICByZXR1cm4gX2V4ZWNfdGFzayhmbiwgdGFzaywgZCwgcXVpZXRlcnIpCiAgRmls
ZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5IiwgbGluZSA1MzQs
IGluIF9leGVjX3Rhc2sKICAgIGV2ZW50LmZpcmUoVGFza1N1Y2NlZWRlZCh0YXNrLCBsb2dmbiwg
bG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtl
L2xpYi9iYi9ldmVudC5weSIsIGxpbmUgMTcxLCBpbiBmaXJlCiAgICBmaXJlX2NsYXNzX2hhbmRs
ZXJzKGV2ZW50LCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9l
dmVudC5weSIsIGxpbmUgMTEwLCBpbiBmaXJlX2NsYXNzX2hhbmRsZXJzCiAgICBleGVjdXRlX2hh
bmRsZXIobmFtZSwgaGFuZGxlciwgZXZlbnQsIGQpCiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5
L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5IiwgbGluZSA4MiwgaW4gZXhlY3V0ZV9oYW5kbGVyCiAg
ICByZXQgPSBoYW5kbGVyKGV2ZW50KQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2Ns
YXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAxNTQsIGluIHJ1bl9idWlsZHN0YXRzCiAg
ICB3cml0ZV90YXNrX2RhdGEoInBhc3NlZCIsIG9zLnBhdGguam9pbih0YXNrZGlyLCBlLnRhc2sp
LCBlLCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0
cy5iYmNsYXNzIiwgbGluZSA4NSwgaW4gd3JpdGVfdGFza19kYXRhCiAgICBjcHUsIGlvc3RhdHMs
IHJlc291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBpZCgpKQog
IEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNz
IiwgbGluZSAyOSwgaW4gZ2V0X3Byb2Nlc3NfY3B1dGltZQogICAgd2l0aCBvcGVuKCIvcHJvYy8l
ZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKSU9FcnJvcjogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBv
ciBkaXJlY3Rvcnk6ICcvcHJvYy8xNDU3L2lvJwoKTk9URTogcmVjaXBlIHF1aWx0LW5hdGl2ZS0w
LjY0LXIwOiB0YXNrIGRvX2ZldGNoOiBGYWlsZWQKRVJST1I6IFRhc2sgMTI3MyAoL2hvbWUvYnVp
bGRlci9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42NC5i
YiwgZG9fZmV0Y2gpIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAnMScKRVJST1I6IEV4ZWN1dGlvbiBv
ZiBldmVudCBoYW5kbGVyICdydW5fYnVpbGRzdGF0cycgZmFpbGVkClRyYWNlYmFjayAobW9zdCBy
ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2Vz
L2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgMTU0LCBpbiBydW5fYnVpbGRzdGF0cyhlPTxiYi5i
dWlsZC5UYXNrU3VjY2VlZGVkIG9iamVjdCBhdCAweDdmZWJiMDljZGFkMD4pOgogICAgICAgICBl
bGlmIGlzaW5zdGFuY2UoZSwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6CiAgICA+ICAgICAgICB3
cml0ZV90YXNrX2RhdGEoInBhc3NlZCIsIG9zLnBhdGguam9pbih0YXNrZGlyLCBlLnRhc2spLCBl
LCBkKQogICAgICAgICAgICAgaWYgZS50YXNrID09ICJkb19yb290ZnMiOgogIEZpbGUgIi9ob21l
L2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSA4NSwg
aW4gd3JpdGVfdGFza19kYXRhKHN0YXR1cz0ncGFzc2VkJywgbG9nZmlsZT0nL2hvbWUvYnVpbGRl
ci9wb2t5L2J1aWxkL3RtcC9idWlsZHN0YXRzLzIwMTYwMjAxMDI0MzM2L3RleGluZm8tZHVtbXkt
bmF0aXZlLTEuMC1yMC9kb19mZXRjaCcsIGU9PGJiLmJ1aWxkLlRhc2tTdWNjZWVkZWQgb2JqZWN0
IGF0IDB4N2ZlYmIwOWNkYWQwPiwgZD08YmIuZGF0YV9zbWFydC5EYXRhU21hcnQgb2JqZWN0IGF0
IDB4N2ZlYmI3NTVjNDkwPik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGUudGFzaywgZWxhcHNlZHRpbWUpKSkKICAgID4gICAgICAgICAgICBjcHUsIGlvc3RhdHMs
IHJlc291cmNlcywgY2hpbGRyZXMgPSBnZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBpZCgpKQog
ICAgICAgICAgICAgICAgIGlmIGNwdToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9j
bGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgMjksIGluIGdldF9wcm9jZXNzX2NwdXRp
bWUocGlkPTE0NTgpOgogICAgICAgICBpb3N0YXRzID0ge30KICAgID4gICAgd2l0aCBvcGVuKCIv
cHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKICAgICAgICAgICAgIHdoaWxlIFRydWU6CklP
RXJyb3I6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnL3Byb2MvMTQ1OC9p
bycKCkVSUk9SOiBCdWlsZCBvZiBkb19mZXRjaCBmYWlsZWQKRVJST1I6IFRyYWNlYmFjayAobW9z
dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS9s
aWIvYmIvYnVpbGQucHkiLCBsaW5lIDU2MCwgaW4gZXhlY190YXNrCiAgICByZXR1cm4gX2V4ZWNf
dGFzayhmbiwgdGFzaywgZCwgcXVpZXRlcnIpCiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2Jp
dGJha2UvbGliL2JiL2J1aWxkLnB5IiwgbGluZSA1MzQsIGluIF9leGVjX3Rhc2sKICAgIGV2ZW50
LmZpcmUoVGFza1N1Y2NlZWRlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQog
IEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSIsIGxpbmUg
MTcxLCBpbiBmaXJlCiAgICBmaXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50LCBkKQogIEZpbGUgIi9o
b21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSIsIGxpbmUgMTEwLCBpbiBm
aXJlX2NsYXNzX2hhbmRsZXJzCiAgICBleGVjdXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlciwgZXZl
bnQsIGQpCiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5
IiwgbGluZSA4MiwgaW4gZXhlY3V0ZV9oYW5kbGVyCiAgICByZXQgPSBoYW5kbGVyKGV2ZW50KQog
IEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNz
IiwgbGluZSAxNTQsIGluIHJ1bl9idWlsZHN0YXRzCiAgICB3cml0ZV90YXNrX2RhdGEoInBhc3Nl
ZCIsIG9zLnBhdGguam9pbih0YXNrZGlyLCBlLnRhc2spLCBlLCBkKQogIEZpbGUgIi9ob21lL2J1
aWxkZXIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSA4NSwgaW4g
d3JpdGVfdGFza19kYXRhCiAgICBjcHUsIGlvc3RhdHMsIHJlc291cmNlcywgY2hpbGRyZXMgPSBn
ZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBpZCgpKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9r
eS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAyOSwgaW4gZ2V0X3Byb2Nl
c3NfY3B1dGltZQogICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoK
SU9FcnJvcjogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICcvcHJvYy8xNDU4
L2lvJwoKTk9URTogcmVjaXBlIHRleGluZm8tZHVtbXktbmF0aXZlLTEuMC1yMDogdGFzayBkb19m
ZXRjaDogRmFpbGVkCkVSUk9SOiBUYXNrIDE0MTcgKC9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3Jl
Y2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUu
YmIsIGRvX2ZldGNoKSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJzEnCk5PVEU6IFJ1bm5pbmcgdGFz
ayAzIG9mIDE5MDMgKElEOiAxMzU3LCB2aXJ0dWFsOm5hdGl2ZTovaG9tZS9idWlsZGVyL3Bva3kv
bWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIsIGRvX2Zl
dGNoKQpOT1RFOiBTZW5kaW5nIFNJR1RFUk0gdG8gcmVtYWluaW5nIDEgdGFza3MKTk9URTogVGFz
a3MgU3VtbWFyeTogQXR0ZW1wdGVkIDIgdGFza3Mgb2Ygd2hpY2ggMCBkaWRuJ3QgbmVlZCB0byBi
ZSByZXJ1biBhbmQgMiBmYWlsZWQuCk5PVEU6IFJlc29sdmluZyBhbnkgbWlzc2luZyB0YXNrIHF1
ZXVlIGRlcGVuZGVuY2llcwoKQnVpbGQgQ29uZmlndXJhdGlvbjoKQkJfVkVSU0lPTiAgICAgICAg
PSAiMS4yOC4wIgpCVUlMRF9TWVMgICAgICAgICA9ICJ4ODZfNjQtbGludXgiCk5BVElWRUxTQlNU
UklORyAgID0gInBva3ktMi4wK3NuYXBzaG90LTIwMTYwMTI3IgpUQVJHRVRfU1lTICAgICAgICA9
ICJhcm0tcG9reS1saW51eC1nbnVlYWJpIgpNQUNISU5FICAgICAgICAgICA9ICJxZW11YXJtIgpE
SVNUUk8gICAgICAgICAgICA9ICJwb2t5IgpESVNUUk9fVkVSU0lPTiAgICA9ICIyLjArc25hcHNo
b3QtMjAxNjAyMDIiClRVTkVfRkVBVFVSRVMgICAgID0gImFybSBhcm12NSB0aHVtYiBkc3AiClRB
UkdFVF9GUFUgICAgICAgID0gInNvZnQiCm1ldGEgICAgICAgICAgICAgIAptZXRhLXlvY3RvICAg
ICAgICAKbWV0YS15b2N0by1ic3AgICAgPSAiPHVua25vd24+Ojx1bmtub3duPiIKCk5PVEU6IFBy
ZXBhcmluZyBSdW5RdWV1ZQpOT1RFOiBFeGVjdXRpbmcgU2V0U2NlbmUgVGFza3MKTk9URTogRXhl
Y3V0aW5nIFJ1blF1ZXVlIFRhc2tzCk5PVEU6IFJ1bm5pbmcgdGFzayAxIG9mIDE5MDMgKElEOiAx
MjczLCAvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0
LW5hdGl2ZV8wLjY0LmJiLCBkb19mZXRjaCkKTk9URTogUnVubmluZyB0YXNrIDIgb2YgMTkwMyAo
SUQ6IDE0MTcsIC9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5m
by1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIsIGRvX2ZldGNoKQpFUlJPUjog
RXhlY3V0aW9uIG9mIGV2ZW50IGhhbmRsZXIgJ3J1bl9idWlsZHN0YXRzJyBmYWlsZWQKVHJhY2Vi
YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9t
ZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIiwgbGluZSAxNTQsIGluIHJ1bl9idWlsZHN0
YXRzKGU9PGJiLmJ1aWxkLlRhc2tTdWNjZWVkZWQgb2JqZWN0IGF0IDB4N2ZiMTE5OTI0MWQwPik6
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShlLCBiYi5idWlsZC5UYXNrU3VjY2VlZGVkKToKICAg
ID4gICAgICAgIHdyaXRlX3Rhc2tfZGF0YSgicGFzc2VkIiwgb3MucGF0aC5qb2luKHRhc2tkaXIs
IGUudGFzayksIGUsIGQpCiAgICAgICAgICAgICBpZiBlLnRhc2sgPT0gImRvX3Jvb3RmcyI6CiAg
RmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3Mi
LCBsaW5lIDg1LCBpbiB3cml0ZV90YXNrX2RhdGEoc3RhdHVzPSdwYXNzZWQnLCBsb2dmaWxlPScv
aG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvdG1wL2J1aWxkc3RhdHMvMjAxNjAyMDIwMjMxMTQvcXVp
bHQtbmF0aXZlLTAuNjQtcjAvZG9fZmV0Y2gnLCBlPTxiYi5idWlsZC5UYXNrU3VjY2VlZGVkIG9i
amVjdCBhdCAweDdmYjExOTkyNDFkMD4sIGQ9PGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0IG9iamVj
dCBhdCAweDdmYjEyMTFlMDQ5MD4pOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChlLnRhc2ssIGVsYXBzZWR0aW1lKSkpCiAgICA+ICAgICAgICAgICAgY3B1LCBpb3N0
YXRzLCByZXNvdXJjZXMsIGNoaWxkcmVzID0gZ2V0X3Byb2Nlc3NfY3B1dGltZShvcy5nZXRwaWQo
KSkKICAgICAgICAgICAgICAgICBpZiBjcHU6CiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L21l
dGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MiLCBsaW5lIDI5LCBpbiBnZXRfcHJvY2Vzc19j
cHV0aW1lKHBpZD0xNTMyKToKICAgICAgICAgaW9zdGF0cyA9IHt9CiAgICA+ICAgIHdpdGggb3Bl
bigiL3Byb2MvJWQvaW8iICUgcGlkLCAiciIpIGFzIGY6CiAgICAgICAgICAgICB3aGlsZSBUcnVl
OgpJT0Vycm9yOiBbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJy9wcm9jLzE1
MzIvaW8nCgpFUlJPUjogQnVpbGQgb2YgZG9fZmV0Y2ggZmFpbGVkCkVSUk9SOiBUcmFjZWJhY2sg
KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJh
a2UvbGliL2JiL2J1aWxkLnB5IiwgbGluZSA1NjAsIGluIGV4ZWNfdGFzawogICAgcmV0dXJuIF9l
eGVjX3Rhc2soZm4sIHRhc2ssIGQsIHF1aWV0ZXJyKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9r
eS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weSIsIGxpbmUgNTM0LCBpbiBfZXhlY190YXNrCiAgICBl
dmVudC5maXJlKFRhc2tTdWNjZWVkZWQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0
YSkKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkiLCBs
aW5lIDE3MSwgaW4gZmlyZQogICAgZmlyZV9jbGFzc19oYW5kbGVycyhldmVudCwgZCkKICBGaWxl
ICIvaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkiLCBsaW5lIDExMCwg
aW4gZmlyZV9jbGFzc19oYW5kbGVycwogICAgZXhlY3V0ZV9oYW5kbGVyKG5hbWUsIGhhbmRsZXIs
IGV2ZW50LCBkKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVu
dC5weSIsIGxpbmUgODIsIGluIGV4ZWN1dGVfaGFuZGxlcgogICAgcmV0ID0gaGFuZGxlcihldmVu
dCkKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJj
bGFzcyIsIGxpbmUgMTU0LCBpbiBydW5fYnVpbGRzdGF0cwogICAgd3JpdGVfdGFza19kYXRhKCJw
YXNzZWQiLCBvcy5wYXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZSwgZCkKICBGaWxlICIvaG9t
ZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgODUs
IGluIHdyaXRlX3Rhc2tfZGF0YQogICAgY3B1LCBpb3N0YXRzLCByZXNvdXJjZXMsIGNoaWxkcmVz
ID0gZ2V0X3Byb2Nlc3NfY3B1dGltZShvcy5nZXRwaWQoKSkKICBGaWxlICIvaG9tZS9idWlsZGVy
L3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgMjksIGluIGdldF9w
cm9jZXNzX2NwdXRpbWUKICAgIHdpdGggb3BlbigiL3Byb2MvJWQvaW8iICUgcGlkLCAiciIpIGFz
IGY6CklPRXJyb3I6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnL3Byb2Mv
MTUzMi9pbycKCk5PVEU6IHJlY2lwZSBxdWlsdC1uYXRpdmUtMC42NC1yMDogdGFzayBkb19mZXRj
aDogRmFpbGVkCkVSUk9SOiBUYXNrIDEyNzMgKC9ob21lL2J1aWxkZXIvcG9reS9tZXRhL3JlY2lw
ZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjQuYmIsIGRvX2ZldGNoKSBmYWlsZWQg
d2l0aCBleGl0IGNvZGUgJzEnCkVSUk9SOiBFeGVjdXRpb24gb2YgZXZlbnQgaGFuZGxlciAncnVu
X2J1aWxkc3RhdHMnIGZhaWxlZApUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg
RmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3Mi
LCBsaW5lIDE1NCwgaW4gcnVuX2J1aWxkc3RhdHMoZT08YmIuYnVpbGQuVGFza1N1Y2NlZWRlZCBv
YmplY3QgYXQgMHg3ZmIxMTk4ZDJkMTA+KToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUsIGJi
LmJ1aWxkLlRhc2tTdWNjZWVkZWQpOgogICAgPiAgICAgICAgd3JpdGVfdGFza19kYXRhKCJwYXNz
ZWQiLCBvcy5wYXRoLmpvaW4odGFza2RpciwgZS50YXNrKSwgZSwgZCkKICAgICAgICAgICAgIGlm
IGUudGFzayA9PSAiZG9fcm9vdGZzIjoKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9j
bGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgODUsIGluIHdyaXRlX3Rhc2tfZGF0YShz
dGF0dXM9J3Bhc3NlZCcsIGxvZ2ZpbGU9Jy9ob21lL2J1aWxkZXIvcG9reS9idWlsZC90bXAvYnVp
bGRzdGF0cy8yMDE2MDIwMjAyMzExNC90ZXhpbmZvLWR1bW15LW5hdGl2ZS0xLjAtcjAvZG9fZmV0
Y2gnLCBlPTxiYi5idWlsZC5UYXNrU3VjY2VlZGVkIG9iamVjdCBhdCAweDdmYjExOThkMmQxMD4s
IGQ9PGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0IG9iamVjdCBhdCAweDdmYjEyMTFlMDQ5MD4pOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLnRhc2ssIGVsYXBzZWR0
aW1lKSkpCiAgICA+ICAgICAgICAgICAgY3B1LCBpb3N0YXRzLCByZXNvdXJjZXMsIGNoaWxkcmVz
ID0gZ2V0X3Byb2Nlc3NfY3B1dGltZShvcy5nZXRwaWQoKSkKICAgICAgICAgICAgICAgICBpZiBj
cHU6CiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJi
Y2xhc3MiLCBsaW5lIDI5LCBpbiBnZXRfcHJvY2Vzc19jcHV0aW1lKHBpZD0xNTMzKToKICAgICAg
ICAgaW9zdGF0cyA9IHt9CiAgICA+ICAgIHdpdGggb3BlbigiL3Byb2MvJWQvaW8iICUgcGlkLCAi
ciIpIGFzIGY6CiAgICAgICAgICAgICB3aGlsZSBUcnVlOgpJT0Vycm9yOiBbRXJybm8gMl0gTm8g
c3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJy9wcm9jLzE1MzMvaW8nCgpFUlJPUjogQnVpbGQgb2Yg
ZG9fZmV0Y2ggZmFpbGVkCkVSUk9SOiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6
CiAgRmlsZSAiL2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5IiwgbGlu
ZSA1NjAsIGluIGV4ZWNfdGFzawogICAgcmV0dXJuIF9leGVjX3Rhc2soZm4sIHRhc2ssIGQsIHF1
aWV0ZXJyKQogIEZpbGUgIi9ob21lL2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5w
eSIsIGxpbmUgNTM0LCBpbiBfZXhlY190YXNrCiAgICBldmVudC5maXJlKFRhc2tTdWNjZWVkZWQo
dGFzaywgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKICBGaWxlICIvaG9tZS9idWlsZGVy
L3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkiLCBsaW5lIDE3MSwgaW4gZmlyZQogICAgZmly
ZV9jbGFzc19oYW5kbGVycyhldmVudCwgZCkKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvYml0
YmFrZS9saWIvYmIvZXZlbnQucHkiLCBsaW5lIDExMCwgaW4gZmlyZV9jbGFzc19oYW5kbGVycwog
ICAgZXhlY3V0ZV9oYW5kbGVyKG5hbWUsIGhhbmRsZXIsIGV2ZW50LCBkKQogIEZpbGUgIi9ob21l
L2J1aWxkZXIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weSIsIGxpbmUgODIsIGluIGV4ZWN1
dGVfaGFuZGxlcgogICAgcmV0ID0gaGFuZGxlcihldmVudCkKICBGaWxlICIvaG9tZS9idWlsZGVy
L3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgMTU0LCBpbiBydW5f
YnVpbGRzdGF0cwogICAgd3JpdGVfdGFza19kYXRhKCJwYXNzZWQiLCBvcy5wYXRoLmpvaW4odGFz
a2RpciwgZS50YXNrKSwgZSwgZCkKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFz
c2VzL2J1aWxkc3RhdHMuYmJjbGFzcyIsIGxpbmUgODUsIGluIHdyaXRlX3Rhc2tfZGF0YQogICAg
Y3B1LCBpb3N0YXRzLCByZXNvdXJjZXMsIGNoaWxkcmVzID0gZ2V0X3Byb2Nlc3NfY3B1dGltZShv
cy5nZXRwaWQoKSkKICBGaWxlICIvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxk
c3RhdHMuYmJjbGFzcyIsIGxpbmUgMjksIGluIGdldF9wcm9jZXNzX2NwdXRpbWUKICAgIHdpdGgg
b3BlbigiL3Byb2MvJWQvaW8iICUgcGlkLCAiciIpIGFzIGY6CklPRXJyb3I6IFtFcnJubyAyXSBO
byBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnL3Byb2MvMTUzMy9pbycKCk5PVEU6IHJlY2lwZSB0
ZXhpbmZvLWR1bW15LW5hdGl2ZS0xLjAtcjA6IHRhc2sgZG9fZmV0Y2g6IEZhaWxlZApFUlJPUjog
VGFzayAxNDE3ICgvaG9tZS9idWlsZGVyL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGlu
Zm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXktbmF0aXZlLmJiLCBkb19mZXRjaCkgZmFpbGVk
IHdpdGggZXhpdCBjb2RlICcxJwpOT1RFOiBSdW5uaW5nIHRhc2sgMyBvZiAxOTAzIChJRDogMTM1
NywgdmlydHVhbDpuYXRpdmU6L2hvbWUvYnVpbGRlci9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29s
cy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiLCBkb19mZXRjaCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2982</attachid>
            <date>2016-02-12 23:32:07 +0000</date>
            <delta_ts>2016-02-12 23:32:07 +0000</delta_ts>
            <desc>Several fixes for Build Appliance recipe</desc>
            <filename>build-appliance.diff</filename>
            <type>text/plain</type>
            <size>2332</size>
            <attacher name="Juro Bystricky">juro.bystricky</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1h
Z2VfMTQuMC4wLmJiIGIvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1p
bWFnZV8xNC4wLjAuYmIKaW5kZXggOGY5Y2UxYi4uNzJlZmJmYiAxMDA2NDQKLS0tIGEvbWV0YS9y
ZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNC4wLjAuYmIKKysrIGIv
bWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNC4wLjAuYmIK
QEAgLTIxLDcgKzIxLDcgQEAgSU1BR0VfRlNUWVBFUyA9ICJ2bWRrIgogCiBpbmhlcml0IGNvcmUt
aW1hZ2UKIAotU1JDUkVWID89ICI5OTJlNTc3NDcxNGVmNDRiYzkxZDQ1ZTJhYWYyYWNmYzIzYzcy
ZDYzIgorU1JDUkVWID0gIjk5MmU1Nzc0NzE0ZWY0NGJjOTFkNDVlMmFhZjJhY2ZjMjNjNzJkNjMi
CiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kgXAogICAgICAgICAg
ICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteCBcCiAgICAgICAgICAgIGZpbGU6Ly9Z
b2N0b19CdWlsZF9BcHBsaWFuY2Uudm14ZiBcCkBAIC00MiwxMCArNDIsNiBAQCBmYWtlcm9vdCBk
b19wb3B1bGF0ZV9wb2t5X3NyYyAoKSB7CiAKIAlta2RpciAtcCAke0lNQUdFX1JPT1RGU30vaG9t
ZS9idWlsZGVyL3Bva3kvYnVpbGQvY29uZgogCW1rZGlyIC1wICR7SU1BR0VfUk9PVEZTfS9ob21l
L2J1aWxkZXIvcG9reS9idWlsZC9kb3dubG9hZHMKLQljcCAtUnBMICR7RExfRElSfS8qICR7SU1B
R0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9idWlsZC9kb3dubG9hZHMvCi0KLQkjIFJlbW92
ZSB0aGUgZ2l0Ml8qIHRhcmJhbGxzIC0tIHRoaXMgaXMgb2sgc2luY2Ugd2Ugc3RpbGwgaGF2ZSB0
aGUgZ2l0Mi8uCi0Jcm0gLXJmICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9idWls
ZC9kb3dubG9hZHMvZ2l0Ml8qCiAKIAllY2hvICIvdXNyL2JpbiIgPiAke0lNQUdFX1JPT1RGU30v
aG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvcHNldWRvZG9uZQogCWVjaG8gIklOSEVSSVQgKz0gXCJy
bV93b3JrXCIiID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9idWlsZC9jb25m
L2F1dG8uY29uZgpAQCAtNTUsNyArNTEsNiBAQCBmYWtlcm9vdCBkb19wb3B1bGF0ZV9wb2t5X3Ny
YyAoKSB7CiAJZWNobyAiZXhwb3J0IFBTRVVET19MSUJESVI9L3Vzci9saWIvcHNldWRvL2xpYjY0
IiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyLy5iYXNocmMKIAogCWNob3duIGJ1aWxk
ZXIuYnVpbGRlciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3BzZXVkbwotCiAJY2hvd24g
LVIgYnVpbGRlci5idWlsZGVyICAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kKIAog
CSMgQWxsb3cgYnVpbGRlciB0byB1c2Ugc3VkbyB0byBzZXR1cCB0YXAvdHVuCkBAIC04MSw4ICs3
NiwxMyBAQCBjcmVhdGVfYnVuZGxlX2ZpbGVzICgpIHsKIAlta2RpciAtcCBZb2N0b19CdWlsZF9B
cHBsaWFuY2UKIAljcCAqLnZteCogWW9jdG9fQnVpbGRfQXBwbGlhbmNlCiAJbG4gLXNmICR7REVQ
TE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9OQU1FfS52bWRrIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS9Z
b2N0b19CdWlsZF9BcHBsaWFuY2Uudm1kawotCXppcCAtciAke0RFUExPWV9ESVJfSU1BR0V9L1lv
Y3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgWW9jdG9fQnVpbGRfQXBwbGlhbmNl
Ci0JbG4gLXNmIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS56aXAgJHtERVBMT1lf
RElSX0lNQUdFfS9Zb2N0b19CdWlsZF9BcHBsaWFuY2UuemlwIAorCXppcCAtciAke0RFUExPWV9E
SVJfSU1BR0V9L1lvY3RvX0J1aWxkX0FwcGxpYW5jZS0ke0RBVEVUSU1FfS0ke1NSQ1JFVn0uemlw
IFlvY3RvX0J1aWxkX0FwcGxpYW5jZQorCWxuIC1zZiBZb2N0b19CdWlsZF9BcHBsaWFuY2UtJHtE
QVRFVElNRX0tJHtTUkNSRVZ9LnppcCAke0RFUExPWV9ESVJfSU1BR0V9L1lvY3RvX0J1aWxkX0Fw
cGxpYW5jZS56aXAKKworCSMgRG9uZSB3aXRoIC5oZGRkaXNrLCAuZXh0NCBhbmQgLnZtZGsuIFRo
aXMgd2lsbCBmcmVlIGFib3V0IDEwMEdCIQorCXJtIC12ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJ
TUFHRV9MSU5LX05BTUV9Ki5oZGRkaXJlY3QKKwlybSAtdiAke0RFUExPWV9ESVJfSU1BR0V9LyR7
SU1BR0VfTElOS19OQU1FfSouZXh0NAorCXJtIC12ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFH
RV9MSU5LX05BTUV9Ki52bWRrCiB9CiAKIHB5dGhvbiBkb19idW5kbGVfZmlsZXMoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2995</attachid>
            <date>2016-02-18 00:55:37 +0000</date>
            <delta_ts>2016-02-18 00:55:37 +0000</delta_ts>
            <desc>patch to prevent from gathering I/O stats if kernel does not allow it.</desc>
            <filename>0001-buildstats.bbclass-proc-pid-io-existence-check.patch</filename>
            <type>text/plain</type>
            <size>2633</size>
            <attacher name="Juro Bystricky">juro.bystricky</attacher>
            
              <data encoding="base64">RnJvbSA2NjlhNGRmYmNkYTVmODZhMjg2M2VmYjUxY2Q2NWIzYzA0NmJhODUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwu
Y29tPgpEYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDEwOjAxOjU2IC0wODAwClN1YmplY3Q6IFtQQVRD
SF0gYnVpbGRzdGF0cy5iYmNsYXNzOiAvcHJvYy88cGlkPi9pbyBleGlzdGVuY2UgY2hlY2sKCkl0
IGlzIG5vdCBndWFyYW50ZWVkIHRoZSBMaW51eCBrZXJuZWwgd2FzIGNvbmZpZ3VyZWQgdG8gcHJv
dmlkZQpwcm9jZXNzIEkvTyBzdGF0aXN0aWNzLiBEZXRlY3QgaWYgdGhpcyBpcyB0aGUgY2FzZSwg
YW5kIGlmIHNvLCBpc3N1ZSBhIHdhcm5pbmcuCkRvIG5vdCBhdHRlbXB0IHRvIGdhdGhlciBwcm9j
ZXNzIEkvTyBzdGF0aXN0aWNzIGlmIHN0YXRpc3RpY3Mgbm90IGF2YWlsYWJsZS4KCltZT0NUTyM5
MDI1XQoKU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVs
LmNvbT4KLS0tCiBtZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0KIC4uLi9pbWFnZXMvYnVpbGQtYXBwbGlhbmNl
LWltYWdlXzE0LjAuMC5iYiAgICAgICAgIHwgMjcgKysrKysrKysrKysrKystLS0tLS0tLQogMiBm
aWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIGIvbWV0YS9jbGFzc2VzL2J1aWxk
c3RhdHMuYmJjbGFzcwppbmRleCBlNThkMzdiLi43MmEzZGQ5IDEwMDY0NAotLS0gYS9tZXRhL2Ns
YXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzCisrKyBiL21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJi
Y2xhc3MKQEAgLTI1LDEzICsyNSwxNCBAQCBkZWYgZ2V0X3Byb2Nlc3NfY3B1dGltZShwaWQpOgog
ICAgICAgICAnY3N0aW1lJyA6IGZpZWxkc1sxNl0sICAKICAgICB9CiAgICAgaW9zdGF0cyA9IHt9
Ci0gICAgd2l0aCBvcGVuKCIvcHJvYy8lZC9pbyIgJSBwaWQsICJyIikgYXMgZjoKLSAgICAgICAg
d2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGkgPSBmLnJlYWRsaW5lKCkuc3RyaXAoKQotICAgICAg
ICAgICAgaWYgbm90IGk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGkgPSBp
LnNwbGl0KCI6ICIpCi0gICAgICAgICAgICBpb3N0YXRzW2lbMF1dID0gaVsxXQorICAgIGlmIG9z
LnBhdGguaXNmaWxlKCIvcHJvYy8lZC9pbyIgJSBwaWQpOgorICAgICAgICB3aXRoIG9wZW4oIi9w
cm9jLyVkL2lvIiAlIHBpZCwgInIiKSBhcyBmOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAg
ICAgICAgICAgICAgICBpID0gZi5yZWFkbGluZSgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBp
ZiBub3QgaToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpID0g
aS5zcGxpdCgiOiAiKQorICAgICAgICAgICAgICAgIGlvc3RhdHNbaVswXV0gPSBpWzFdCiAgICAg
cmVzb3VyY2VzID0gcmVzb3VyY2UuZ2V0cnVzYWdlKHJlc291cmNlLlJVU0FHRV9TRUxGKQogICAg
IGNoaWxkcmVzID0gcmVzb3VyY2UuZ2V0cnVzYWdlKHJlc291cmNlLlJVU0FHRV9DSElMRFJFTikK
ICAgICByZXR1cm4gc3RhdHMsIGlvc3RhdHMsIHJlc291cmNlcywgY2hpbGRyZXMKQEAgLTExMSw3
ICsxMTIsMTQgQEAgcHl0aG9uIHJ1bl9idWlsZHN0YXRzICgpIHsKIAogICAgIGlmIGlzaW5zdGFu
Y2UoZSwgYmIuZXZlbnQuQnVpbGRTdGFydGVkKToKICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0g
ICAgICAgICMgYXQgZmlyc3QgcGFzcyBtYWtlIHRoZSBidWlsZHN0YXRzIGhlcmlhcmNoeSBhbmQg
dGhlbgorICAgICAgICAjIElmIHRoZSBrZXJuZWwgd2FzIG5vdCBjb25maWd1cmVkIHRvIHByb3Zp
ZGUgSS9PIHN0YXRpc3RpY3MsIGlzc3VlCisgICAgICAgICMgYSBvbmUgdGltZSB3YXJuaW5nLgor
ICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIv
cHJvYy8lZC9pbyIgJSBvcy5nZXRwaWQoKSk6CisgICAgICAgICAgICBiYi53YXJuKCJUaGUgTGlu
dXgga2VybmVsIHdhcyBub3QgY29uZmlndXJlZCB0byBwcm92aWRlIHByb2Nlc3MgSS9PIHN0YXRp
c3RpY3MuIChDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HIGlzIG5vdCBzZXQpIikKKworICAgICAg
ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIyBhdCBmaXJzdCBwYXNzIG1ha2UgdGhlIGJ1aWxk
c3RhdHMgaGllcmFyY2h5IGFuZCB0aGVuCiAgICAgICAgICMgc2V0IHRoZSBidWlsZG5hbWUKICAg
ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihic2RpcikK
LS0gCjEuOS4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>