
Latihan 1
Sebuah perusahaan ingin memahami karakteristik penyebaran data hasil
penjualan dari empat cabang (A, B, C, dan D) selama satu bulan terakhir.
Data penjualan (dalam juta rupiah) dari keempat cabang tersebut adalah
sebagai berikut:
- Cabang A: 50, 55, 60, 65, 70
- Cabang B: 40, 50, 60, 70, 80
- Cabang C: 30, 30, 35, 40, 45
- Cabang D: 70, 75, 80, 85, 90
Cabang mana yang
memiliki penyebaran yang paling kecil? Jelaskan alasannya!
Jawab:
Cabang yang memiliki penyebaran yang paling kecil adalah
Cabang C. Hal ini dapat diketahui melalui nilai standar
deviasi dari Cabang C merupakan nilai standar deviasi yang terkecil,
standar deviasi adalah ukuran yang menunjukkan seberapa jauh data
menyebar dari rata-rata. Nilai yang lebih kecil menunjukkan penyebaran
data yang lebih kecil (lebih terkonsentrasi di sekitar rata-rata). Dari
hasil perhitungan pada soal nomor 1, dapat diperoleh:
Cabang A: Standar deviasi = 7,07 juta
Cabang B: Standar deviasi = 14,14 juta
Cabang C: Standar deviasi = 5,83 juta
Cabang D: Standar deviasi = 7,07 juta
Dari hasil tersebut sudah dapat diketahui bahwa cabang yang memiliki
penyebaran yang paling kecil adalah Cabang C yaitu sebesar 5,83 juta.
Selain itu, penyebaran data Cabang C lebih kecil karena nilai-nilai
penjualan relatif dekat satu sama lain, dengan rentang dari 30 hingga 45
juta, yang merupakan rentang terkecil dibandingkan cabang lain.
Jika target penjualan
minimum adalah 50 juta rupiah, cabang mana yang gagal mencapai target di
semua datanya?
Jawab:
Cabang yang gagal mencapai target penjualan minimum sebesar 50 juta
rupiah di semua datanya adalah Cabang C. Hal ini
terlihat dari data penjualan Cabang C yang terdiri dari 30 juta, 30
juta, 35 juta, 40 juta, dan 45 juta, di mana seluruh angkanya berada di
bawah target 50 juta rupiah. Sebaliknya, cabang lainnya memiliki
setidaknya satu data penjualan yang memenuhi atau melampaui target.
Misalnya, Cabang A memiliki data penjualan 50 juta hingga 70 juta,
Cabang B memiliki rentang penjualan dari 40 juta hingga 80 juta, dan
Cabang D berada pada kisaran 70 juta hingga 90 juta, semuanya mencakup
angka di atas 50 juta. Dengan demikian, Cabang C adalah satu-satunya
yang gagal mencapai target penjualan minimum di seluruh data
penjualannya, menunjukkan kinerja yang paling tidak sesuai dengan target
dibandingkan cabang lainnya.
Buatlah diagram kotak
(box plot) untuk memvisualisasikan penyebaran data setiap cabang!
Jawab:
Latihan 2
Perusahaan XYZ mengelola pengiriman barang ke berbagai wilayah dengan
menggunakan berbagai jenis transportasi. Setiap pengiriman melibatkan
biaya transportasi, waktu yang dibutuhkan, dan jumlah barang yang
dikirim. Berikut adalah data terkait pengiriman barang berdasarkan
wilayah dan jenis barang:
| Utara |
Elektronik |
200 |
5 |
15,000 |
| Selatan |
Pakaian |
150 |
8 |
8,000 |
| Timur |
Makanan |
180 |
6 |
10,000 |
| Barat |
Peralatan |
120 |
7 |
12,000 |
| Tengah |
Elektronik |
250 |
4 |
14,000 |
| Utara |
Pakaian |
300 |
9 |
8,500 |
| Selatan |
Makanan |
220 |
7 |
9,500 |
| Timur |
Peralatan |
140 |
5 |
11,000 |
| Barat |
Elektronik |
180 |
6 |
14,500 |
| Tengah |
Pakaian |
350 |
8 |
7,800 |
| Utara |
Peralatan |
170 |
4 |
12,000 |
| Selatan |
Elektronik |
250 |
6 |
16,000 |
| Timur |
Pakaian |
190 |
7 |
8,200 |
| Barat |
Makanan |
130 |
5 |
10,500 |
| Tengah |
Peralatan |
180 |
5 |
11,500 |
Analisis Efisiensi
Pengiriman:
Visualisakan
pengiriman barang berdasarkan jumlah barang, waktu pengiriman, dan biaya
per unit dengan menggunakan plot 3D.
Jawab:
Tentukan wilayah
mana yang memiliki efisiensi pengiriman terendah berdasarkan biaya per
unit dan waktu pengiriman!
Jawab:
Untuk menentukan wilayah dengan efisiensi pengiriman terendah
berdasarkan biaya per unit dan waktu pengiriman, kita akan menghitung
rasio efisiensi untuk setiap wilayah. Rasio efisiensi dihitung dengan
membagi biaya per unit dengan waktu pengiriman. Semakin besar rasio ini,
semakin rendah efisiensi pengirimannya, karena biaya lebih tinggi
dibandingkan dengan waktu yang dibutuhkan.
Rumus Rasio Efisiensi: \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}
\]
Data yang digunakan:
| Utara |
15,000 |
5 |
| Selatan |
8,000 |
8 |
| Timur |
10,000 |
6 |
| Barat |
12,000 |
7 |
| Tengah |
14,000 |
4 |
| Utara |
8,500 |
9 |
| Selatan |
9,500 |
7 |
| Timur |
11,000 |
5 |
| Barat |
14,500 |
6 |
| Tengah |
7,800 |
8 |
| Utara |
12,000 |
4 |
| Selatan |
16,000 |
6 |
| Timur |
8,200 |
7 |
| Barat |
10,500 |
5 |
| Tengah |
11,500 |
5 |
Langkah-Langkah
A. Untuk setiap baris, kita akan menghitung rasio Biaya per
Unit dibagi dengan Waktu Pengiriman
Wilayah Utara (Baris 1): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}=\frac{15,000}{5} = 3,000
\]
Wilayah Selatan (Baris 2): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{8,000}{8} = 1,000
\]
Wilayah Timur (Baris 3): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{10,000}{6} \approx 1,667
\]
Wilayah Barat (Baris 4): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{12,000}{7} \approx 1,714
\]
Wilayah Tengah (Baris 5): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{14,000}{4} = 3,500
\]
Wilayah Utara (Baris 6): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{8,500}{9} \approx 944.44
\]
Wilayah Selatan (Baris 7): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{9,500}{7} \approx 1,357.14
\]
Wilayah Timur (Baris 8): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{11,000}{5} = 2,200
\]
Wilayah Barat (Baris 9): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{14,500}{6} \approx 2,417
\]
Wilayah Tengah (Baris 10): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{7,800}{8} = 975
\]
Wilayah Utara (Baris 11): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{12,000}{4} = 3,000
\]
Wilayah Selatan (Baris 12): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{16,000}{6} \approx 2,667
\]
Wilayah Timur (Baris 13): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{8,200}{7} \approx 1,171.43
\]
Wilayah Barat (Baris 14): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{10,500}{5} = 2,100
\]
Wilayah Tengah (Baris 15): \[
\text{Rasio Efisiensi} = \frac{\text{Biaya per Unit}}{\text{Waktu
Pengiriman}}= \frac{11,500}{5} = 2,300
\]
Hasil Rasio Efisiensi:
| Utara (1) |
3,000 |
| Selatan (2) |
1,000 |
| Timur (3) |
1,667 |
| Barat (4) |
1,714 |
| Tengah (5) |
3,500 |
| Utara (6) |
944.44 |
| Selatan (7) |
1,357.14 |
| Timur (8) |
2,200 |
| Barat (9) |
2,417 |
| Tengah (10) |
975 |
| Utara (11) |
3,000 |
| Selatan (12) |
2,667 |
| Timur (13) |
1,171.43 |
| Barat (14) |
2,100 |
| Tengah (15) |
2,300 |
B. Rata-rata Rasio Efisiensi per Wilayah:
- Wilayah Utara:
- Rasio efisiensi: 3,000, 944.44, 3,000
- Rata-rata: \[
\text{Rata-rata Utara} = \frac{3,000 + 944.44 + 3,000}{3} =
\frac{6,944.44}{3} \approx 2,314.81
\]
- Wilayah Selatan:
- Rasio efisiensi: 1,000, 1,357.14, 2,667
- Rata-rata: \[
\text{Rata-rata Selatan} = \frac{1,000 + 1,357.14 + 2,667}{3} =
\frac{5,024.14}{3} \approx 1,674.71
\]
- Wilayah Timur:
- Rasio efisiensi: 1,667, 2,200, 1,171.43
- Rata-rata: \[
\text{Rata-rata Timur} = \frac{1,667 + 2,200 + 1,171.43}{3} =
\frac{5,038.43}{3} \approx 1,679.48
\]
- Wilayah Barat:
- Rasio efisiensi: 1,714, 2,417, 2,100
- Rata-rata: \[
\text{Rata-rata Barat} = \frac{1,714 + 2,417 + 2,100}{3} =
\frac{6,231}{3} = 2,077
\]
- Wilayah Tengah:
- Rasio efisiensi: 3,500, 975, 2,300
- Rata-rata: \[
\text{Rata-rata Tengah} = \frac{3,500 + 975 + 2,300}{3} =
\frac{6,775}{3} \approx 2,258.33
\]
Hasil Rata-rata Rasio Efisiensi per Wilayah:
| Utara |
2,314.81 |
| Selatan |
1,674.71 |
| Timur |
1,679.48 |
| Barat |
2,077.00 |
| Tengah |
2,258.33 |
Kesimpulan:
Wilayah Selatan memiliki efisiensi pengiriman terendah berdasarkan
biaya per unit dan waktu pengiriman karena rasio efisiensinya yang lebih
rendah dibandingkan wilayah lainnya. Di wilayah Selatan, rasio efisiensi
rata-rata adalah 1,674.71, lebih kecil dari wilayah lain seperti Tengah
(2,258.33) dan Utara (2,314.81), yang menunjukkan biaya per unit yang
lebih tinggi atau waktu pengiriman yang lebih lama. Wilayah Selatan
memiliki biaya per unit yang lebih rendah dan waktu pengiriman yang
relatif wajar, menciptakan keseimbangan antara biaya dan waktu. Dengan
waktu pengiriman yang efisien, wilayah ini mampu mengoptimalkan
pengeluaran tanpa mengorbankan waktu, yang membuatnya lebih efisien
dalam pengiriman barang secara keseluruhan.
Rekomendasi
Operasional:
Berdasarkan hasil
analisis, wilayah mana yang memerlukan perhatian khusus untuk
meningkatkan efisiensi pengiriman?
Jawab:
Berdasarkan hasil analisis, Wilayah Tengah
memerlukan perhatian khusus untuk meningkatkan efisiensi pengiriman. Hal
ini disebabkan oleh rasio efisiensi yang tertinggi di antara wilayah
lainnya, yaitu 2,258.33. Rasio efisiensi yang tinggi
menunjukkan bahwa wilayah ini mengeluarkan biaya per unit yang lebih
tinggi dibandingkan dengan waktu pengiriman yang relatif lebih pendek.
Meskipun waktu pengiriman di wilayah ini tidak terlalu lama, tingginya
biaya per unit mengindikasikan adanya peluang untuk mengurangi biaya
pengiriman. Oleh karena itu, untuk meningkatkan efisiensi, wilayah
Tengah perlu fokus pada pengurangan biaya per unit dan optimalisasi
proses pengiriman agar lebih efisien dalam hal biaya dan waktu.
Apa rekomendasi
untuk mengurangi biaya dan waktu pengiriman di wilayah tersebut?
Jawab:
- Optimalkan Rute Pengiriman: Gunakan teknologi GPS
dan perangkat lunak perencanaan rute untuk memilih jalur yang lebih
efisien dan menghindari kemacetan.
- Negosiasi Tarif Pengiriman: Tawar tarif lebih
kompetitif dengan penyedia jasa logistik atau jalin kontrak jangka
panjang untuk diskon.
- Pengelolaan Persediaan: Kelola persediaan secara
real-time untuk menghindari pengiriman mendesak yang mahal.
- Gunakan Kendaraan Tepat Ukuran: Pastikan kendaraan
digunakan secara maksimal untuk mengurangi pemborosan biaya bahan
bakar.
- Efisiensikan Proses Pengiriman: Latih pengemudi
untuk mengurangi pemborosan bahan bakar dan percepat pemrosesan barang
di gudang.
- Pelacakan Pengiriman Real-Time: Gunakan sistem
pelacakan untuk mengidentifikasi masalah dan menghindari
keterlambatan.
- Koordinasi dan Kolaborasi: Tingkatkan komunikasi
dengan pemasok dan pengirim serta konsolidasi pengiriman untuk
mengurangi biaya.
Kinerja Berdasarkan
Jenis Barang:
Analisis kinerja pengiriman berdasarkan jenis barang dan wilayah.
Mana yang memiliki waktu pengiriman lebih cepat dan biaya per unit lebih
rendah?
Jawab:
Untuk menganalisis kinerja pengiriman berdasarkan jenis barang dan
wilayah, kita perlu melihat dua faktor utama: waktu pengiriman dan biaya
per unit. Berdasarkan data yang ada, kita dapat menyimpulkan wilayah dan
jenis barang mana yang lebih efisien dalam hal waktu dan biaya.
Langkah-langkah Analisis:
Waktu Pengiriman: Membandingkan waktu pengiriman
antar wilayah untuk jenis barang tertentu.
Biaya per Unit: Membandingkan biaya per unit
antar wilayah dan jenis barang.
Analisis Berdasarkan Data:
- Wilayah dengan Waktu Pengiriman Lebih Cepat:
- Wilayah Selatan memiliki waktu pengiriman yang relatif lebih cepat
dan stabil dibandingkan wilayah lain. Misalnya, waktu pengiriman untuk
jenis barang di wilayah ini cenderung lebih singkat, yang berkontribusi
pada efisiensi pengiriman.
- Wilayah dengan Biaya Per Unit Lebih Rendah:
- Wilayah Selatan juga memiliki biaya per unit yang lebih rendah
dibandingkan dengan wilayah lainnya. Hal ini menunjukkan bahwa wilayah
ini lebih efisien dalam hal pengeluaran pengiriman per unit barang, yang
menurunkan biaya secara keseluruhan.
Kesimpulan:
- Wilayah Selatan menunjukkan kinerja pengiriman
terbaik, karena memiliki waktu pengiriman yang lebih cepat dan biaya per
unit yang lebih rendah, menjadikannya wilayah yang lebih efisien dalam
hal pengiriman barang.
- Wilayah lainnya, seperti Wilayah Tengah, mungkin
memiliki waktu pengiriman yang lebih lama dan biaya per unit yang lebih
tinggi, sehingga perlu perhatian khusus untuk mengoptimalkan efisiensi
pengiriman di sana.
Jadi, jika tujuan utamanya adalah mengurangi waktu pengiriman dan
biaya per unit, Wilayah Selatan adalah yang paling efisien dibandingkan
dengan wilayah lainnya.
Referensi
Pranoto, S. (2017). Analisis Strategi
Peningkatan Penjualan. Jurnal Bisnis Strategi, 2(1), 1-16.
Retrieved from https://ejournal.undip.ac.id/index.php/jbs/article/view/14469.
Sugiyanti, L. (2022). Strategi Pemasaran
Digital untuk Meningkatkan Penjualan UMKM. Jurnal Bima. Retrieved
from https://jurnalbima.id.
Agnezia, S. V., & Winarno, W. (2022). Rute perjalanan dan
biaya ongkos: Algoritma Program Dinamis dengan Pendekatan Forward
Recursive Equation. Proceeding Mercu Buana Conference on Industrial
Engineering, 6, 396-405.
Zein, M. N., Wibowo, P., Hidayatullah, I., Pahdian, M. F.,
Ramadhan, A., Gufron, N. S. A., & Ringo, E. E. S. (2022). Jalur
pengiriman dan biaya pengiriman: Program Dinamis dalam pengiriman
barang. Proceeding Mercu Buana Conference on Industrial
Engineering, 6, 396-405.
Kurnia, A., & Ernawati, D. (2021). Optimasi rute
distribusi menggunakan algoritma Differential Evolution untuk
penghematan jarak dan waktu tempuh. Jurnal Teknik Industri, 23(2),
114-130.
LS0tDQp0aXRsZTogIkxhdGloYW4gVWt1cmFuIFBlbnllYmFyYW4gRGF0YSINCnN1YnRpdGxlOiAiU3RhdGlzdGlrYSBEYXNhciINCmF1dGhvcjogIklzbmFpbmkgTnVyIEhhc2FuYWggKDUyMjQwMDA1KSINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlICgxKS5jc3MiDQotLS0NCg0KPGltZyBpZD0iSXNuYSIgc3JjPSJDOlxVc2Vyc1xBU1VTXERlc2t0b3BcU3RhdGlzdGlrYSBEYXNhclxJc25hLnBuZyIgYWx0PSJMb2dvIiBzdHlsZT0id2lkdGg6MjAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87Ij4NCg0KDQojIExhdGloYW4gMQ0KDQpTZWJ1YWggcGVydXNhaGFhbiBpbmdpbiBtZW1haGFtaSBrYXJha3RlcmlzdGlrIHBlbnllYmFyYW4gZGF0YSBoYXNpbCBwZW5qdWFsYW4gZGFyaSBlbXBhdCBjYWJhbmcgKEEsIEIsIEMsIGRhbiBEKSBzZWxhbWEgc2F0dSBidWxhbiB0ZXJha2hpci4gRGF0YSBwZW5qdWFsYW4gKGRhbGFtIGp1dGEgcnVwaWFoKSBkYXJpIGtlZW1wYXQgY2FiYW5nIHRlcnNlYnV0IGFkYWxhaCBzZWJhZ2FpIGJlcmlrdXQ6DQoNCiogQ2FiYW5nIEE6IDUwLCA1NSwgNjAsIDY1LCA3MA0KKiBDYWJhbmcgQjogNDAsIDUwLCA2MCwgNzAsIDgwDQoqIENhYmFuZyBDOiAzMCwgMzAsIDM1LCA0MCwgNDUNCiogQ2FiYW5nIEQ6IDcwLCA3NSwgODAsIDg1LCA5MCANCg0KLS0tDQoNCiMjICBIaXR1bmdsYWggcmF0YS1yYXRhLCBtZWRpYW4sIGRhbiBzdGFuZGFyIGRldmlhc2kgdW50dWsgbWFzaW5nLW1hc2luZyBjYWJhbmchDQoNCkphd2FiOg0KDQojIyMgKipDYWJhbmcgQSoqDQpEYXRhOiA1MCwgNTUsIDYwLCA2NSwgNzAgIA0KMS4gKipSYXRhLXJhdGEqKjoNCiAgIFxbDQogICBcdGV4dHtSYXRhLXJhdGF9ID0gXGZyYWN7XHN1bSBcdGV4dHtkYXRhfX17XHRleHR7anVtbGFoIGRhdGF9fSA9IFxmcmFjezUwICsgNTUgKyA2MCArIDY1ICsgNzB9ezV9ID0gXGZyYWN7MzAwfXs1fSA9IDYwDQogICBcXQ0KDQoyLiAqKk1lZGlhbioqOiAgDQogICBcWw0KICAgXHRleHR7TWVkaWFufSA9IDYwDQogICBcXQ0KDQozLiAqKlN0YW5kYXIgRGV2aWFzaSoqOiAgDQoNCiAgIFxbDQogICBcdGV4dHtTdGQgRGV2fSA9IFxzcXJ0e1xmcmFje1xzdW0gKHhfaSAtIFxiYXJ7eH0pXjJ9e259fSBcXCA9IFxzcXJ0e1xmcmFjIHsgKDUwIC0gNjApXjIgKyAoNTUgLSA2MCleMiArICg2MCAtIDYwKV4yICsgKDY1IC0gNjApXjIgKyAoNzAgLSA2MCleMn0gezV9fSBcXCA9IFxzcXJ0e1xmcmFjIHsgMTAwICsgMjUgKyAwICsgMjUgKyAxMDB9IHs1fX0gXFwgPSBcc3FydHtcZnJhYyB7MjUwfXs1fX0gXFwgPSBcc3FydHs1MH0gPSA3LjcwNzENCiAgIFxdDQoNCiMjIyAqKkNhYmFuZyBCKioNCkRhdGE6IDQwLCA1MCwgNjAsIDcwLCA4MCAgDQoxLiAqKlJhdGEtcmF0YSoqOg0KICAgXFsNCiAgIFx0ZXh0e1JhdGEtcmF0YX0gPSBcZnJhY3tcc3VtIFx0ZXh0e2RhdGF9fXtcdGV4dHtqdW1sYWggZGF0YX19ID0gXGZyYWN7NDAgKyA1MCArIDYwICsgNzAgKyA4MH17NX0gPSBcZnJhY3szMDB9ezV9ID0gNjANCiAgIFxdDQoNCjIuICoqTWVkaWFuKio6ICANCiAgIFxbDQogICBcdGV4dHtNZWRpYW59ID0gNjANCiAgIFxdDQoNCjMuICoqU3RhbmRhciBEZXZpYXNpKio6DQoNCiAgIFxbDQogICBcdGV4dHtTdGQgRGV2fSA9IFxzcXJ0e1xmcmFje1xzdW0gKHhfaSAtIFxiYXJ7eH0pXjJ9e259fSBcXCA9IFxzcXJ0e1xmcmFjIHsgKDQwIC0gNjApXjIgKyAoNTAgLSA2MCleMiArICg2MCAtIDYwKV4yICsgKDcwIC0gNjApXjIgKyAoODAgLSA2MCleMn0gezV9fSBcXCA9IFxzcXJ0e1xmcmFjIHs0MDAgKyAxMDAgKyAwICsgMTAwICsgNDAwfSB7NX19IFxcID0gXHNxcnR7XGZyYWMgezEwMDB9IHs1fX0gXFwgPSBcc3FydCB7MjAwfSA9IDE0LjE0Mg0KICAgXF0NCiAgIA0KDQojIyMgKipDYWJhbmcgQyoqDQpEYXRhOiAzMCwgMzAsIDM1LCA0MCwgNDUgIA0KMS4gKipSYXRhLXJhdGEqKjoNCiAgIFxbDQogICBcdGV4dHtSYXRhLXJhdGF9ID0gXGZyYWN7XHN1bSBcdGV4dHtkYXRhfX17XHRleHR7anVtbGFoIGRhdGF9fSA9IFxmcmFjezMwICsgMzAgKyAzNSArIDQwICsgNDV9ezV9ID0gXGZyYWN7MTgwfXs1fSA9IDM2DQogICBcXQ0KDQoyLiAqKk1lZGlhbioqOiAgDQogICBcWw0KICAgXHRleHR7TWVkaWFufSA9IDM1DQogICBcXQ0KDQozLiAqKlN0YW5kYXIgRGV2aWFzaSoqOg0KDQogICBcWw0KICAgXHRleHR7U3RkIERldn0gPSBcc3FydHtcZnJhY3tcc3VtICh4X2kgLSBcYmFye3h9KV4yfXtufX0gXFwgPSBcc3FydHtcZnJhYyB7KDMwIC0gMzYpXjIgKyAoMzAgLSAzNileMiArICgzNSAtIDM2KV4yICsgKDQwIC0gMzYpXjIgKyAoNDUgLSAzNileMn0gezV9fSBcXCA9IFxzcXJ0e1xmcmFjIHsgMzYgKyAzNiArIDEgKyAxNiArIDgxfSB7NX19IFxcID0gXHNxcnR7XGZyYWMgezE3MH0gezV9fSBcXCA9IFxzcXJ0IHszNH0gPSA1LjgzMQ0KICAgXF0NCg0KDQojIyMgKipDYWJhbmcgRCoqDQpEYXRhOiA3MCwgNzUsIDgwLCA4NSwgOTAgIA0KMS4gKipSYXRhLXJhdGEqKjoNCiAgIFxbDQogICBcdGV4dHtSYXRhLXJhdGF9ID0gXGZyYWN7XHN1bSBcdGV4dHtkYXRhfX17XHRleHR7anVtbGFoIGRhdGF9fSA9IFxmcmFjezcwICsgNzUgKyA4MCArIDg1ICsgOTB9ezV9ID0gXGZyYWN7NDAwfXs1fSA9IDgwDQogICBcXQ0KDQoyLiAqKk1lZGlhbioqOiAgDQogICBcWw0KICAgXHRleHR7TWVkaWFufSA9IDgwDQogICBcXQ0KDQozLiAqKlN0YW5kYXIgRGV2aWFzaSoqOg0KDQogICBcWw0KICAgXHRleHR7U3RkIERldn0gPSBcc3FydHtcZnJhY3tcc3VtICh4X2kgLSBcYmFye3h9KV4yfXtufX0gXFwgPSBcc3FydHtcZnJhYyB7KDcwIC0gODApXjIgKyAoNzUgLSA4MCleMiArICg4MCAtIDgwKV4yICsgKDg1IC0gODApXjIgKyAoOTAgLSA4MCleMn0gezV9fSBcXCA9IFxzcXJ0e1xmcmFjIHsgMTAwICsgMjUgKyAwICsgMjUgKyAxMDAgfSB7NX19IFxcID0gXHNxcnR7XGZyYWMgezI1MH0gezV9fSBcXCA9IFxzcXJ0IHs1MH0gPSA3LjA3MQ0KICAgXF0NCg0KLS0tDQoNCiMjIENhYmFuZyBtYW5hIHlhbmcgbWVtaWxpa2kgcGVueWViYXJhbiB5YW5nIHBhbGluZyBrZWNpbD8gSmVsYXNrYW4gYWxhc2FubnlhIQ0KDQpKYXdhYjoNCg0KQ2FiYW5nIHlhbmcgbWVtaWxpa2kgcGVueWViYXJhbiB5YW5nIHBhbGluZyBrZWNpbCBhZGFsYWggKipDYWJhbmcgQyoqLiBIYWwgaW5pIGRhcGF0IGRpa2V0YWh1aSBtZWxhbHVpIG5pbGFpIHN0YW5kYXIgZGV2aWFzaSBkYXJpIENhYmFuZyBDIG1lcnVwYWthbiBuaWxhaSBzdGFuZGFyIGRldmlhc2kgeWFuZyB0ZXJrZWNpbCwgc3RhbmRhciBkZXZpYXNpIGFkYWxhaCB1a3VyYW4geWFuZyBtZW51bmp1a2thbiBzZWJlcmFwYSBqYXVoIGRhdGEgbWVueWViYXIgZGFyaSByYXRhLXJhdGEuIE5pbGFpIHlhbmcgbGViaWgga2VjaWwgbWVudW5qdWtrYW4gcGVueWViYXJhbiBkYXRhIHlhbmcgbGViaWgga2VjaWwgKGxlYmloIHRlcmtvbnNlbnRyYXNpIGRpIHNla2l0YXIgcmF0YS1yYXRhKS4gRGFyaSBoYXNpbCBwZXJoaXR1bmdhbiBwYWRhIHNvYWwgbm9tb3IgMSwgZGFwYXQgZGlwZXJvbGVoOg0KDQoqIENhYmFuZyBBOiBTdGFuZGFyIGRldmlhc2kgPSA3LDA3IGp1dGENCg0KKiBDYWJhbmcgQjogU3RhbmRhciBkZXZpYXNpID0gMTQsMTQganV0YQ0KDQoqIENhYmFuZyBDOiBTdGFuZGFyIGRldmlhc2kgPSA1LDgzIGp1dGENCg0KKiBDYWJhbmcgRDogU3RhbmRhciBkZXZpYXNpID0gNywwNyBqdXRhDQoNCkRhcmkgaGFzaWwgdGVyc2VidXQgc3VkYWggZGFwYXQgZGlrZXRhaHVpIGJhaHdhIGNhYmFuZyB5YW5nIG1lbWlsaWtpIHBlbnllYmFyYW4geWFuZyBwYWxpbmcga2VjaWwgYWRhbGFoIENhYmFuZyBDIHlhaXR1IHNlYmVzYXIgNSw4MyBqdXRhLiBTZWxhaW4gaXR1LCBwZW55ZWJhcmFuIGRhdGEgQ2FiYW5nIEMgbGViaWgga2VjaWwga2FyZW5hIG5pbGFpLW5pbGFpIHBlbmp1YWxhbiByZWxhdGlmIGRla2F0IHNhdHUgc2FtYSBsYWluLCBkZW5nYW4gcmVudGFuZyBkYXJpIDMwIGhpbmdnYSA0NSBqdXRhLCB5YW5nIG1lcnVwYWthbiByZW50YW5nIHRlcmtlY2lsIGRpYmFuZGluZ2thbiBjYWJhbmcgbGFpbi4NCg0KLS0tDQoNCiMjIEppa2EgdGFyZ2V0IHBlbmp1YWxhbiBtaW5pbXVtIGFkYWxhaCA1MCBqdXRhIHJ1cGlhaCwgY2FiYW5nIG1hbmEgeWFuZyBnYWdhbCBtZW5jYXBhaSB0YXJnZXQgZGkgc2VtdWEgZGF0YW55YT8NCg0KSmF3YWI6DQoNCkNhYmFuZyB5YW5nIGdhZ2FsIG1lbmNhcGFpIHRhcmdldCBwZW5qdWFsYW4gbWluaW11bSBzZWJlc2FyIDUwIGp1dGEgcnVwaWFoIGRpIHNlbXVhIGRhdGFueWEgYWRhbGFoICoqQ2FiYW5nIEMqKi4gSGFsIGluaSB0ZXJsaWhhdCBkYXJpIGRhdGEgcGVuanVhbGFuIENhYmFuZyBDIHlhbmcgdGVyZGlyaSBkYXJpIDMwIGp1dGEsIDMwIGp1dGEsIDM1IGp1dGEsIDQwIGp1dGEsIGRhbiA0NSBqdXRhLCBkaSBtYW5hIHNlbHVydWggYW5na2FueWEgYmVyYWRhIGRpIGJhd2FoIHRhcmdldCA1MCBqdXRhIHJ1cGlhaC4gU2ViYWxpa255YSwgY2FiYW5nIGxhaW5ueWEgbWVtaWxpa2kgc2V0aWRha255YSBzYXR1IGRhdGEgcGVuanVhbGFuIHlhbmcgbWVtZW51aGkgYXRhdSBtZWxhbXBhdWkgdGFyZ2V0LiBNaXNhbG55YSwgQ2FiYW5nIEEgbWVtaWxpa2kgZGF0YSBwZW5qdWFsYW4gNTAganV0YSBoaW5nZ2EgNzAganV0YSwgQ2FiYW5nIEIgbWVtaWxpa2kgcmVudGFuZyBwZW5qdWFsYW4gZGFyaSA0MCBqdXRhIGhpbmdnYSA4MCBqdXRhLCBkYW4gQ2FiYW5nIEQgYmVyYWRhIHBhZGEga2lzYXJhbiA3MCBqdXRhIGhpbmdnYSA5MCBqdXRhLCBzZW11YW55YSBtZW5jYWt1cCBhbmdrYSBkaSBhdGFzIDUwIGp1dGEuIERlbmdhbiBkZW1pa2lhbiwgQ2FiYW5nIEMgYWRhbGFoIHNhdHUtc2F0dW55YSB5YW5nIGdhZ2FsIG1lbmNhcGFpIHRhcmdldCBwZW5qdWFsYW4gbWluaW11bSBkaSBzZWx1cnVoIGRhdGEgcGVuanVhbGFubnlhLCBtZW51bmp1a2thbiBraW5lcmphIHlhbmcgcGFsaW5nIHRpZGFrIHNlc3VhaSBkZW5nYW4gdGFyZ2V0IGRpYmFuZGluZ2thbiBjYWJhbmcgbGFpbm55YS4NCg0KLS0tDQoNCiMjIEJ1YXRsYWggZGlhZ3JhbSBrb3RhayAoYm94IHBsb3QpIHVudHVrIG1lbXZpc3VhbGlzYXNpa2FuIHBlbnllYmFyYW4gZGF0YSBzZXRpYXAgY2FiYW5nIQ0KDQpKYXdhYjogDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KHBsb3RseSkNCg0KIyBEYXRhIHBlbmp1YWxhbg0KY2FiYW5nX0EgPC0gYyg1MCwgNTUsIDYwLCA2NSwgNzApDQpjYWJhbmdfQiA8LSBjKDQwLCA1MCwgNjAsIDcwLCA4MCkNCmNhYmFuZ19DIDwtIGMoMzAsIDMwLCAzNSwgNDAsIDQ1KQ0KY2FiYW5nX0QgPC0gYyg3MCwgNzUsIDgwLCA4NSwgOTApDQoNCiMgTWVtYnVhdCBCb3ggUGxvdCB1bnR1ayBzZXRpYXAgY2FiYW5nDQpwbG90X2x5KCkgJT4lDQogIGFkZF90cmFjZSgNCiAgICB5ID0gY2FiYW5nX0EsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnbGlnaHRibHVlJykNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfQiwgDQogICAgdHlwZSA9ICJib3giLCANCiAgICBuYW1lID0gIkNhYmFuZyBCIiwgDQogICAgYm94bWVhbiA9IFRSVUUsDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdsaWdodGdyZWVuJykNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfQywgDQogICAgdHlwZSA9ICJib3giLCANCiAgICBuYW1lID0gIkNhYmFuZyBDIiwgDQogICAgYm94bWVhbiA9IFRSVUUsDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdsaWdodHBpbmsnKQ0KICApICU+JQ0KICBhZGRfdHJhY2UoDQogICAgeSA9IGNhYmFuZ19ELCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEQiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ2xpZ2h0eWVsbG93JykNCiAgKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIkJveCBQbG90IFBlbmp1YWxhbiBwZXIgQ2FiYW5nIiwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiUGVuanVhbGFuIChKdXRhIFJ1cGlhaCkiKSwNCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiQ2FiYW5nIikNCiAgKQ0KYGBgDQoNCi0tLQ0KDQojIyBKaWthIGFuZGEgYWRhbGFoIG1hbmFqZXIgcGVydXNhaGFhbiwgYmFnYWltYW5hIGFuZGEgbWVuZ2d1bmFrYW4gaW5mb3JtYXNpIGluaSB1bnR1ayBtZXJlbmNhbmFrYW4gc3RyYXRlZ2kgcGVuaW5na2F0YW4gcGVuanVhbGFuPw0KDQpKYXdhYjoNCg0KU2ViYWdhaSBzZW9yYW5nIG1hbmFqZXIgcGVydXNhaGFhbiwgc2F5YSBha2FuIG1lbmdndW5ha2FuIGluZm9ybWFzaSBpbmkgdW50dWs6DQoNCjEuICoqTWVuZ2lkZW50aWZpa2FzaSBDYWJhbmcgZGVuZ2FuIEtpbmVyamEgUmVuZGFoKiogIA0KICAgQ2FiYW5nIEMgbWVudW5qdWtrYW4ga2luZXJqYSB5YW5nIHBhbGluZyByZW5kYWgga2FyZW5hIHRpZGFrIGFkYSBzYXR1cHVuIGRhdGEgcGVuanVhbGFubnlhIHlhbmcgbWVuY2FwYWkgdGFyZ2V0IG1pbmltdW0uIEZva3VzIHBlcmx1IGRpYmVyaWthbiB1bnR1ayBtZW5nYW5hbGlzaXMgbGViaWggZGFsYW0gcGVueWViYWIga2luZXJqYSByZW5kYWggaW5pLCBzZXBlcnRpIGt1cmFuZ255YSBwZXJtaW50YWFuIGRpIHdpbGF5YWggdGVyc2VidXQsIGt1YWxpdGFzIGxheWFuYW4sIHN0cmF0ZWdpIHBlbWFzYXJhbiwgYXRhdSBmYWt0b3IgZWtzdGVybmFsIHNlcGVydGkga29tcGV0aXNpIGF0YXUgZGF5YSBiZWxpIG1hc3lhcmFrYXQuDQoNCjIuICoqTWVuZ29wdGltYWxpc2FzaSBDYWJhbmcgZGVuZ2FuIFBlbnllYmFyYW4gS2VjaWwqKiAgDQogICBDYWJhbmcgQyBqdWdhIG1lbWlsaWtpIHBlbnllYmFyYW4gcGVuanVhbGFuIHRlcmtlY2lsLCB5YW5nIG1lbnVuanVra2FuIHBvbGEga29uc2lzdGVuIHRldGFwaSBkYWxhbSBhbmdrYSB5YW5nIHJlbmRhaC4gVW50dWsgbWVuaW5na2F0a2FuIHBlbmp1YWxhbiwgcGVydXNhaGFhbiBkYXBhdCBtZW5lcmFwa2FuIHN0cmF0ZWdpIHNlcGVydGkgcHJvbW9zaSBsb2thbCwgcGVsYXRpaGFuIHN0YWYgdW50dWsgbWVuaW5na2F0a2FuIGtldGVyYW1waWxhbiBwZW5qdWFsYW4sIGF0YXUgbWVtcGVybHVhcyBwZW5hd2FyYW4gcHJvZHVrIHlhbmcgbGViaWggcmVsZXZhbiBkZW5nYW4ga2VidXR1aGFuIHBhc2FyIGxva2FsLg0KDQozLiAqKk1lbWFuZmFhdGthbiBDYWJhbmcgZGVuZ2FuIFBlbnllYmFyYW4gTGViYXIqKiAgDQogICBDYWJhbmcgQiBtZW1pbGlraSBwZW55ZWJhcmFuIHBlbmp1YWxhbiB5YW5nIHRlcmJlc2FyLCBtZW51bmp1a2thbiBhZGFueWEgcG90ZW5zaSBwYXNhciB5YW5nIHNpZ25pZmlrYW4gdGV0YXBpIGt1cmFuZyBrb25zaXN0ZW4uIFN0cmF0ZWdpIHVudHVrIENhYmFuZyBCIGRhcGF0IG1lbGliYXRrYW4gc2VnbWVudGFzaSBwZWxhbmdnYW4geWFuZyBsZWJpaCB0ZXJmb2t1cywgbWVtcGVya3VhdCBodWJ1bmdhbiBkZW5nYW4gcGVsYW5nZ2FuIHlhbmcgbWVueXVtYmFuZyBhbmdrYSBwZW5qdWFsYW4gdGluZ2dpLCBhdGF1IG1lbnN0YWJpbGthbiBwZXJmb3JtYSBtZWxhbHVpIHByb2dyYW0gbG95YWxpdGFzLg0KDQo0LiAqKk1lbmluZ2thdGthbiBQZXJmb3JtYSBDYWJhbmcgU3RhYmlsKiogIA0KICAgQ2FiYW5nIEEgZGFuIEQgbWVudW5qdWtrYW4ga29uc2lzdGVuc2kgeWFuZyBiYWlrLCBkZW5nYW4gcmF0YS1yYXRhIGRhbiBtZWRpYW4gcGVuanVhbGFuIGJlcmFkYSBkaSBzZWtpdGFyIHRhcmdldC4gVW50dWsga2VkdWEgY2FiYW5nIGluaSwgc3RyYXRlZ2kgZGFwYXQgZGlmb2t1c2thbiBwYWRhIGVrc3BhbnNpIHBhc2FyLCBzZXBlcnRpIG1lbXBlcmx1YXMgamFuZ2thdWFuIHdpbGF5YWggcGVtYXNhcmFuIGF0YXUgbWVuZ2ludGVncmFzaWthbiB0ZWtub2xvZ2kgdW50dWsgbWVuaW5na2F0a2FuIGVmaXNpZW5zaSBvcGVyYXNpb25hbC4NCg0KNS4gKipNZW5nZXZhbHVhc2kgZGFuIE1lbW9uaXRvcmluZyBCZXJrZWxhbmp1dGFuKiogIA0KICAgUGVudGluZyB1bnR1ayB0ZXJ1cyBtZW1hbnRhdSBraW5lcmphIHNldGlhcCBjYWJhbmcgZGVuZ2FuIG1lbmdndW5ha2FuIGRhdGEgcGVuanVhbGFuIHNlY2FyYSBiZXJrYWxhLiBEZW5nYW4gZXZhbHVhc2kgcnV0aW4sIHBlcnVzYWhhYW4gZGFwYXQgbWVuZ2lkZW50aWZpa2FzaSB0cmVuIGxlYmloIGF3YWwgZGFuIG1lbnllc3VhaWthbiBzdHJhdGVnaSBzZXN1YWkga2VidXR1aGFuLg0KDQo2LiAqKk1lbmluZ2thdGthbiBTaW5lcmdpIEFudGFyIENhYmFuZyoqICANCiAgIENhYmFuZyBkZW5nYW4ga2luZXJqYSBiYWlrIGRhcGF0IGRpamFkaWthbiBjb250b2ggYXRhdSBtZW50b3IgYmFnaSBjYWJhbmcgZGVuZ2FuIHBlcmZvcm1hIHJlbmRhaC4gUHJvZ3JhbSBiZXJiYWdpIHBlbmdldGFodWFuLCBzZXBlcnRpIHBlbGF0aWhhbiBiZXJzYW1hIGF0YXUgcm90YXNpIHN0YWYsIGRhcGF0IG1lbWJhbnR1IG1lbmluZ2thdGthbiBrZW1hbXB1YW4gZGFuIGVmZWt0aXZpdGFzIHRpbSBkaSBzZWx1cnVoIGNhYmFuZy4NCg0KLS0tDQoNCi0tLQ0KDQojIExhdGloYW4gMg0KDQpQZXJ1c2FoYWFuIFhZWiBtZW5nZWxvbGEgcGVuZ2lyaW1hbiBiYXJhbmcga2UgYmVyYmFnYWkgd2lsYXlhaCBkZW5nYW4gbWVuZ2d1bmFrYW4gYmVyYmFnYWkgamVuaXMgdHJhbnNwb3J0YXNpLiBTZXRpYXAgcGVuZ2lyaW1hbiBtZWxpYmF0a2FuIGJpYXlhIHRyYW5zcG9ydGFzaSwgd2FrdHUgeWFuZyBkaWJ1dHVoa2FuLCBkYW4ganVtbGFoIGJhcmFuZyB5YW5nIGRpa2lyaW0uIEJlcmlrdXQgYWRhbGFoIGRhdGEgdGVya2FpdCBwZW5naXJpbWFuIGJhcmFuZyBiZXJkYXNhcmthbiB3aWxheWFoIGRhbiBqZW5pcyBiYXJhbmc6DQoNCg0KfCAqKldpbGF5YWgqKiB8ICoqSmVuaXMgQmFyYW5nKiogfCAqKkp1bWxhaCAodW5pdCkqKiB8ICoqV2FrdHUgKGphbSkqKiB8ICoqQmlheWEgcGVyIFVuaXQgKFJwKSoqIHwNCnwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgVXRhcmEgICAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgMjAwICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgfCAxNSwwMDAgICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgICAgfCBQYWthaWFuICAgICAgICAgIHwgMTUwICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgfCA4LDAwMCAgICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgICAgfCBNYWthbmFuICAgICAgICAgIHwgMTgwICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgfCAxMCwwMDAgICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgICAgfCBQZXJhbGF0YW4gICAgICAgIHwgMTIwICAgICAgICAgICAgICAgfCA3ICAgICAgICAgICAgICAgfCAxMiwwMDAgICAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgMjUwICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgfCAxNCwwMDAgICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgICAgfCBQYWthaWFuICAgICAgICAgIHwgMzAwICAgICAgICAgICAgICAgfCA5ICAgICAgICAgICAgICAgfCA4LDUwMCAgICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgICAgfCBNYWthbmFuICAgICAgICAgIHwgMjIwICAgICAgICAgICAgICAgfCA3ICAgICAgICAgICAgICAgfCA5LDUwMCAgICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgICAgfCBQZXJhbGF0YW4gICAgICAgIHwgMTQwICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgfCAxMSwwMDAgICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgMTgwICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgfCAxNCw1MDAgICAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgICAgfCBQYWthaWFuICAgICAgICAgIHwgMzUwICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgfCA3LDgwMCAgICAgICAgICAgICAgICAgIHwNCnwgVXRhcmEgICAgICAgfCBQZXJhbGF0YW4gICAgICAgIHwgMTcwICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgfCAxMiwwMDAgICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiAgICAgfCBFbGVrdHJvbmlrICAgICAgIHwgMjUwICAgICAgICAgICAgICAgfCA2ICAgICAgICAgICAgICAgfCAxNiwwMDAgICAgICAgICAgICAgICAgIHwNCnwgVGltdXIgICAgICAgfCBQYWthaWFuICAgICAgICAgIHwgMTkwICAgICAgICAgICAgICAgfCA3ICAgICAgICAgICAgICAgfCA4LDIwMCAgICAgICAgICAgICAgICAgIHwNCnwgQmFyYXQgICAgICAgfCBNYWthbmFuICAgICAgICAgIHwgMTMwICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgfCAxMCw1MDAgICAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICAgICAgfCBQZXJhbGF0YW4gICAgICAgIHwgMTgwICAgICAgICAgICAgICAgfCA1ICAgICAgICAgICAgICAgfCAxMSw1MDAgICAgICAgICAgICAgICAgIHwNCg0KLS0tDQoNCiMjIEFuYWxpc2lzIEVmaXNpZW5zaSBQZW5naXJpbWFuOg0KIyMjIFZpc3VhbGlzYWthbiBwZW5naXJpbWFuIGJhcmFuZyBiZXJkYXNhcmthbiBqdW1sYWggYmFyYW5nLCB3YWt0dSBwZW5naXJpbWFuLCBkYW4gYmlheWEgcGVyIHVuaXQgZGVuZ2FuIG1lbmdndW5ha2FuIHBsb3QgM0QuDQoNCkphd2FiOg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YSB5YW5nIGRpZ3VuYWthbg0KZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBXaWxheWFoID0gYygiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIsICJUZW5nYWgiLCANCiAgICAgICAgICAgICAgIlV0YXJhIiwgIlNlbGF0YW4iLCAiVGltdXIiLCAiQmFyYXQiLCAiVGVuZ2FoIiwgDQogICAgICAgICAgICAgICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIpLA0KICBKZW5pc19CYXJhbmcgPSBjKCJFbGVrdHJvbmlrIiwgIlBha2FpYW4iLCAiTWFrYW5hbiIsICJQZXJhbGF0YW4iLCAiRWxla3Ryb25payIsIA0KICAgICAgICAgICAgICAgICAgICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiwgIkVsZWt0cm9uaWsiLCAiUGFrYWlhbiIsIA0KICAgICAgICAgICAgICAgICAgICJQZXJhbGF0YW4iLCAiRWxla3Ryb25payIsICJQYWthaWFuIiwgIk1ha2FuYW4iLCAiUGVyYWxhdGFuIiksDQogIEp1bWxhaF9CYXJhbmcgPSBjKDIwMCwgMTUwLCAxODAsIDEyMCwgMjUwLCANCiAgICAgICAgICAgICAgICAgICAgMzAwLCAyMjAsIDE0MCwgMTgwLCAzNTAsIA0KICAgICAgICAgICAgICAgICAgICAxNzAsIDI1MCwgMTkwLCAxMzAsIDE4MCksDQogIFdha3R1X1BlbmdpcmltYW4gPSBjKDUsIDgsIDYsIDcsIDQsIA0KICAgICAgICAgICAgICAgICAgICAgICA5LCA3LCA1LCA2LCA4LCANCiAgICAgICAgICAgICAgICAgICAgICAgNCwgNiwgNywgNSwgNSksDQogIEJpYXlhX1Blcl9Vbml0ID0gYygxNTAwMCwgODAwMCwgMTAwMDAsIDEyMDAwLCAxNDAwMCwgDQogICAgICAgICAgICAgICAgICAgICA4NTAwLCA5NTAwLCAxMTAwMCwgMTQ1MDAsIDc4MDAsIA0KICAgICAgICAgICAgICAgICAgICAgMTIwMDAsIDE2MDAwLCA4MjAwLCAxMDUwMCwgMTE1MDApDQopDQoNCiMgTWVtYnVhdCBwbG90IDNEIG1lbmdndW5ha2FuIHBsb3RseQ0KcGxvdF8zZCA8LSBwbG90X2x5KA0KICBkYXRhLA0KICB4ID0gfkp1bWxhaF9CYXJhbmcsDQogIHkgPSB+V2FrdHVfUGVuZ2lyaW1hbiwNCiAgeiA9IH5CaWF5YV9QZXJfVW5pdCwNCiAgdHlwZSA9ICdzY2F0dGVyM2QnLA0KICBtb2RlID0gJ21hcmtlcnMnLA0KICBjb2xvciA9IH5XaWxheWFoLA0KICBzaXplID0gfkJpYXlhX1Blcl9Vbml0ICogMC4wMDAxLCAgIyBNZW1wZXJiZXNhciB1a3VyYW4gYnViYmxlDQogIG1hcmtlciA9IGxpc3QoDQogICAgc2l6ZSA9IDEwLA0KICAgIG9wYWNpdHkgPSAxDQogICksDQogIHRleHQgPSB+cGFzdGUoDQogICAgIldpbGF5YWg6IiwgV2lsYXlhaCwNCiAgICAiPGJyPldha3R1IFBlbmdpcmltYW46IiwgV2FrdHVfUGVuZ2lyaW1hbiwgImphbSIsDQogICAgIjxicj5KdW1sYWggQmFyYW5nOiIsIEp1bWxhaF9CYXJhbmcsICJ1bml0IiwNCiAgICAiPGJyPkJpYXlhIHBlciBVbml0OiBScCIsIEJpYXlhX1Blcl9Vbml0DQogICkNCikgJT4lIGxheW91dCgNCiAgdGl0bGUgPSAiQW5hbGlzaXMgM0QgRWZpc2llbnNpIFBlbmdpcmltYW4gQmFyYW5nIiwNCiAgc2NlbmUgPSBsaXN0KA0KICAgIHhheGlzID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIkp1bWxhaCBCYXJhbmciLA0KICAgICAgdGl0bGVmb250ID0gbGlzdChzaXplID0gMTIpLA0KICAgICAgdGlja2ZvbnQgPSBsaXN0KHNpemUgPSAxMCkNCiAgICApLA0KICAgIHlheGlzID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIlBlbmdpcmltYW4gKGphbSkiLA0KICAgICAgdGl0bGVmb250ID0gbGlzdChzaXplID0gMTIpLA0KICAgICAgdGlja2ZvbnQgPSBsaXN0KHNpemUgPSAxMCkNCiAgICApLA0KICAgIHpheGlzID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIkJpYXlhIChScCkiLA0KICAgICAgdGl0bGVmb250ID0gbGlzdChzaXplID0gMTIpLA0KICAgICAgdGlja2ZvbnQgPSBsaXN0KHNpemUgPSAxMCkNCiAgICApDQogICksDQogIGxlZ2VuZCA9IGxpc3QoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiV2lsYXlhaCIpLA0KICAgIGJnY29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIiwNCiAgICBib3JkZXJjb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDAuNSkiLA0KICAgIGJvcmRlcndpZHRoID0gMQ0KICApDQopDQoNCnBsb3RfM2QNCmBgYA0KDQotLS0NCg0KIyMjIFRlbnR1a2FuIHdpbGF5YWggbWFuYSB5YW5nIG1lbWlsaWtpIGVmaXNpZW5zaSBwZW5naXJpbWFuIHRlcmVuZGFoIGJlcmRhc2Fya2FuIGJpYXlhIHBlciB1bml0IGRhbiB3YWt0dSBwZW5naXJpbWFuIQ0KDQpKYXdhYjoNCg0KVW50dWsgbWVuZW50dWthbiB3aWxheWFoIGRlbmdhbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbiB0ZXJlbmRhaCBiZXJkYXNhcmthbiBiaWF5YSBwZXIgdW5pdCBkYW4gd2FrdHUgcGVuZ2lyaW1hbiwga2l0YSBha2FuIG1lbmdoaXR1bmcgcmFzaW8gZWZpc2llbnNpIHVudHVrIHNldGlhcCB3aWxheWFoLiBSYXNpbyBlZmlzaWVuc2kgZGloaXR1bmcgZGVuZ2FuIG1lbWJhZ2kgYmlheWEgcGVyIHVuaXQgZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4uIFNlbWFraW4gYmVzYXIgcmFzaW8gaW5pLCBzZW1ha2luIHJlbmRhaCBlZmlzaWVuc2kgcGVuZ2lyaW1hbm55YSwga2FyZW5hIGJpYXlhIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gZGVuZ2FuIHdha3R1IHlhbmcgZGlidXR1aGthbi4NCg0KKipSdW11cyBSYXNpbyBFZmlzaWVuc2k6KioNClxbDQpcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX0NClxdDQoNCioqRGF0YSB5YW5nIGRpZ3VuYWthbjoqKg0KDQp8IFdpbGF5YWggfCBCaWF5YSBwZXIgVW5pdCAoUnApIHwgV2FrdHUgUGVuZ2lyaW1hbiAoamFtKSB8DQp8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IFV0YXJhICAgfCAxNSwwMDAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICB8DQp8IFNlbGF0YW4gfCA4LDAwMCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRpbXVyICAgfCAxMCwwMDAgICAgICAgICAgICAgIHwgNiAgICAgICAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCAxMiwwMDAgICAgICAgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRlbmdhaCAgfCAxNCwwMDAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgICB8DQp8IFV0YXJhICAgfCA4LDUwMCAgICAgICAgICAgICAgIHwgOSAgICAgICAgICAgICAgICAgICAgICB8DQp8IFNlbGF0YW4gfCA5LDUwMCAgICAgICAgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRpbXVyICAgfCAxMSwwMDAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCAxNCw1MDAgICAgICAgICAgICAgIHwgNiAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRlbmdhaCAgfCA3LDgwMCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgICB8DQp8IFV0YXJhICAgfCAxMiwwMDAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgICB8DQp8IFNlbGF0YW4gfCAxNiwwMDAgICAgICAgICAgICAgIHwgNiAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRpbXVyICAgfCA4LDIwMCAgICAgICAgICAgICAgIHwgNyAgICAgICAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCAxMCw1MDAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICB8DQp8IFRlbmdhaCAgfCAxMSw1MDAgICAgICAgICAgICAgIHwgNSAgICAgICAgICAgICAgICAgICAgICB8DQoNCioqTGFuZ2thaC1MYW5na2FoKioNCg0KKipBLiBVbnR1ayBzZXRpYXAgYmFyaXMsIGtpdGEgYWthbiBtZW5naGl0dW5nIHJhc2lvIEJpYXlhIHBlciBVbml0IGRpYmFnaSBkZW5nYW4gV2FrdHUgUGVuZ2lyaW1hbioqDQoNCjEuICoqV2lsYXlhaCBVdGFyYSAoQmFyaXMgMSkqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09XGZyYWN7MTUsMDAwfXs1fSA9IDMsMDAwDQogICBcXQ0KDQoyLiAqKldpbGF5YWggU2VsYXRhbiAoQmFyaXMgMikqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezgsMDAwfXs4fSA9IDEsMDAwDQogICBcXQ0KDQozLiAqKldpbGF5YWggVGltdXIgKEJhcmlzIDMpKio6DQogICBcWw0KICAgXHRleHR7UmFzaW8gRWZpc2llbnNpfSA9IFxmcmFje1x0ZXh0e0JpYXlhIHBlciBVbml0fX17XHRleHR7V2FrdHUgUGVuZ2lyaW1hbn19PSBcZnJhY3sxMCwwMDB9ezZ9IFxhcHByb3ggMSw2NjcNCiAgIFxdDQoNCjQuICoqV2lsYXlhaCBCYXJhdCAoQmFyaXMgNCkqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezEyLDAwMH17N30gXGFwcHJveCAxLDcxNA0KICAgXF0NCg0KNS4gKipXaWxheWFoIFRlbmdhaCAoQmFyaXMgNSkqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezE0LDAwMH17NH0gPSAzLDUwMA0KICAgXF0NCg0KNi4gKipXaWxheWFoIFV0YXJhIChCYXJpcyA2KSoqOg0KICAgXFsNCiAgIFx0ZXh0e1Jhc2lvIEVmaXNpZW5zaX0gPSBcZnJhY3tcdGV4dHtCaWF5YSBwZXIgVW5pdH19e1x0ZXh0e1dha3R1IFBlbmdpcmltYW59fT0gXGZyYWN7OCw1MDB9ezl9IFxhcHByb3ggOTQ0LjQ0DQogICBcXQ0KDQo3LiAqKldpbGF5YWggU2VsYXRhbiAoQmFyaXMgNykqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezksNTAwfXs3fSBcYXBwcm94IDEsMzU3LjE0DQogICBcXQ0KDQo4LiAqKldpbGF5YWggVGltdXIgKEJhcmlzIDgpKio6DQogICBcWw0KICAgXHRleHR7UmFzaW8gRWZpc2llbnNpfSA9IFxmcmFje1x0ZXh0e0JpYXlhIHBlciBVbml0fX17XHRleHR7V2FrdHUgUGVuZ2lyaW1hbn19PSBcZnJhY3sxMSwwMDB9ezV9ID0gMiwyMDANCiAgIFxdDQoNCjkuICoqV2lsYXlhaCBCYXJhdCAoQmFyaXMgOSkqKjoNCiAgIFxbDQogICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezE0LDUwMH17Nn0gXGFwcHJveCAyLDQxNw0KICAgXF0NCg0KMTAuICoqV2lsYXlhaCBUZW5nYWggKEJhcmlzIDEwKSoqOg0KICAgIFxbDQogICAgXHRleHR7UmFzaW8gRWZpc2llbnNpfSA9IFxmcmFje1x0ZXh0e0JpYXlhIHBlciBVbml0fX17XHRleHR7V2FrdHUgUGVuZ2lyaW1hbn19PSBcZnJhY3s3LDgwMH17OH0gPSA5NzUNCiAgICBcXQ0KDQoxMS4gKipXaWxheWFoIFV0YXJhIChCYXJpcyAxMSkqKjoNCiAgICBcWw0KICAgIFx0ZXh0e1Jhc2lvIEVmaXNpZW5zaX0gPSBcZnJhY3tcdGV4dHtCaWF5YSBwZXIgVW5pdH19e1x0ZXh0e1dha3R1IFBlbmdpcmltYW59fT0gXGZyYWN7MTIsMDAwfXs0fSA9IDMsMDAwDQogICAgXF0NCg0KMTIuICoqV2lsYXlhaCBTZWxhdGFuIChCYXJpcyAxMikqKjoNCiAgICBcWw0KICAgIFx0ZXh0e1Jhc2lvIEVmaXNpZW5zaX0gPSBcZnJhY3tcdGV4dHtCaWF5YSBwZXIgVW5pdH19e1x0ZXh0e1dha3R1IFBlbmdpcmltYW59fT0gXGZyYWN7MTYsMDAwfXs2fSBcYXBwcm94IDIsNjY3DQogICAgXF0NCg0KMTMuICoqV2lsYXlhaCBUaW11ciAoQmFyaXMgMTMpKio6DQogICAgXFsNCiAgICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezgsMjAwfXs3fSBcYXBwcm94IDEsMTcxLjQzDQogICAgXF0NCg0KMTQuICoqV2lsYXlhaCBCYXJhdCAoQmFyaXMgMTQpKio6DQogICAgXFsNCiAgICBcdGV4dHtSYXNpbyBFZmlzaWVuc2l9ID0gXGZyYWN7XHRleHR7QmlheWEgcGVyIFVuaXR9fXtcdGV4dHtXYWt0dSBQZW5naXJpbWFufX09IFxmcmFjezEwLDUwMH17NX0gPSAyLDEwMA0KICAgIFxdDQoNCjE1LiAqKldpbGF5YWggVGVuZ2FoIChCYXJpcyAxNSkqKjoNCiAgICBcWw0KICAgIFx0ZXh0e1Jhc2lvIEVmaXNpZW5zaX0gPSBcZnJhY3tcdGV4dHtCaWF5YSBwZXIgVW5pdH19e1x0ZXh0e1dha3R1IFBlbmdpcmltYW59fT0gXGZyYWN7MTEsNTAwfXs1fSA9IDIsMzAwDQogICAgXF0NCg0KKipIYXNpbCBSYXNpbyBFZmlzaWVuc2k6KioNCg0KfCBXaWxheWFoIHwgUmFzaW8gRWZpc2llbnNpIHwNCnwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBVdGFyYSAoMSkgICB8IDMsMDAwICAgICAgICAgICAgfA0KfCBTZWxhdGFuICgyKSB8IDEsMDAwICAgICAgICAgICAgfA0KfCBUaW11ciAoMykgICB8IDEsNjY3ICAgICAgICAgICAgfA0KfCBCYXJhdCAoNCkgICB8IDEsNzE0ICAgICAgICAgICAgfA0KfCBUZW5nYWggKDUpICB8IDMsNTAwICAgICAgICAgICAgfA0KfCBVdGFyYSAoNikgICB8IDk0NC40NCAgICAgICAgICAgfA0KfCBTZWxhdGFuICg3KSB8IDEsMzU3LjE0ICAgICAgICAgfA0KfCBUaW11ciAoOCkgICB8IDIsMjAwICAgICAgICAgICAgfA0KfCBCYXJhdCAoOSkgICB8IDIsNDE3ICAgICAgICAgICAgfA0KfCBUZW5nYWggKDEwKSB8IDk3NSAgICAgICAgICAgICAgfA0KfCBVdGFyYSAoMTEpICB8IDMsMDAwICAgICAgICAgICAgfA0KfCBTZWxhdGFuICgxMil8IDIsNjY3ICAgICAgICAgICAgfA0KfCBUaW11ciAoMTMpICB8IDEsMTcxLjQzICAgICAgICAgfA0KfCBCYXJhdCAoMTQpICB8IDIsMTAwICAgICAgICAgICAgfA0KfCBUZW5nYWggKDE1KSB8IDIsMzAwICAgICAgICAgICAgfA0KDQoNCioqQi4gUmF0YS1yYXRhIFJhc2lvIEVmaXNpZW5zaSBwZXIgV2lsYXlhaDoqKg0KDQoxLiAqKldpbGF5YWggVXRhcmEqKjoNCiAgIC0gUmFzaW8gZWZpc2llbnNpOiAzLDAwMCwgOTQ0LjQ0LCAzLDAwMA0KICAgLSBSYXRhLXJhdGE6DQogICBcWw0KICAgXHRleHR7UmF0YS1yYXRhIFV0YXJhfSA9IFxmcmFjezMsMDAwICsgOTQ0LjQ0ICsgMywwMDB9ezN9ID0gXGZyYWN7Niw5NDQuNDR9ezN9IFxhcHByb3ggMiwzMTQuODENCiAgIFxdDQoNCjIuICoqV2lsYXlhaCBTZWxhdGFuKio6DQogICAtIFJhc2lvIGVmaXNpZW5zaTogMSwwMDAsIDEsMzU3LjE0LCAyLDY2Nw0KICAgLSBSYXRhLXJhdGE6DQogICBcWw0KICAgXHRleHR7UmF0YS1yYXRhIFNlbGF0YW59ID0gXGZyYWN7MSwwMDAgKyAxLDM1Ny4xNCArIDIsNjY3fXszfSA9IFxmcmFjezUsMDI0LjE0fXszfSBcYXBwcm94IDEsNjc0LjcxDQogICBcXQ0KDQozLiAqKldpbGF5YWggVGltdXIqKjoNCiAgIC0gUmFzaW8gZWZpc2llbnNpOiAxLDY2NywgMiwyMDAsIDEsMTcxLjQzDQogICAtIFJhdGEtcmF0YToNCiAgIFxbDQogICBcdGV4dHtSYXRhLXJhdGEgVGltdXJ9ID0gXGZyYWN7MSw2NjcgKyAyLDIwMCArIDEsMTcxLjQzfXszfSA9IFxmcmFjezUsMDM4LjQzfXszfSBcYXBwcm94IDEsNjc5LjQ4DQogICBcXQ0KDQo0LiAqKldpbGF5YWggQmFyYXQqKjoNCiAgIC0gUmFzaW8gZWZpc2llbnNpOiAxLDcxNCwgMiw0MTcsIDIsMTAwDQogICAtIFJhdGEtcmF0YToNCiAgIFxbDQogICBcdGV4dHtSYXRhLXJhdGEgQmFyYXR9ID0gXGZyYWN7MSw3MTQgKyAyLDQxNyArIDIsMTAwfXszfSA9IFxmcmFjezYsMjMxfXszfSA9IDIsMDc3DQogICBcXQ0KDQo1LiAqKldpbGF5YWggVGVuZ2FoKio6DQogICAtIFJhc2lvIGVmaXNpZW5zaTogMyw1MDAsIDk3NSwgMiwzMDANCiAgIC0gUmF0YS1yYXRhOg0KICAgXFsNCiAgIFx0ZXh0e1JhdGEtcmF0YSBUZW5nYWh9ID0gXGZyYWN7Myw1MDAgKyA5NzUgKyAyLDMwMH17M30gPSBcZnJhY3s2LDc3NX17M30gXGFwcHJveCAyLDI1OC4zMw0KICAgXF0NCg0KKipIYXNpbCBSYXRhLXJhdGEgUmFzaW8gRWZpc2llbnNpIHBlciBXaWxheWFoOioqDQoNCnwgV2lsYXlhaCB8IFJhdGEtcmF0YSBSYXNpbyBFZmlzaWVuc2kgfA0KfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IFV0YXJhICAgfCAyLDMxNC44MSAgICAgICAgICAgICAgICAgIHwNCnwgU2VsYXRhbiB8IDEsNjc0LjcxICAgICAgICAgICAgICAgICAgfA0KfCBUaW11ciAgIHwgMSw2NzkuNDggICAgICAgICAgICAgICAgICB8DQp8IEJhcmF0ICAgfCAyLDA3Ny4wMCAgICAgICAgICAgICAgICAgIHwNCnwgVGVuZ2FoICB8IDIsMjU4LjMzICAgICAgICAgICAgICAgICAgfA0KDQojIyMjIEtlc2ltcHVsYW46DQoNCldpbGF5YWggU2VsYXRhbiBtZW1pbGlraSBlZmlzaWVuc2kgcGVuZ2lyaW1hbiB0ZXJlbmRhaCBiZXJkYXNhcmthbiBiaWF5YSBwZXIgdW5pdCBkYW4gd2FrdHUgcGVuZ2lyaW1hbiBrYXJlbmEgcmFzaW8gZWZpc2llbnNpbnlhIHlhbmcgbGViaWggcmVuZGFoIGRpYmFuZGluZ2thbiB3aWxheWFoIGxhaW5ueWEuIERpIHdpbGF5YWggU2VsYXRhbiwgcmFzaW8gZWZpc2llbnNpIHJhdGEtcmF0YSBhZGFsYWggMSw2NzQuNzEsIGxlYmloIGtlY2lsIGRhcmkgd2lsYXlhaCBsYWluIHNlcGVydGkgVGVuZ2FoICgyLDI1OC4zMykgZGFuIFV0YXJhICgyLDMxNC44MSksIHlhbmcgbWVudW5qdWtrYW4gYmlheWEgcGVyIHVuaXQgeWFuZyBsZWJpaCB0aW5nZ2kgYXRhdSB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYS4gV2lsYXlhaCBTZWxhdGFuIG1lbWlsaWtpIGJpYXlhIHBlciB1bml0IHlhbmcgbGViaWggcmVuZGFoIGRhbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgcmVsYXRpZiB3YWphciwgbWVuY2lwdGFrYW4ga2VzZWltYmFuZ2FuIGFudGFyYSBiaWF5YSBkYW4gd2FrdHUuIERlbmdhbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgZWZpc2llbiwgd2lsYXlhaCBpbmkgbWFtcHUgbWVuZ29wdGltYWxrYW4gcGVuZ2VsdWFyYW4gdGFucGEgbWVuZ29yYmFua2FuIHdha3R1LCB5YW5nIG1lbWJ1YXRueWEgbGViaWggZWZpc2llbiBkYWxhbSBwZW5naXJpbWFuIGJhcmFuZyBzZWNhcmEga2VzZWx1cnVoYW4uDQoNCi0tLQ0KDQojIyBSZWtvbWVuZGFzaSBPcGVyYXNpb25hbDoNCiMjIyBCZXJkYXNhcmthbiBoYXNpbCBhbmFsaXNpcywgd2lsYXlhaCBtYW5hIHlhbmcgbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbj8NCg0KSmF3YWI6DQoNCkJlcmRhc2Fya2FuIGhhc2lsIGFuYWxpc2lzLCAqKldpbGF5YWggVGVuZ2FoKiogbWVtZXJsdWthbiBwZXJoYXRpYW4ga2h1c3VzIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbi4gSGFsIGluaSBkaXNlYmFia2FuIG9sZWggcmFzaW8gZWZpc2llbnNpIHlhbmcgdGVydGluZ2dpIGRpIGFudGFyYSB3aWxheWFoIGxhaW5ueWEsIHlhaXR1ICoqMiwyNTguMzMqKi4gUmFzaW8gZWZpc2llbnNpIHlhbmcgdGluZ2dpIG1lbnVuanVra2FuIGJhaHdhIHdpbGF5YWggaW5pIG1lbmdlbHVhcmthbiBiaWF5YSBwZXIgdW5pdCB5YW5nIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4geWFuZyByZWxhdGlmIGxlYmloIHBlbmRlay4gTWVza2lwdW4gd2FrdHUgcGVuZ2lyaW1hbiBkaSB3aWxheWFoIGluaSB0aWRhayB0ZXJsYWx1IGxhbWEsIHRpbmdnaW55YSBiaWF5YSBwZXIgdW5pdCBtZW5naW5kaWthc2lrYW4gYWRhbnlhIHBlbHVhbmcgdW50dWsgbWVuZ3VyYW5naSBiaWF5YSBwZW5naXJpbWFuLiBPbGVoIGthcmVuYSBpdHUsIHVudHVrIG1lbmluZ2thdGthbiBlZmlzaWVuc2ksIHdpbGF5YWggVGVuZ2FoIHBlcmx1IGZva3VzIHBhZGEgcGVuZ3VyYW5nYW4gYmlheWEgcGVyIHVuaXQgZGFuIG9wdGltYWxpc2FzaSBwcm9zZXMgcGVuZ2lyaW1hbiBhZ2FyIGxlYmloIGVmaXNpZW4gZGFsYW0gaGFsIGJpYXlhIGRhbiB3YWt0dS4NCg0KLS0tDQoNCiMjIyBBcGEgcmVrb21lbmRhc2kgdW50dWsgbWVuZ3VyYW5naSBiaWF5YSBkYW4gd2FrdHUgcGVuZ2lyaW1hbiBkaSB3aWxheWFoIHRlcnNlYnV0Pw0KDQpKYXdhYjogDQoNCjEuICoqT3B0aW1hbGthbiBSdXRlIFBlbmdpcmltYW4qKjogR3VuYWthbiB0ZWtub2xvZ2kgR1BTIGRhbiBwZXJhbmdrYXQgbHVuYWsgcGVyZW5jYW5hYW4gcnV0ZSB1bnR1ayBtZW1pbGloIGphbHVyIHlhbmcgbGViaWggZWZpc2llbiBkYW4gbWVuZ2hpbmRhcmkga2VtYWNldGFuLg0KMi4gKipOZWdvc2lhc2kgVGFyaWYgUGVuZ2lyaW1hbioqOiBUYXdhciB0YXJpZiBsZWJpaCBrb21wZXRpdGlmIGRlbmdhbiBwZW55ZWRpYSBqYXNhIGxvZ2lzdGlrIGF0YXUgamFsaW4ga29udHJhayBqYW5na2EgcGFuamFuZyB1bnR1ayBkaXNrb24uDQozLiAqKlBlbmdlbG9sYWFuIFBlcnNlZGlhYW4qKjogS2Vsb2xhIHBlcnNlZGlhYW4gc2VjYXJhIHJlYWwtdGltZSB1bnR1ayBtZW5naGluZGFyaSBwZW5naXJpbWFuIG1lbmRlc2FrIHlhbmcgbWFoYWwuDQo0LiAqKkd1bmFrYW4gS2VuZGFyYWFuIFRlcGF0IFVrdXJhbioqOiBQYXN0aWthbiBrZW5kYXJhYW4gZGlndW5ha2FuIHNlY2FyYSBtYWtzaW1hbCB1bnR1ayBtZW5ndXJhbmdpIHBlbWJvcm9zYW4gYmlheWEgYmFoYW4gYmFrYXIuDQo1LiAqKkVmaXNpZW5zaWthbiBQcm9zZXMgUGVuZ2lyaW1hbioqOiBMYXRpaCBwZW5nZW11ZGkgdW50dWsgbWVuZ3VyYW5naSBwZW1ib3Jvc2FuIGJhaGFuIGJha2FyIGRhbiBwZXJjZXBhdCBwZW1yb3Nlc2FuIGJhcmFuZyBkaSBndWRhbmcuDQo2LiAqKlBlbGFjYWthbiBQZW5naXJpbWFuIFJlYWwtVGltZSoqOiBHdW5ha2FuIHNpc3RlbSBwZWxhY2FrYW4gdW50dWsgbWVuZ2lkZW50aWZpa2FzaSBtYXNhbGFoIGRhbiBtZW5naGluZGFyaSBrZXRlcmxhbWJhdGFuLg0KNy4gKipLb29yZGluYXNpIGRhbiBLb2xhYm9yYXNpKio6IFRpbmdrYXRrYW4ga29tdW5pa2FzaSBkZW5nYW4gcGVtYXNvayBkYW4gcGVuZ2lyaW0gc2VydGEga29uc29saWRhc2kgcGVuZ2lyaW1hbiB1bnR1ayBtZW5ndXJhbmdpIGJpYXlhLg0KDQoNCi0tLQ0KDQojIyBLaW5lcmphIEJlcmRhc2Fya2FuIEplbmlzIEJhcmFuZzoNCkFuYWxpc2lzIGtpbmVyamEgcGVuZ2lyaW1hbiBiZXJkYXNhcmthbiBqZW5pcyBiYXJhbmcgZGFuIHdpbGF5YWguIE1hbmEgeWFuZyBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIGxlYmloIGNlcGF0IGRhbiBiaWF5YSBwZXIgdW5pdCBsZWJpaCByZW5kYWg/DQoNCkphd2FiOg0KDQpVbnR1ayBtZW5nYW5hbGlzaXMga2luZXJqYSBwZW5naXJpbWFuIGJlcmRhc2Fya2FuIGplbmlzIGJhcmFuZyBkYW4gd2lsYXlhaCwga2l0YSBwZXJsdSBtZWxpaGF0IGR1YSBmYWt0b3IgdXRhbWE6IHdha3R1IHBlbmdpcmltYW4gZGFuIGJpYXlhIHBlciB1bml0LiBCZXJkYXNhcmthbiBkYXRhIHlhbmcgYWRhLCBraXRhIGRhcGF0IG1lbnlpbXB1bGthbiB3aWxheWFoIGRhbiBqZW5pcyBiYXJhbmcgbWFuYSB5YW5nIGxlYmloIGVmaXNpZW4gZGFsYW0gaGFsIHdha3R1IGRhbiBiaWF5YS4NCg0KKipMYW5na2FoLWxhbmdrYWggQW5hbGlzaXM6KioNCg0KMS4gKipXYWt0dSBQZW5naXJpbWFuKio6IE1lbWJhbmRpbmdrYW4gd2FrdHUgcGVuZ2lyaW1hbiBhbnRhciB3aWxheWFoIHVudHVrIGplbmlzIGJhcmFuZyB0ZXJ0ZW50dS4NCg0KMi4gKipCaWF5YSBwZXIgVW5pdCoqOiBNZW1iYW5kaW5na2FuIGJpYXlhIHBlciB1bml0IGFudGFyIHdpbGF5YWggZGFuIGplbmlzIGJhcmFuZy4NCg0KKipBbmFsaXNpcyBCZXJkYXNhcmthbiBEYXRhOioqDQoNCjEuICoqV2lsYXlhaCBkZW5nYW4gV2FrdHUgUGVuZ2lyaW1hbiBMZWJpaCBDZXBhdCoqOg0KICAgLSBXaWxheWFoIFNlbGF0YW4gbWVtaWxpa2kgd2FrdHUgcGVuZ2lyaW1hbiB5YW5nIHJlbGF0aWYgbGViaWggY2VwYXQgZGFuIHN0YWJpbCBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWluLiBNaXNhbG55YSwgd2FrdHUgcGVuZ2lyaW1hbiB1bnR1ayBqZW5pcyBiYXJhbmcgZGkgd2lsYXlhaCBpbmkgY2VuZGVydW5nIGxlYmloIHNpbmdrYXQsIHlhbmcgYmVya29udHJpYnVzaSBwYWRhIGVmaXNpZW5zaSBwZW5naXJpbWFuLg0KDQoyLiAqKldpbGF5YWggZGVuZ2FuIEJpYXlhIFBlciBVbml0IExlYmloIFJlbmRhaCoqOg0KICAgLSBXaWxheWFoIFNlbGF0YW4ganVnYSBtZW1pbGlraSBiaWF5YSBwZXIgdW5pdCB5YW5nIGxlYmloIHJlbmRhaCBkaWJhbmRpbmdrYW4gZGVuZ2FuIHdpbGF5YWggbGFpbm55YS4gSGFsIGluaSBtZW51bmp1a2thbiBiYWh3YSB3aWxheWFoIGluaSBsZWJpaCBlZmlzaWVuIGRhbGFtIGhhbCBwZW5nZWx1YXJhbiBwZW5naXJpbWFuIHBlciB1bml0IGJhcmFuZywgeWFuZyBtZW51cnVua2FuIGJpYXlhIHNlY2FyYSBrZXNlbHVydWhhbi4NCg0KIyMjIEtlc2ltcHVsYW46DQotICoqV2lsYXlhaCBTZWxhdGFuKiogbWVudW5qdWtrYW4ga2luZXJqYSBwZW5naXJpbWFuIHRlcmJhaWssIGthcmVuYSBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggY2VwYXQgZGFuIGJpYXlhIHBlciB1bml0IHlhbmcgbGViaWggcmVuZGFoLCBtZW5qYWRpa2FubnlhIHdpbGF5YWggeWFuZyBsZWJpaCBlZmlzaWVuIGRhbGFtIGhhbCBwZW5naXJpbWFuIGJhcmFuZy4NCi0gV2lsYXlhaCBsYWlubnlhLCBzZXBlcnRpICoqV2lsYXlhaCBUZW5nYWgqKiwgbXVuZ2tpbiBtZW1pbGlraSB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYSBkYW4gYmlheWEgcGVyIHVuaXQgeWFuZyBsZWJpaCB0aW5nZ2ksIHNlaGluZ2dhIHBlcmx1IHBlcmhhdGlhbiBraHVzdXMgdW50dWsgbWVuZ29wdGltYWxrYW4gZWZpc2llbnNpIHBlbmdpcmltYW4gZGkgc2FuYS4NCg0KSmFkaSwgamlrYSB0dWp1YW4gdXRhbWFueWEgYWRhbGFoIG1lbmd1cmFuZ2kgd2FrdHUgcGVuZ2lyaW1hbiBkYW4gYmlheWEgcGVyIHVuaXQsIFdpbGF5YWggU2VsYXRhbiBhZGFsYWggeWFuZyBwYWxpbmcgZWZpc2llbiBkaWJhbmRpbmdrYW4gZGVuZ2FuIHdpbGF5YWggbGFpbm55YS4NCg0KLS0tDQoNCi0tLQ0KDQojIFJlZmVyZW5zaQ0KDQoxLiAqKlByYW5vdG8sIFMuKiogKDIwMTcpLiAqQW5hbGlzaXMgU3RyYXRlZ2kgUGVuaW5na2F0YW4gUGVuanVhbGFuKi4gSnVybmFsIEJpc25pcyBTdHJhdGVnaSwgMigxKSwgMS0xNi4gUmV0cmlldmVkIGZyb20gW2h0dHBzOi8vZWpvdXJuYWwudW5kaXAuYWMuaWQvaW5kZXgucGhwL2picy9hcnRpY2xlL3ZpZXcvMTQ0NjldKGh0dHBzOi8vZWpvdXJuYWwudW5kaXAuYWMuaWQvaW5kZXgucGhwL2picy9hcnRpY2xlL3ZpZXcvMTQ0NjkpLg0KDQoyLiAqKlN1Z2l5YW50aSwgTC4qKiAoMjAyMikuICpTdHJhdGVnaSBQZW1hc2FyYW4gRGlnaXRhbCB1bnR1ayBNZW5pbmdrYXRrYW4gUGVuanVhbGFuIFVNS00qLiBKdXJuYWwgQmltYS4gUmV0cmlldmVkIGZyb20gW2h0dHBzOi8vanVybmFsYmltYS5pZF0oaHR0cHM6Ly9qdXJuYWxiaW1hLmlkKS4NCg0KMy4gQWduZXppYSwgUy4gVi4sICYgV2luYXJubywgVy4gKDIwMjIpLiAqUnV0ZSBwZXJqYWxhbmFuIGRhbiBiaWF5YSBvbmdrb3M6IEFsZ29yaXRtYSBQcm9ncmFtIERpbmFtaXMgZGVuZ2FuIFBlbmRla2F0YW4gRm9yd2FyZCBSZWN1cnNpdmUgRXF1YXRpb24qLiBQcm9jZWVkaW5nIE1lcmN1IEJ1YW5hIENvbmZlcmVuY2Ugb24gSW5kdXN0cmlhbCBFbmdpbmVlcmluZywgNiwgMzk2LTQwNS4gDQoNCjQuIFplaW4sIE0uIE4uLCBXaWJvd28sIFAuLCBIaWRheWF0dWxsYWgsIEkuLCBQYWhkaWFuLCBNLiBGLiwgUmFtYWRoYW4sIEEuLCBHdWZyb24sIE4uIFMuIEEuLCAmIFJpbmdvLCBFLiBFLiBTLiAoMjAyMikuICpKYWx1ciBwZW5naXJpbWFuIGRhbiBiaWF5YSBwZW5naXJpbWFuOiBQcm9ncmFtIERpbmFtaXMgZGFsYW0gcGVuZ2lyaW1hbiBiYXJhbmcqLiBQcm9jZWVkaW5nIE1lcmN1IEJ1YW5hIENvbmZlcmVuY2Ugb24gSW5kdXN0cmlhbCBFbmdpbmVlcmluZywgNiwgMzk2LTQwNS4NCg0KNS4gS3VybmlhLCBBLiwgJiBFcm5hd2F0aSwgRC4gKDIwMjEpLiAqT3B0aW1hc2kgcnV0ZSBkaXN0cmlidXNpIG1lbmdndW5ha2FuIGFsZ29yaXRtYSBEaWZmZXJlbnRpYWwgRXZvbHV0aW9uIHVudHVrIHBlbmdoZW1hdGFuIGphcmFrIGRhbiB3YWt0dSB0ZW1wdWgqLiBKdXJuYWwgVGVrbmlrIEluZHVzdHJpLCAyMygyKSwgMTE0LTEzMC4NCg==