
1. Mengidentifikasi Tipe Data
Tentukkan tipe data variabel berikut dalam Python dan R:
a <- 42
b <- 3.14
c <- “Hello”
d <- FALSE
e <- c(1, 2, 3)
f <- list(name = “Alice”, age = 25)
1.1 Indentifikasi setiap variabel
a = 42 # Integer
b = 3.14 # Numeric (float)
c = “Hello” # Character (string)
d = FALSE # Logical (boolean)
e = c(1, 2, 3) # Numeric vector
f = list(name = “Alice”, age = 25) # List (associative array,
dictionary)
1.2 Cetak setiap data setiap variable menggunakan type() (Py)
class() (R)
## [1] "numeric"
## [1] "numeric"
## [1] "character"
## [1] "logical"
## [1] "numeric"
## [1] "list"
2. Variabel dan Manipulasi Data
Buat variabel berikut dalam Python dan R:
x <- 20
y <- 5
text1 <- “Data”
text2 <- “Science”
2.1 Perbarui nilai x dengan menambahkan 10.
## [1] 30
## [1] 5
## [1] "Data"
## [1] "Science"
2.2 Gabungkan text1 dan text2 ke dalam string “Data Science”
menggunakan Python dan R
## [1] "Data Science"
2.3 mengubah teks gabungan menjadi huruf besar menggunakan Python
dan R
## [1] "DATA SCIENCE"
3. Operasi Aritmatika
Menggunakan variabel-variabel berikut:
a <- 15
b <- 4
3.1 Hitung jumlah, selisih, produk, pembagian, dan modulo dari
variabel a dan b menggunakan Python dan R
## [1] "Jumlah: 19"
## [1] "Selisih: 11"
## [1] "Produk: 60"
## [1] "Pembagian: 3.75"
## [1] "Modulo: 3"
3.1 Hitung pangkat dari a ke b
## [1] "Hasil pangkat: 8"
3.3 Buat variabel baru c yang merupakan hasil pembagian a dan b,
kemudian mengubahnya menjadi tipe data integer
## [1] "c sebagai integer: 3"
4. Operasi String
Diberikan teks berikut:
text <- “Hello, Data Science!”
4.1 Ekstrak 5 karakter pertama dari teks
## [1] "Hello"
4.2 Hitung jumlah karakter dalam teks
## [1] 20
4.3 Mengubah teks menjadi huruf kecil
## [1] "hello, data science!"
5. Operator Perbandingan dan Logika
Mengingat variabel-variabel berikut:
x <- 7
y <- 10
5.1 Periksa apakah x lebih besar dari y
## [1] TRUE
5.2 Periksa apakah x kurang dari atau sama dengan y
## [1] FALSE
5.3 Periksa apakah x tidak sama dengan y
## [1] TRUE
5.4 Evaluasilah ekspresi (x > 5) AND (y < 20)
## [1] TRUE
6. Konversi Tipe Data
Mengingat variabel-variabel berikut:
num_str <- “123”
num_float <- 45.67
6.1 Ubah num_str ke bilangan bulat dan tambahkan 10
## [1] 133
6.2 Ubah num_float ke bilangan bulat
## [1] 45
6.3 Mengonversi num_float kembali menjadi string
## [1] "45.67"
7. Tantangan Bonus
Buat program interaktif yang meminta pengguna untuk memasukkan:
- Nama
- Usia
- Kota kelahiran
Kemudian, cetak output sebagai berikut:
“Hello [Name], you are [Age] years old and from [Hometown].”
## Masukkan nama Anda:
## Masukkan usia Anda:
## Masukkan kota kelahiran Anda:
## Hello , you are years old and from .
LS0tDQp0aXRsZTogIlBFTVJPR1JBTUFOIFNBSU5TIERBVEEgMSINCnN1YnRpdGxlOiAiUEVNUk9HUkFNQU4gREFTQVIiDQphdXRob3I6ICJEYWRhbiBSYW1kYW4gSGlkYXlhdCAoNTIyNDAwMjgpIg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzDQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJzdHlsZS5jc3MiDQotLS0NCg0KPGltZyBzcmM9InN0YXRpc3Rpa2EuanBnIiB3aWR0aD0iOTAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iIj4NCg0KDQojIyAxLiBNZW5naWRlbnRpZmlrYXNpIFRpcGUgRGF0YSAgDQoNClRlbnR1a2thbiB0aXBlIGRhdGEgdmFyaWFiZWwgYmVyaWt1dCBkYWxhbSBQeXRob24gZGFuIFI6ICANCg0KYSA8LSA0MiAgDQpiIDwtIDMuMTQgIA0KYyA8LSAiSGVsbG8iICANCmQgPC0gRkFMU0UgIA0KZSA8LSBjKDEsIDIsIDMpICANCmYgPC0gbGlzdChuYW1lID0gIkFsaWNlIiwgYWdlID0gMjUpDQoNCiMjIyAxLjEgSW5kZW50aWZpa2FzaSBzZXRpYXAgdmFyaWFiZWwNCg0KYSA9IDQyICAgICAgICMgSW50ZWdlciAgDQpiID0gMy4xNCAgICAgIyBOdW1lcmljIChmbG9hdCkgIA0KYyA9ICJIZWxsbyIgICMgQ2hhcmFjdGVyIChzdHJpbmcpICANCmQgPSBGQUxTRSAgICAjIExvZ2ljYWwgKGJvb2xlYW4pICANCmUgPSBjKDEsIDIsIDMpICMgTnVtZXJpYyB2ZWN0b3IgIA0KZiA9IGxpc3QobmFtZSA9ICJBbGljZSIsIGFnZSA9IDI1KSAjIExpc3QgKGFzc29jaWF0aXZlIGFycmF5LCBkaWN0aW9uYXJ5KQ0KDQojIyMgMS4yIENldGFrIHNldGlhcCBkYXRhIHNldGlhcCB2YXJpYWJsZSBtZW5nZ3VuYWthbiB0eXBlKCkgKFB5KSBjbGFzcygpIChSKQ0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgSW5pc2lhbGlzYXNpIHZhcmlhYmVsICANCmEgPC0gNDIgIA0KYiA8LSAzLjE0ICANCmMgPC0gIkhlbGxvIiAgDQpkIDwtIEZBTFNFICANCmUgPC0gYygxLCAyLCAzKSAgDQpmIDwtIGxpc3QobmFtZSA9ICJBbGljZSIsIGFnZSA9IDI1KSAgDQoNCiMgTWVuZ2lkZW50aWZpa2FzaSBkYW4gbWVuY2V0YWsgdGlwZSBkYXRhICANCnByaW50KGNsYXNzKGEpKSAgIyBPdXRwdXQ6ICJudW1lcmljIiAgDQpwcmludChjbGFzcyhiKSkgICMgT3V0cHV0OiAibnVtZXJpYyIgIA0KcHJpbnQoY2xhc3MoYykpICAjIE91dHB1dDogImNoYXJhY3RlciIgIA0KcHJpbnQoY2xhc3MoZCkpICAjIE91dHB1dDogImxvZ2ljYWwiICANCnByaW50KGNsYXNzKGUpKSAgIyBPdXRwdXQ6ICJpbnRlZ2VyIiAgDQpwcmludChjbGFzcyhmKSkgICMgT3V0cHV0OiAibGlzdCINCmBgYA0KDQojIyAyLiBWYXJpYWJlbCBkYW4gTWFuaXB1bGFzaSBEYXRhICANCg0KQnVhdCB2YXJpYWJlbCBiZXJpa3V0IGRhbGFtIFB5dGhvbiBkYW4gUjogIA0KDQp4IDwtIDIwICANCnkgPC0gNSAgDQp0ZXh0MSA8LSAiRGF0YSIgIA0KdGV4dDIgPC0gIlNjaWVuY2UiDQoNCiMjIyAyLjEgUGVyYmFydWkgbmlsYWkgeCBkZW5nYW4gbWVuYW1iYWhrYW4gMTAuDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW1idWF0IHZhcmlhYmVsICANCnggPC0gMjAgIA0KeSA8LSA1ICANCnRleHQxIDwtICJEYXRhIiAgDQp0ZXh0MiA8LSAiU2NpZW5jZSIgIA0KDQojIE1lbXBlcmJhcnVpIG5pbGFpIHggIA0KeCA8LSB4ICsgMTAgICMgTWVuYW1iYWhrYW4gMTAga2UgeCAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQoeCkgICAgICMgT3V0cHV0OiAzMCAgDQpwcmludCh5KSAgICAgIyBPdXRwdXQ6IDUgIA0KcHJpbnQodGV4dDEpICMgT3V0cHV0OiBEYXRhICANCnByaW50KHRleHQyKSAjIE91dHB1dDogU2NpZW5jZQ0KYGBgDQojIyMgMi4yIEdhYnVuZ2thbiB0ZXh0MSBkYW4gdGV4dDIga2UgZGFsYW0gc3RyaW5nICJEYXRhIFNjaWVuY2UiIG1lbmdndW5ha2FuIFB5dGhvbiBkYW4gUg0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgVmFyaWFiZWwgIA0KdGV4dDEgPC0gIkRhdGEiICANCnRleHQyIDwtICJTY2llbmNlIiAgDQoNCiMgTWVuZ2dhYnVuZ2thbiB0ZXh0MSBkYW4gdGV4dDIgIA0KcmVzdWx0IDwtIHBhc3RlKHRleHQxLCB0ZXh0MikgICMgTWVuZ2d1bmFrYW4gcGFzdGUgdW50dWsgbWVuZ2dhYnVuZ2thbiAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQocmVzdWx0KSAgIyBPdXRwdXQ6IFsxXSAiRGF0YSBTY2llbmNlIg0KYGBgDQojIyMgMi4zIG1lbmd1YmFoIHRla3MgZ2FidW5nYW4gbWVuamFkaSBodXJ1ZiBiZXNhciBtZW5nZ3VuYWthbiBQeXRob24gZGFuIFIgDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBWYXJpYWJlbCAgDQp0ZXh0MSA8LSAiRGF0YSIgIA0KdGV4dDIgPC0gIlNjaWVuY2UiICANCg0KIyBNZW5nZ2FidW5na2FuIHRleHQxIGRhbiB0ZXh0MiAgDQpyZXN1bHQgPC0gcGFzdGUodGV4dDEsIHRleHQyKSAgDQoNCiMgTWVuZ3ViYWggbWVuamFkaSBodXJ1ZiBiZXNhciAgDQpyZXN1bHRfdXBwZXIgPC0gdG91cHBlcihyZXN1bHQpICANCg0KIyBNZW5hbXBpbGthbiBoYXNpbCAgDQpwcmludChyZXN1bHRfdXBwZXIpICAjIE91dHB1dDogWzFdICJEQVRBIFNDSUVOQ0UiDQpgYGANCg0KIyMgMy4gT3BlcmFzaSBBcml0bWF0aWthICANCk1lbmdndW5ha2FuIHZhcmlhYmVsLXZhcmlhYmVsIGJlcmlrdXQ6ICANCg0KYSA8LSAxNSAgDQpiIDwtIDQNCg0KIyMjIDMuMSBIaXR1bmcganVtbGFoLCBzZWxpc2loLCBwcm9kdWssIHBlbWJhZ2lhbiwgZGFuIG1vZHVsbyBkYXJpIHZhcmlhYmVsIGEgZGFuIGIgbWVuZ2d1bmFrYW4gUHl0aG9uIGRhbiBSDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBWYXJpYWJlbCAgDQphIDwtIDE1ICANCmIgPC0gNCAgDQoNCiMgT3BlcmFzaSBBcml0bWF0aWthICANCmp1bWxhaCA8LSBhICsgYiAgDQpzZWxpc2loIDwtIGEgLSBiICANCnByb2R1ayA8LSBhICogYiAgDQpwZW1iYWdpYW4gPC0gYSAvIGIgIA0KbW9kdWxvIDwtIGEgJSUgYiAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQocGFzdGUoIkp1bWxhaDoiLCBqdW1sYWgpKSAgICAgICAjIE91dHB1dDogIkp1bWxhaDogMTkiICANCnByaW50KHBhc3RlKCJTZWxpc2loOiIsIHNlbGlzaWgpKSAgICAgIyBPdXRwdXQ6ICJTZWxpc2loOiAxMSIgIA0KcHJpbnQocGFzdGUoIlByb2R1azoiLCBwcm9kdWspKSAgICAgICAjIE91dHB1dDogIlByb2R1azogNjAiICANCnByaW50KHBhc3RlKCJQZW1iYWdpYW46IiwgcGVtYmFnaWFuKSkgIyBPdXRwdXQ6ICJQZW1iYWdpYW46IDMuNzUiICANCnByaW50KHBhc3RlKCJNb2R1bG86IiwgbW9kdWxvKSkgICAgICAgIyBPdXRwdXQ6ICJNb2R1bG86IDMiDQpgYGANCiMjIyAzLjEgSGl0dW5nIHBhbmdrYXQgZGFyaSBhIGtlIGINCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBWYXJpYWJlbCAgDQphIDwtIDIgIA0KYiA8LSAzICANCg0KIyBNZW5naGl0dW5nIHBhbmdrYXQgIA0KcGFuZ2thdCA8LSBhIF4gYiAgIyBhdGF1IGJpc2EgbWVuZ2d1bmFrYW4gZXhwKGEsIGIpICANCg0KIyBNZW5hbXBpbGthbiBoYXNpbCAgDQpwcmludChwYXN0ZSgiSGFzaWwgcGFuZ2thdDoiLCBwYW5na2F0KSkgICMgT3V0cHV0OiAiSGFzaWwgcGFuZ2thdDogOCINCmBgYA0KDQojIyMgMy4zIEJ1YXQgdmFyaWFiZWwgYmFydSBjIHlhbmcgbWVydXBha2FuIGhhc2lsIHBlbWJhZ2lhbiBhIGRhbiBiLCBrZW11ZGlhbiBtZW5ndWJhaG55YSBtZW5qYWRpIHRpcGUgZGF0YSBpbnRlZ2VyDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBWYXJpYWJlbCAgDQphIDwtIDE1ICANCmIgPC0gNCAgDQoNCiMgTWVtYnVhdCB2YXJpYWJlbCBiYXJ1IGMgIA0KYyA8LSBhIC8gYiAgDQoNCiMgTWVuZ3ViYWggYyBtZW5qYWRpIGludGVnZXIgIA0KYyA8LSBhcy5pbnRlZ2VyKGMpICANCg0KIyBNZW5hbXBpbGthbiBoYXNpbCAgDQpwcmludChwYXN0ZSgiYyBzZWJhZ2FpIGludGVnZXI6IiwgYykpICAjIE91dHB1dDogImMgc2ViYWdhaSBpbnRlZ2VyOiAzIg0KYGBgDQoNCiMjIDQuIE9wZXJhc2kgU3RyaW5nICANCkRpYmVyaWthbiB0ZWtzIGJlcmlrdXQ6ICANCg0KdGV4dCA8LSAiSGVsbG8sIERhdGEgU2NpZW5jZSEiDQoNCg0KIyMjIDQuMSBFa3N0cmFrIDUga2FyYWt0ZXIgcGVydGFtYSBkYXJpIHRla3MNCg0KYGBge3IsIG1hc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIFRla3MgIA0KdGV4dCA8LSAiSGVsbG8sIERhdGEgU2NpZW5jZSEiICANCg0KIyBFa3N0cmFrIDUga2FyYWt0ZXIgcGVydGFtYSAgDQpmaXJzdF9maXZlIDwtIHN1YnN0cih0ZXh0LCAxLCA1KSAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQoZmlyc3RfZml2ZSkgICMgT3V0cHV0OiAiSGVsbG8iDQpgYGANCg0KIyMjIDQuMiBIaXR1bmcganVtbGFoIGthcmFrdGVyIGRhbGFtIHRla3MNCg0KYGBge3IsIG1hc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIEhpdHVuZyBqdW1sYWgga2FyYWt0ZXIgIA0KY2hhcl9jb3VudCA8LSBuY2hhcih0ZXh0KSAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQoY2hhcl9jb3VudCkgICMgT3V0cHV0OiAyMQ0KYGBgDQoNCiMjIyA0LjMgTWVuZ3ViYWggdGVrcyBtZW5qYWRpIGh1cnVmIGtlY2lsDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBNZW5ndWJhaCB0ZWtzIG1lbmphZGkgaHVydWYga2VjaWwgIA0KbG93ZXJjYXNlX3RleHQgPC0gdG9sb3dlcih0ZXh0KSAgDQoNCiMgTWVuYW1waWxrYW4gaGFzaWwgIA0KcHJpbnQobG93ZXJjYXNlX3RleHQpICAjIE91dHB1dDogImhlbGxvLCBkYXRhIHNjaWVuY2UhIg0KYGBgDQoNCiMjIDUuIE9wZXJhdG9yIFBlcmJhbmRpbmdhbiBkYW4gTG9naWthICANCk1lbmdpbmdhdCB2YXJpYWJlbC12YXJpYWJlbCBiZXJpa3V0OiAgDQoNCnggPC0gNyAgDQp5IDwtIDEwDQoNCiMjIyA1LjEgUGVyaWtzYSBhcGFrYWggeCBsZWJpaCBiZXNhciBkYXJpIHkNCg0KYGBge3IsIG1hc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQppc19ncmVhdGVyIDwtIHggPiB5ICANCnByaW50KGlzX2dyZWF0ZXIpICAjIE91dHB1dDogRkFMU0UNCmBgYA0KDQojIyMgNS4yIFBlcmlrc2EgYXBha2FoIHgga3VyYW5nIGRhcmkgYXRhdSBzYW1hIGRlbmdhbiB5DQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KaXNfbGVzc19vcl9lcXVhbCA8LSB4IDw9IHkgIA0KcHJpbnQoaXNfbGVzc19vcl9lcXVhbCkgICMgT3V0cHV0OiBUUlVFDQpgYGANCg0KIyMjIDUuMyBQZXJpa3NhIGFwYWthaCB4IHRpZGFrIHNhbWEgZGVuZ2FuIHkNCg0KYGBge3IsIG1hc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQppc19ub3RfZXF1YWwgPC0geCAhPSB5ICANCnByaW50KGlzX25vdF9lcXVhbCkgICMgT3V0cHV0OiBUUlVFDQpgYGANCg0KIyMjIDUuNCBFdmFsdWFzaWxhaCBla3NwcmVzaSAoeCA+IDUpIEFORCAoeSA8IDIwKQ0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmV4cHJlc3Npb25fZXZhbHVhdGlvbiA8LSAoeCA+IDUpICYmICh5IDwgMjApICANCnByaW50KGV4cHJlc3Npb25fZXZhbHVhdGlvbikgICMgT3V0cHV0OiBUUlVFDQpgYGANCg0KIyMgNi4gS29udmVyc2kgVGlwZSBEYXRhICANCg0KTWVuZ2luZ2F0IHZhcmlhYmVsLXZhcmlhYmVsIGJlcmlrdXQ6ICANCg0KbnVtX3N0ciA8LSAiMTIzIiAgDQpudW1fZmxvYXQgPC0gNDUuNjcNCg0KIyMjIDYuMSBVYmFoIG51bV9zdHIga2UgYmlsYW5nYW4gYnVsYXQgZGFuIHRhbWJhaGthbiAxMA0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KIyBNZW5kZWZpbmlzaWthbiB2YXJpYWJlbCAgDQpudW1fc3RyIDwtICIxMjMiICANCm51bV9mbG9hdCA8LSA0NS42NyAgDQoNCiMjIyA2LjEgVWJhaCBudW1fc3RyIGtlIGJpbGFuZ2FuIGJ1bGF0IGRhbiB0YW1iYWhrYW4gMTAgIA0KIyBVYmFoIG51bV9zdHIga2UgYmlsYW5nYW4gYnVsYXQgZGFuIHRhbWJhaGthbiAxMCAgDQpudW1faW50IDwtIGFzLmludGVnZXIobnVtX3N0cikgKyAxMCAgDQpwcmludChudW1faW50KSAgIyBPdXRwdXQ6IDEzMw0KYGBgDQoNCiMjIyA2LjIgVWJhaCBudW1fZmxvYXQga2UgYmlsYW5nYW4gYnVsYXQNCg0KYGBge3IsIG1hc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCiMgTWVuZGVmaW5pc2lrYW4gdmFyaWFiZWwgIA0KbnVtX2Zsb2F0IDwtIDQ1LjY3ICANCg0KIyBVYmFoIG51bV9mbG9hdCBrZSBiaWxhbmdhbiBidWxhdCAgDQpudW1faW50X2Zsb2F0IDwtIGFzLmludGVnZXIobnVtX2Zsb2F0KSAgDQpwcmludChudW1faW50X2Zsb2F0KSAgIyBPdXRwdXQ6IDQ1DQpgYGANCg0KIyMjIDYuMyBNZW5nb252ZXJzaSBudW1fZmxvYXQga2VtYmFsaSBtZW5qYWRpIHN0cmluZw0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KIyBNZW5kZWZpbmlzaWthbiB2YXJpYWJlbCAgDQpudW1fZmxvYXQgPC0gNDUuNjcgIA0KDQojIE1lbmdvbnZlcnNpIG51bV9mbG9hdCBtZW5qYWRpIHN0cmluZyAgDQpudW1fc3RyX2Zsb2F0IDwtIGFzLmNoYXJhY3RlcihudW1fZmxvYXQpICANCnByaW50KG51bV9zdHJfZmxvYXQpICAjIE91dHB1dDogIjQ1LjY3Ig0KYGBgDQoNCiMjIDcuIFRhbnRhbmdhbiBCb251cyAgDQpCdWF0IHByb2dyYW0gaW50ZXJha3RpZiB5YW5nIG1lbWludGEgcGVuZ2d1bmEgdW50dWsgbWVtYXN1a2thbjogIA0KDQoxLiBOYW1hICANCjIuIFVzaWEgIA0KMy4gS290YSBrZWxhaGlyYW4gIA0KDQpLZW11ZGlhbiwgY2V0YWsgb3V0cHV0IHNlYmFnYWkgYmVyaWt1dDogIA0KIkhlbGxvIFtOYW1lXSwgeW91IGFyZSBbQWdlXSB5ZWFycyBvbGQgYW5kIGZyb20gW0hvbWV0b3duXS4iDQoNCmBgYHtyLCBtYXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KDQojIE1lbWludGEgaW5wdXQgZGFyaSBwZW5nZ3VuYSAgDQpuYW1lIDwtIHJlYWRsaW5lKHByb21wdCA9ICJNYXN1a2thbiBuYW1hIEFuZGE6ICIpICANCmFnZSA8LSByZWFkbGluZShwcm9tcHQgPSAiTWFzdWtrYW4gdXNpYSBBbmRhOiAiKSAgDQpob21ldG93biA8LSByZWFkbGluZShwcm9tcHQgPSAiTWFzdWtrYW4ga290YSBrZWxhaGlyYW4gQW5kYTogIikgIA0KDQojIE1lbmNldGFrIG91dHB1dCAgDQpjYXQocGFzdGUoIkhlbGxvIiwgbmFtZSwgIiwgeW91IGFyZSIsIGFnZSwgInllYXJzIG9sZCBhbmQgZnJvbSIsIGhvbWV0b3duLCAiLlxuIikpDQpgYGA=