Last active
October 27, 2019 13:28
-
-
Save code-brewer/10f2c07c73a6af76bf2090c650b88d89 to your computer and use it in GitHub Desktop.
rxjs_v6.x_cdn_sample_demo1 // source https://jsbin.com/nemotum
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title> sample_demo1 </title> | |
<!-- <script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.3/dist/global/Rx.umd.js"></script> --> | |
<script src="https://unpkg.com/rxjs/bundles/rxjs.umd.min.js"> </script> | |
</head> | |
<body> | |
<button id="stop">Stop</button> | |
<script id="jsbin-javascript"> | |
"use strict"; | |
var iif = rxjs.iif, of = rxjs.of, interval = rxjs.interval, pipe = rxjs.pipe, zip = rxjs.zip, from = rxjs.from, fromEvent = rxjs.fromEvent; | |
var _a = rxjs.operators, map = _a.map, delay = _a.delay, tap = _a.tap, mergeMap = _a.mergeMap, skipWhile = _a.skipWhile, sample = _a.sample, take = _a.take; | |
var now = function () { | |
var _now = new Date(); | |
return "[Second: " + _now.getSeconds() + ":" + _now.getMilliseconds() + "]"; | |
}; | |
var stopBtn = document.querySelector("#stop"); | |
var btnClick$ = fromEvent(stopBtn, 'click'); | |
console.log("==== start ===="); | |
console.log("btn: " + stopBtn.id); | |
var subscribe0 = interval(1000) | |
.pipe(mergeMap(function (v) { | |
return iif(function () { return !!(v % 2); }, of(v)); | |
})) | |
.subscribe(console.log); | |
//emit every 1s | |
var source = interval(1000); | |
//skip emitted values from source while value is less than 5 | |
var example = source.pipe(skipWhile(function (val) { return val < 5; })); | |
//output: 5...6...7...8........ | |
var subscribe1 = example.subscribe(function (val) { return console.log("remain: " + val); }); | |
// WYH: `sample`is the main session: | |
var source2 = zip( | |
//emit 'Joe', 'Frank' and 'Bob' in sequence | |
from(['Joe', 'Frank', 'Bob']), | |
//emit value every 2s | |
interval(2000)); | |
//sample last emitted value from source every 2.5s | |
// const example2 = source2.pipe(tap(v=> console.log("source2 v: " + v)), sample(interval(2500))); | |
var example2 = source2.pipe(tap(function (v) { return console.log("tap source2 v: " + v); }), sample(interval(2500))); | |
//WYH note: above zip() can only emit 3 item, so tap() can print all three item | |
// but when third sample point (@7.5s), source2 has complete and sample nothing | |
//output: ["Joe", 0]...["Frank", 1]........... | |
var subscribe2 = example2.subscribe(function (val) { return console.log("sample: " + val); }); | |
btnClick$.subscribe(function (e) { | |
console.log("stop button clicked~"); | |
subscribe0.unsubscribe(); | |
subscribe1.unsubscribe(); | |
subscribe2.unsubscribe(); | |
}); | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQVMsa0JBQUcsRUFBRSxZQUFFLEVBQUUsd0JBQVEsRUFBRSxnQkFBSSxFQUFFLGNBQUcsRUFBRSxnQkFBSSxFQUFFLDBCQUFTLENBQVU7QUFFaEUsSUFBQSxtQkFBOEUsRUFBdEUsWUFBRyxFQUFFLGdCQUFLLEVBQUUsWUFBRyxFQUFFLHNCQUFRLEVBQUUsd0JBQVMsRUFBRSxrQkFBTSxFQUFFLGNBQUksQ0FBcUI7QUFFL0UsSUFBSSxHQUFHLEdBQUc7SUFDUixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxjQUFZLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBSSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQUcsQ0FBQTtBQUNuRSxDQUFDLENBQUE7QUFFRCxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQy9DLElBQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFHN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUduQyxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0tBQzlCLElBQUksQ0FDSCxRQUFRLENBQUMsVUFBQSxDQUFDO0lBQ1IsT0FBQSxHQUFHLENBQ0QsY0FBTSxPQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBVCxDQUFTLEVBQ2YsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUVOO0FBSkQsQ0FJQyxDQUNGLENBRUY7S0FDQSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRzFCLGVBQWU7QUFDZixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsNERBQTREO0FBQzVELElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxHQUFHLENBQUMsRUFBUCxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELCtCQUErQjtBQUMvQixJQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQztBQUczRSxvQ0FBb0M7QUFFcEMsSUFBTSxPQUFPLEdBQUcsR0FBRztBQUNqQiwyQ0FBMkM7QUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixxQkFBcUI7QUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUVmLENBQUM7QUFDRixrREFBa0Q7QUFDbEQsa0dBQWtHO0FBQ2xHLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBRyxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQWxDLENBQWtDLENBQUMsRUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUIsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUVoRiw4Q0FBOEM7QUFDOUMsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUE3QixDQUE2QixDQUFDLENBQUM7QUFHNUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFBLENBQUM7SUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ25DLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyAgaWlmLCBvZiwgaW50ZXJ2YWwsIHBpcGUsIHppcCwgZnJvbSwgZnJvbUV2ZW50IH0gPSByeGpzO1xuXG5jb25zdCB7IG1hcCwgZGVsYXksIHRhcCwgbWVyZ2VNYXAsIHNraXBXaGlsZSwgc2FtcGxlLCB0YWtlICB9ID0gcnhqcy5vcGVyYXRvcnM7XG5cbmxldCBub3cgPSAoKSA9PiB7XG4gIGxldCBfbm93ID0gbmV3IERhdGUoKVxuICByZXR1cm4gYFtTZWNvbmQ6ICR7X25vdy5nZXRTZWNvbmRzKCl9OiR7X25vdy5nZXRNaWxsaXNlY29uZHMoKX1dYFxufVxuXG5jb25zdCBzdG9wQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdG9wXCIpXG5jb25zdCBidG5DbGljayQgPSBmcm9tRXZlbnQoc3RvcEJ0biwgJ2NsaWNrJylcblxuXG5jb25zb2xlLmxvZyhcIj09PT0gc3RhcnQgPT09PVwiKVxuXG5cbmNvbnNvbGUubG9nKFwiYnRuOiBcIiArICBzdG9wQnRuLmlkKTtcblxuXG5jb25zdCBzdWJzY3JpYmUwID0gaW50ZXJ2YWwoMTAwMClcbiAgLnBpcGUoXG4gICAgbWVyZ2VNYXAodiA9PlxuICAgICAgaWlmKFxuICAgICAgICAoKSA9PiAhISh2ICUgMiksXG4gICAgICAgIG9mKHYpXG4gICAgICAgIC8vIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byBFTVBUWVxuICAgICAgKVxuICAgIClcbiAgICAvLyBvdXRwdXQ6IDEsMyw1Li4uXG4gIClcbiAgLnN1YnNjcmliZShjb25zb2xlLmxvZyk7XG5cblxuLy9lbWl0IGV2ZXJ5IDFzXG5jb25zdCBzb3VyY2UgPSBpbnRlcnZhbCgxMDAwKTtcbi8vc2tpcCBlbWl0dGVkIHZhbHVlcyBmcm9tIHNvdXJjZSB3aGlsZSB2YWx1ZSBpcyBsZXNzIHRoYW4gNVxuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5waXBlKHNraXBXaGlsZSh2YWwgPT4gdmFsIDwgNSkpO1xuLy9vdXRwdXQ6IDUuLi42Li4uNy4uLjguLi4uLi4uLlxuY29uc3Qgc3Vic2NyaWJlMSA9IGV4YW1wbGUuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyhcInJlbWFpbjogXCIgKyB2YWwpKTtcblxuXG4vLyBXWUg6IGBzYW1wbGVgaXMgdGhlIG1haW4gc2Vzc2lvbjpcblxuY29uc3Qgc291cmNlMiA9IHppcChcbiAgLy9lbWl0ICdKb2UnLCAnRnJhbmsnIGFuZCAnQm9iJyBpbiBzZXF1ZW5jZVxuICBmcm9tKFsnSm9lJywgJ0ZyYW5rJywgJ0JvYiddKSxcbiAgLy9lbWl0IHZhbHVlIGV2ZXJ5IDJzXG4gIGludGVydmFsKDIwMDApXG4gIC8vICAgaW50ZXJ2YWwoMjAwMCkucGlwZSh0YWtlKDEpKVxuKTtcbi8vc2FtcGxlIGxhc3QgZW1pdHRlZCB2YWx1ZSBmcm9tIHNvdXJjZSBldmVyeSAyLjVzXG4vLyBjb25zdCBleGFtcGxlMiA9IHNvdXJjZTIucGlwZSh0YXAodj0+IGNvbnNvbGUubG9nKFwic291cmNlMiB2OiBcIiArIHYpKSwgc2FtcGxlKGludGVydmFsKDI1MDApKSk7XG5jb25zdCBleGFtcGxlMiA9IHNvdXJjZTIucGlwZShcbiAgdGFwKHY9PiBjb25zb2xlLmxvZyhcInRhcCBzb3VyY2UyIHY6IFwiICsgdikpLCBcbiAgc2FtcGxlKGludGVydmFsKDI1MDApKSk7XG5cbi8vV1lIIG5vdGU6IGFib3ZlIHppcCgpIGNhbiBvbmx5IGVtaXQgMyBpdGVtLCBzbyB0YXAoKSBjYW4gcHJpbnQgYWxsIHRocmVlIGl0ZW1cbi8vICBidXQgd2hlbiB0aGlyZCBzYW1wbGUgcG9pbnQgKEA3LjVzKSwgc291cmNlMiBoYXMgY29tcGxldGUgYW5kIHNhbXBsZSBub3RoaW5nXG5cbi8vb3V0cHV0OiBbXCJKb2VcIiwgMF0uLi5bXCJGcmFua1wiLCAxXS4uLi4uLi4uLi4uXG5jb25zdCBzdWJzY3JpYmUyID0gZXhhbXBsZTIuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyhcInNhbXBsZTogXCIgKyB2YWwpKTtcblxuXG5idG5DbGljayQuc3Vic2NyaWJlKGU9PiB7XG4gICAgY29uc29sZS5sb2coXCJzdG9wIGJ1dHRvbiBjbGlja2VkflwiKVxuICAgIHN1YnNjcmliZTAudW5zdWJzY3JpYmUoKTtcbiAgICBzdWJzY3JpYmUxLnVuc3Vic2NyaWJlKCk7XG4gICAgc3Vic2NyaWJlMi51bnN1YnNjcmliZSgpOyAgXG59KSJdfQ== | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">const { iif, of, interval, pipe, zip, from, fromEvent } = rxjs; | |
const { map, delay, tap, mergeMap, skipWhile, sample, take } = rxjs.operators; | |
let now = () => { | |
let _now = new Date() | |
return `[Second: ${_now.getSeconds()}:${_now.getMilliseconds()}]` | |
} | |
const stopBtn = document.querySelector("#stop") | |
const btnClick$ = fromEvent(stopBtn, 'click') | |
console.log("==== start ====") | |
console.log("btn: " + stopBtn.id); | |
const subscribe0 = interval(1000) | |
.pipe( | |
mergeMap(v => | |
iif( | |
() => !!(v % 2), | |
of(v) | |
// if not supplied defaults to EMPTY | |
) | |
) | |
// output: 1,3,5... | |
) | |
.subscribe(console.log); | |
//emit every 1s | |
const source = interval(1000); | |
//skip emitted values from source while value is less than 5 | |
const example = source.pipe(skipWhile(val => val < 5)); | |
//output: 5...6...7...8........ | |
const subscribe1 = example.subscribe(val => console.log("remain: " + val)); | |
// WYH: `sample`is the main session: | |
const source2 = zip( | |
//emit 'Joe', 'Frank' and 'Bob' in sequence | |
from(['Joe', 'Frank', 'Bob']), | |
//emit value every 2s | |
interval(2000) | |
// interval(2000).pipe(take(1)) | |
); | |
//sample last emitted value from source every 2.5s | |
// const example2 = source2.pipe(tap(v=> console.log("source2 v: " + v)), sample(interval(2500))); | |
const example2 = source2.pipe( | |
tap(v=> console.log("tap source2 v: " + v)), | |
sample(interval(2500))); | |
//WYH note: above zip() can only emit 3 item, so tap() can print all three item | |
// but when third sample point (@7.5s), source2 has complete and sample nothing | |
//output: ["Joe", 0]...["Frank", 1]........... | |
const subscribe2 = example2.subscribe(val => console.log("sample: " + val)); | |
btnClick$.subscribe(e=> { | |
console.log("stop button clicked~") | |
subscribe0.unsubscribe(); | |
subscribe1.unsubscribe(); | |
subscribe2.unsubscribe(); | |
}) | |
</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
var iif = rxjs.iif, of = rxjs.of, interval = rxjs.interval, pipe = rxjs.pipe, zip = rxjs.zip, from = rxjs.from, fromEvent = rxjs.fromEvent; | |
var _a = rxjs.operators, map = _a.map, delay = _a.delay, tap = _a.tap, mergeMap = _a.mergeMap, skipWhile = _a.skipWhile, sample = _a.sample, take = _a.take; | |
var now = function () { | |
var _now = new Date(); | |
return "[Second: " + _now.getSeconds() + ":" + _now.getMilliseconds() + "]"; | |
}; | |
var stopBtn = document.querySelector("#stop"); | |
var btnClick$ = fromEvent(stopBtn, 'click'); | |
console.log("==== start ===="); | |
console.log("btn: " + stopBtn.id); | |
var subscribe0 = interval(1000) | |
.pipe(mergeMap(function (v) { | |
return iif(function () { return !!(v % 2); }, of(v)); | |
})) | |
.subscribe(console.log); | |
//emit every 1s | |
var source = interval(1000); | |
//skip emitted values from source while value is less than 5 | |
var example = source.pipe(skipWhile(function (val) { return val < 5; })); | |
//output: 5...6...7...8........ | |
var subscribe1 = example.subscribe(function (val) { return console.log("remain: " + val); }); | |
// WYH: `sample`is the main session: | |
var source2 = zip( | |
//emit 'Joe', 'Frank' and 'Bob' in sequence | |
from(['Joe', 'Frank', 'Bob']), | |
//emit value every 2s | |
interval(2000)); | |
//sample last emitted value from source every 2.5s | |
// const example2 = source2.pipe(tap(v=> console.log("source2 v: " + v)), sample(interval(2500))); | |
var example2 = source2.pipe(tap(function (v) { return console.log("tap source2 v: " + v); }), sample(interval(2500))); | |
//WYH note: above zip() can only emit 3 item, so tap() can print all three item | |
// but when third sample point (@7.5s), source2 has complete and sample nothing | |
//output: ["Joe", 0]...["Frank", 1]........... | |
var subscribe2 = example2.subscribe(function (val) { return console.log("sample: " + val); }); | |
btnClick$.subscribe(function (e) { | |
console.log("stop button clicked~"); | |
subscribe0.unsubscribe(); | |
subscribe1.unsubscribe(); | |
subscribe2.unsubscribe(); | |
}); | |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQVMsa0JBQUcsRUFBRSxZQUFFLEVBQUUsd0JBQVEsRUFBRSxnQkFBSSxFQUFFLGNBQUcsRUFBRSxnQkFBSSxFQUFFLDBCQUFTLENBQVU7QUFFaEUsSUFBQSxtQkFBOEUsRUFBdEUsWUFBRyxFQUFFLGdCQUFLLEVBQUUsWUFBRyxFQUFFLHNCQUFRLEVBQUUsd0JBQVMsRUFBRSxrQkFBTSxFQUFFLGNBQUksQ0FBcUI7QUFFL0UsSUFBSSxHQUFHLEdBQUc7SUFDUixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxjQUFZLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBSSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQUcsQ0FBQTtBQUNuRSxDQUFDLENBQUE7QUFFRCxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQy9DLElBQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFHN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUduQyxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0tBQzlCLElBQUksQ0FDSCxRQUFRLENBQUMsVUFBQSxDQUFDO0lBQ1IsT0FBQSxHQUFHLENBQ0QsY0FBTSxPQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBVCxDQUFTLEVBQ2YsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUVOO0FBSkQsQ0FJQyxDQUNGLENBRUY7S0FDQSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRzFCLGVBQWU7QUFDZixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsNERBQTREO0FBQzVELElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxHQUFHLENBQUMsRUFBUCxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELCtCQUErQjtBQUMvQixJQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQztBQUczRSxvQ0FBb0M7QUFFcEMsSUFBTSxPQUFPLEdBQUcsR0FBRztBQUNqQiwyQ0FBMkM7QUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QixxQkFBcUI7QUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUVmLENBQUM7QUFDRixrREFBa0Q7QUFDbEQsa0dBQWtHO0FBQ2xHLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBRyxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQWxDLENBQWtDLENBQUMsRUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUIsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUVoRiw4Q0FBOEM7QUFDOUMsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxFQUE3QixDQUE2QixDQUFDLENBQUM7QUFHNUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFBLENBQUM7SUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ25DLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyAgaWlmLCBvZiwgaW50ZXJ2YWwsIHBpcGUsIHppcCwgZnJvbSwgZnJvbUV2ZW50IH0gPSByeGpzO1xuXG5jb25zdCB7IG1hcCwgZGVsYXksIHRhcCwgbWVyZ2VNYXAsIHNraXBXaGlsZSwgc2FtcGxlLCB0YWtlICB9ID0gcnhqcy5vcGVyYXRvcnM7XG5cbmxldCBub3cgPSAoKSA9PiB7XG4gIGxldCBfbm93ID0gbmV3IERhdGUoKVxuICByZXR1cm4gYFtTZWNvbmQ6ICR7X25vdy5nZXRTZWNvbmRzKCl9OiR7X25vdy5nZXRNaWxsaXNlY29uZHMoKX1dYFxufVxuXG5jb25zdCBzdG9wQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdG9wXCIpXG5jb25zdCBidG5DbGljayQgPSBmcm9tRXZlbnQoc3RvcEJ0biwgJ2NsaWNrJylcblxuXG5jb25zb2xlLmxvZyhcIj09PT0gc3RhcnQgPT09PVwiKVxuXG5cbmNvbnNvbGUubG9nKFwiYnRuOiBcIiArICBzdG9wQnRuLmlkKTtcblxuXG5jb25zdCBzdWJzY3JpYmUwID0gaW50ZXJ2YWwoMTAwMClcbiAgLnBpcGUoXG4gICAgbWVyZ2VNYXAodiA9PlxuICAgICAgaWlmKFxuICAgICAgICAoKSA9PiAhISh2ICUgMiksXG4gICAgICAgIG9mKHYpXG4gICAgICAgIC8vIGlmIG5vdCBzdXBwbGllZCBkZWZhdWx0cyB0byBFTVBUWVxuICAgICAgKVxuICAgIClcbiAgICAvLyBvdXRwdXQ6IDEsMyw1Li4uXG4gIClcbiAgLnN1YnNjcmliZShjb25zb2xlLmxvZyk7XG5cblxuLy9lbWl0IGV2ZXJ5IDFzXG5jb25zdCBzb3VyY2UgPSBpbnRlcnZhbCgxMDAwKTtcbi8vc2tpcCBlbWl0dGVkIHZhbHVlcyBmcm9tIHNvdXJjZSB3aGlsZSB2YWx1ZSBpcyBsZXNzIHRoYW4gNVxuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5waXBlKHNraXBXaGlsZSh2YWwgPT4gdmFsIDwgNSkpO1xuLy9vdXRwdXQ6IDUuLi42Li4uNy4uLjguLi4uLi4uLlxuY29uc3Qgc3Vic2NyaWJlMSA9IGV4YW1wbGUuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyhcInJlbWFpbjogXCIgKyB2YWwpKTtcblxuXG4vLyBXWUg6IGBzYW1wbGVgaXMgdGhlIG1haW4gc2Vzc2lvbjpcblxuY29uc3Qgc291cmNlMiA9IHppcChcbiAgLy9lbWl0ICdKb2UnLCAnRnJhbmsnIGFuZCAnQm9iJyBpbiBzZXF1ZW5jZVxuICBmcm9tKFsnSm9lJywgJ0ZyYW5rJywgJ0JvYiddKSxcbiAgLy9lbWl0IHZhbHVlIGV2ZXJ5IDJzXG4gIGludGVydmFsKDIwMDApXG4gIC8vICAgaW50ZXJ2YWwoMjAwMCkucGlwZSh0YWtlKDEpKVxuKTtcbi8vc2FtcGxlIGxhc3QgZW1pdHRlZCB2YWx1ZSBmcm9tIHNvdXJjZSBldmVyeSAyLjVzXG4vLyBjb25zdCBleGFtcGxlMiA9IHNvdXJjZTIucGlwZSh0YXAodj0+IGNvbnNvbGUubG9nKFwic291cmNlMiB2OiBcIiArIHYpKSwgc2FtcGxlKGludGVydmFsKDI1MDApKSk7XG5jb25zdCBleGFtcGxlMiA9IHNvdXJjZTIucGlwZShcbiAgdGFwKHY9PiBjb25zb2xlLmxvZyhcInRhcCBzb3VyY2UyIHY6IFwiICsgdikpLCBcbiAgc2FtcGxlKGludGVydmFsKDI1MDApKSk7XG5cbi8vV1lIIG5vdGU6IGFib3ZlIHppcCgpIGNhbiBvbmx5IGVtaXQgMyBpdGVtLCBzbyB0YXAoKSBjYW4gcHJpbnQgYWxsIHRocmVlIGl0ZW1cbi8vICBidXQgd2hlbiB0aGlyZCBzYW1wbGUgcG9pbnQgKEA3LjVzKSwgc291cmNlMiBoYXMgY29tcGxldGUgYW5kIHNhbXBsZSBub3RoaW5nXG5cbi8vb3V0cHV0OiBbXCJKb2VcIiwgMF0uLi5bXCJGcmFua1wiLCAxXS4uLi4uLi4uLi4uXG5jb25zdCBzdWJzY3JpYmUyID0gZXhhbXBsZTIuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyhcInNhbXBsZTogXCIgKyB2YWwpKTtcblxuXG5idG5DbGljayQuc3Vic2NyaWJlKGU9PiB7XG4gICAgY29uc29sZS5sb2coXCJzdG9wIGJ1dHRvbiBjbGlja2VkflwiKVxuICAgIHN1YnNjcmliZTAudW5zdWJzY3JpYmUoKTtcbiAgICBzdWJzY3JpYmUxLnVuc3Vic2NyaWJlKCk7XG4gICAgc3Vic2NyaWJlMi51bnN1YnNjcmliZSgpOyAgXG59KSJdfQ== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment