gameplay: port client frame prefix and expiry
Browse files- crates/urt-gameplay/src/bin/urt-filter-commands.rs +58 -0
- crates/urt-gameplay/src/filter_commands.rs +137 -0
- docs/FINDINGS.md +2 -0
- docs/PROVISIONAL_TODO.md +5 -1
- docs/RESEARCH_LEDGER.md +6 -0
- docs/REVERSE_ENGINEERING_TODO.md +5 -1
- docs/TESTING.md +2 -0
- docs/research/QVM_FILTER_COMMANDS_BATCH.md +57 -0
- docs/research/QVM_FILTER_LOADING_BATCH.md +3 -1
- docs/research/README.md +4 -0
- docs/research/RUST_FILTER_FRAME_PREFIX.md +5 -0
- docs/research/rust-filter-frame-prefix.json +1807 -0
- docs/research/rust-health-impulse.json +1 -1
- scripts/analyze_rust_filter_frame_prefix.py +18 -0
- scripts/test_rust_filter_frame_prefix.py +9 -0
- xtask/checks.tsv +18 -0
- xtask/src/lib.rs +30 -0
crates/urt-gameplay/src/bin/urt-filter-commands.rs
CHANGED
|
@@ -151,6 +151,7 @@ fn main() {
|
|
| 151 |
}
|
| 152 |
"duration-export" => println!("{}", duration_export(&w)),
|
| 153 |
"expiry-admission" => println!("{}", expiry_admission(&w)),
|
|
|
|
| 154 |
_ => panic!("unknown policy"),
|
| 155 |
}
|
| 156 |
}
|
|
@@ -312,3 +313,60 @@ fn expiry_admission(w: &[u32]) -> String {
|
|
| 312 |
digest(&rows)
|
| 313 |
)
|
| 314 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
}
|
| 152 |
"duration-export" => println!("{}", duration_export(&w)),
|
| 153 |
"expiry-admission" => println!("{}", expiry_admission(&w)),
|
| 154 |
+
"frame" => println!("{}", frame(&w)),
|
| 155 |
_ => panic!("unknown policy"),
|
| 156 |
}
|
| 157 |
}
|
|
|
|
| 313 |
digest(&rows)
|
| 314 |
)
|
| 315 |
}
|
| 316 |
+
|
| 317 |
+
fn frame_rows(now: u32) -> Vec<FilterRecord> {
|
| 318 |
+
let mut rows: Vec<_> = (0..4096)
|
| 319 |
+
.map(|j| FilterRecord {
|
| 320 |
+
mask: 0x11223344,
|
| 321 |
+
comparison: j + 1,
|
| 322 |
+
metadata: u32::MAX,
|
| 323 |
+
})
|
| 324 |
+
.collect();
|
| 325 |
+
for (j, t) in [0usize, 1, 2, 3, 4, 5, 63, 4095].into_iter().zip([
|
| 326 |
+
0,
|
| 327 |
+
now.wrapping_sub(1),
|
| 328 |
+
now,
|
| 329 |
+
now.wrapping_add(1),
|
| 330 |
+
u32::MAX,
|
| 331 |
+
0x80000000,
|
| 332 |
+
60,
|
| 333 |
+
0,
|
| 334 |
+
]) {
|
| 335 |
+
rows[j].metadata = t;
|
| 336 |
+
}
|
| 337 |
+
rows[5].comparison = u32::MAX;
|
| 338 |
+
rows
|
| 339 |
+
}
|
| 340 |
+
fn frame(w: &[u32]) -> String {
|
| 341 |
+
assert_eq!(w.len(), 10);
|
| 342 |
+
let mut rows = frame_rows(w[8]);
|
| 343 |
+
let mut state = FilterFrameState {
|
| 344 |
+
activity: w[0],
|
| 345 |
+
flag: 17,
|
| 346 |
+
accumulator: w[6],
|
| 347 |
+
};
|
| 348 |
+
let input = FilterFrameInput {
|
| 349 |
+
tick: 10000,
|
| 350 |
+
last_tick: 10000u32.wrapping_sub(w[1]),
|
| 351 |
+
velocity: [w[2], w[3], w[4]],
|
| 352 |
+
entity_flags: w[5],
|
| 353 |
+
msec: w[7],
|
| 354 |
+
now: w[8],
|
| 355 |
+
};
|
| 356 |
+
let out = filter_frame_prefix(&mut rows, &mut state, input).unwrap();
|
| 357 |
+
format!(
|
| 358 |
+
r#"{{"clock_calls":[{{"op":"time"}}],"vector_squared":[{}],"fields":[{},{},{}],"velocity":[{},{},{}],"last_tick":{},"count":{},"checksum":{}}}"#,
|
| 359 |
+
out.vector_squared
|
| 360 |
+
.map(|v| v.to_string())
|
| 361 |
+
.unwrap_or_default(),
|
| 362 |
+
state.activity,
|
| 363 |
+
state.flag,
|
| 364 |
+
state.accumulator,
|
| 365 |
+
w[2],
|
| 366 |
+
w[3],
|
| 367 |
+
w[4],
|
| 368 |
+
input.last_tick,
|
| 369 |
+
w[9],
|
| 370 |
+
digest(&rows)
|
| 371 |
+
)
|
| 372 |
+
}
|
crates/urt-gameplay/src/filter_commands.rs
CHANGED
|
@@ -501,3 +501,140 @@ mod expiry_admission_tests {
|
|
| 501 |
assert_eq!(rows, before);
|
| 502 |
}
|
| 503 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 501 |
assert_eq!(rows, before);
|
| 502 |
}
|
| 503 |
}
|
| 504 |
+
|
| 505 |
+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
| 506 |
+
pub struct FilterFrameState {
|
| 507 |
+
pub activity: u32,
|
| 508 |
+
pub flag: u32,
|
| 509 |
+
pub accumulator: u32,
|
| 510 |
+
}
|
| 511 |
+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
| 512 |
+
pub struct FilterFrameInput {
|
| 513 |
+
pub tick: u32,
|
| 514 |
+
pub last_tick: u32,
|
| 515 |
+
pub velocity: [u32; 3],
|
| 516 |
+
pub entity_flags: u32,
|
| 517 |
+
pub msec: u32,
|
| 518 |
+
pub now: u32,
|
| 519 |
+
}
|
| 520 |
+
#[derive(Clone, Debug, PartialEq, Eq)]
|
| 521 |
+
pub struct FilterFramePrefix {
|
| 522 |
+
pub vector_squared: Option<u32>,
|
| 523 |
+
}
|
| 524 |
+
/// Actual150692 prefix only, stopping at150791. Source65613 squares horizontal
|
| 525 |
+
/// velocity after zeroing z. Expiry follows the flag/timer writes unconditionally.
|
| 526 |
+
pub fn filter_frame_prefix(
|
| 527 |
+
records: &mut [FilterRecord],
|
| 528 |
+
state: &mut FilterFrameState,
|
| 529 |
+
input: FilterFrameInput,
|
| 530 |
+
) -> Result<FilterFramePrefix, Error> {
|
| 531 |
+
let mut next = *state;
|
| 532 |
+
let mut vector_squared = None;
|
| 533 |
+
if next.activity == 0 && input.tick.wrapping_sub(input.last_tick) as i32 > 3000 {
|
| 534 |
+
let x = f32::from_bits(input.velocity[0]);
|
| 535 |
+
let y = f32::from_bits(input.velocity[1]);
|
| 536 |
+
if !x.is_finite() || !y.is_finite() {
|
| 537 |
+
return Err(Error::NonFinite);
|
| 538 |
+
}
|
| 539 |
+
let squared = (x * x + y * y) + 0.0;
|
| 540 |
+
vector_squared = Some(squared.to_bits());
|
| 541 |
+
if squared > 100.0 {
|
| 542 |
+
next.activity = 1;
|
| 543 |
+
}
|
| 544 |
+
}
|
| 545 |
+
next.flag = u32::from(input.entity_flags & 64 != 0);
|
| 546 |
+
next.accumulator = next.accumulator.wrapping_add(input.msec);
|
| 547 |
+
let mut staged = records.to_vec();
|
| 548 |
+
crate::filter_loading::expire_filters(&mut staged, input.now)?;
|
| 549 |
+
records.copy_from_slice(&staged);
|
| 550 |
+
*state = next;
|
| 551 |
+
Ok(FilterFramePrefix { vector_squared })
|
| 552 |
+
}
|
| 553 |
+
#[cfg(test)]
|
| 554 |
+
mod frame_prefix_tests {
|
| 555 |
+
use super::*;
|
| 556 |
+
fn rows() -> Vec<FilterRecord> {
|
| 557 |
+
vec![
|
| 558 |
+
FilterRecord {
|
| 559 |
+
mask: 7,
|
| 560 |
+
comparison: 8,
|
| 561 |
+
metadata: 0
|
| 562 |
+
};
|
| 563 |
+
4096
|
| 564 |
+
]
|
| 565 |
+
}
|
| 566 |
+
#[test]
|
| 567 |
+
fn horizontal_gate_strictness_flags_timer_wrap_and_unconditional_expiry() {
|
| 568 |
+
let mut rows = rows();
|
| 569 |
+
let mut state = FilterFrameState {
|
| 570 |
+
activity: 0,
|
| 571 |
+
flag: 17,
|
| 572 |
+
accumulator: u32::MAX,
|
| 573 |
+
};
|
| 574 |
+
let input = FilterFrameInput {
|
| 575 |
+
tick: 10000,
|
| 576 |
+
last_tick: 6999,
|
| 577 |
+
velocity: [0, 0, f32::NAN.to_bits()],
|
| 578 |
+
entity_flags: 192,
|
| 579 |
+
msec: 2,
|
| 580 |
+
now: 60,
|
| 581 |
+
};
|
| 582 |
+
let p = filter_frame_prefix(&mut rows, &mut state, input).unwrap();
|
| 583 |
+
assert_eq!(
|
| 584 |
+
state,
|
| 585 |
+
FilterFrameState {
|
| 586 |
+
activity: 0,
|
| 587 |
+
flag: 1,
|
| 588 |
+
accumulator: 1
|
| 589 |
+
}
|
| 590 |
+
);
|
| 591 |
+
assert_eq!(p.vector_squared, Some(0));
|
| 592 |
+
assert_eq!(rows[4095].comparison, u32::MAX);
|
| 593 |
+
let input = FilterFrameInput {
|
| 594 |
+
velocity: [10f32.to_bits(), 0, 0],
|
| 595 |
+
..input
|
| 596 |
+
};
|
| 597 |
+
filter_frame_prefix(&mut rows, &mut state, input).unwrap();
|
| 598 |
+
assert_eq!(state.activity, 0);
|
| 599 |
+
let input = FilterFrameInput {
|
| 600 |
+
tick: 1,
|
| 601 |
+
last_tick: 1u32.wrapping_sub(3001),
|
| 602 |
+
velocity: [11f32.to_bits(), 0, 0],
|
| 603 |
+
..input
|
| 604 |
+
};
|
| 605 |
+
filter_frame_prefix(&mut rows, &mut state, input).unwrap();
|
| 606 |
+
assert_eq!(state.activity, 1);
|
| 607 |
+
}
|
| 608 |
+
#[test]
|
| 609 |
+
fn unsupported_horizontal_or_incomplete_storage_is_atomic() {
|
| 610 |
+
let mut rows = rows();
|
| 611 |
+
let before = rows.clone();
|
| 612 |
+
let mut state = FilterFrameState {
|
| 613 |
+
activity: 0,
|
| 614 |
+
flag: 17,
|
| 615 |
+
accumulator: 7,
|
| 616 |
+
};
|
| 617 |
+
let old = state;
|
| 618 |
+
let input = FilterFrameInput {
|
| 619 |
+
tick: 10000,
|
| 620 |
+
last_tick: 0,
|
| 621 |
+
velocity: [f32::NAN.to_bits(), 0, 0],
|
| 622 |
+
entity_flags: 64,
|
| 623 |
+
msec: 2,
|
| 624 |
+
now: 60,
|
| 625 |
+
};
|
| 626 |
+
assert_eq!(
|
| 627 |
+
filter_frame_prefix(&mut rows, &mut state, input),
|
| 628 |
+
Err(Error::NonFinite)
|
| 629 |
+
);
|
| 630 |
+
assert_eq!(state, old);
|
| 631 |
+
assert_eq!(rows, before);
|
| 632 |
+
let input = FilterFrameInput {
|
| 633 |
+
velocity: [0; 3],
|
| 634 |
+
..input
|
| 635 |
+
};
|
| 636 |
+
assert!(filter_frame_prefix(&mut rows[..4095], &mut state, input).is_err());
|
| 637 |
+
assert_eq!(state, old);
|
| 638 |
+
assert_eq!(rows, before);
|
| 639 |
+
}
|
| 640 |
+
}
|
docs/FINDINGS.md
CHANGED
|
@@ -1857,3 +1857,5 @@ RE-960: Forty-eight original252067/252643 compositions cover4096-slot expiry and
|
|
| 1857 |
RE-961: Rust matches48 original full-table expiry/admission cases and all table checksums. The address helper now accepts the actual4096-entry capacity, including last-slot matches, and rejects4097. Expiry writes persist on ordinary rejection; typed errors remain atomic. Unit tests cover last-slot survival, broadcast matching an expired hole, capacity bounds and unsupported-address rollback. Native time/network acceptance remains supplied/open. [Evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md).
|
| 1858 |
|
| 1859 |
RE-962: Forty actual150692 prefix executions through150791 compose source65613 squared horizontal motion and252067 full-table expiry. Strict elapsed>3000 and square>100 gate activity, z is discarded, entity bit64 copies to the client flag, and the timer wraps. Every prefix invocation reaches expiry regardless of movement gates/count. Direct sites place loader252933 at3924 inside3877 and expiry252067 at150789 inside150692. Whole callback/cadence and native runtime remain open. [Evidence](research/QVM_FILTER_FRAME_PREFIX.md).
|
|
|
|
|
|
|
|
|
| 1857 |
RE-961: Rust matches48 original full-table expiry/admission cases and all table checksums. The address helper now accepts the actual4096-entry capacity, including last-slot matches, and rejects4097. Expiry writes persist on ordinary rejection; typed errors remain atomic. Unit tests cover last-slot survival, broadcast matching an expired hole, capacity bounds and unsupported-address rollback. Native time/network acceptance remains supplied/open. [Evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md).
|
| 1858 |
|
| 1859 |
RE-962: Forty actual150692 prefix executions through150791 compose source65613 squared horizontal motion and252067 full-table expiry. Strict elapsed>3000 and square>100 gate activity, z is discarded, entity bit64 copies to the client flag, and the timer wraps. Every prefix invocation reaches expiry regardless of movement gates/count. Direct sites place loader252933 at3924 inside3877 and expiry252067 at150789 inside150692. Whole callback/cadence and native runtime remain open. [Evidence](research/QVM_FILTER_FRAME_PREFIX.md).
|
| 1860 |
+
|
| 1861 |
+
RE-963: Rust matches40 original frame-prefix cases, retaining squared horizontal motion, strict elapsed/square gates, ignored z, source bit64 copy, wrapping accumulation and unconditional full-table expiry. Unit tests cover ignored NaN z, equality, tick wrap and atomic rejection of unsupported horizontal values/incomplete storage. This ports only150692..150791; full callback/caller cadence and native runtime remain open. [Evidence](research/RUST_FILTER_FRAME_PREFIX.md).
|
docs/PROVISIONAL_TODO.md
CHANGED
|
@@ -1888,7 +1888,7 @@ RE-934–943 completed bounded filter export/removal/metadata and insertion/remo
|
|
| 1888 |
|
| 1889 |
- [x] RE-953 Rust export reload composition and persistence-loss regressions ([evidence](research/RUST_FILTER_ROUNDTRIP.md)).
|
| 1890 |
|
| 1891 |
-
RE-944–953 completed bounded time/expiry/loading/duration and export/reload contracts.
|
| 1892 |
|
| 1893 |
- [x] RE-954 Original add-filter client lookup and queued kick command ([evidence](research/QVM_FILTER_ADD_COMMAND.md)).
|
| 1894 |
|
|
@@ -1907,3 +1907,7 @@ RE-944–953 completed bounded time/expiry/loading/duration and export/reload co
|
|
| 1907 |
- [x] RE-961 Rust full-capacity expiry and address-admission composition ([evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md)).
|
| 1908 |
|
| 1909 |
- [x] RE-962 Original client-frame prefix with unconditional expiry ([evidence](research/QVM_FILTER_FRAME_PREFIX.md)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1888 |
|
| 1889 |
- [x] RE-953 Rust export reload composition and persistence-loss regressions ([evidence](research/RUST_FILTER_ROUNDTRIP.md)).
|
| 1890 |
|
| 1891 |
+
RE-944–953 completed bounded time/expiry/loading/duration and export/reload contracts. The following batch recovers command and caller-prefix compositions; complete callers, native ownership and runtime acceptance remain open. [Batch and next work](research/QVM_FILTER_LOADING_BATCH.md).
|
| 1892 |
|
| 1893 |
- [x] RE-954 Original add-filter client lookup and queued kick command ([evidence](research/QVM_FILTER_ADD_COMMAND.md)).
|
| 1894 |
|
|
|
|
| 1907 |
- [x] RE-961 Rust full-capacity expiry and address-admission composition ([evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md)).
|
| 1908 |
|
| 1909 |
- [x] RE-962 Original client-frame prefix with unconditional expiry ([evidence](research/QVM_FILTER_FRAME_PREFIX.md)).
|
| 1910 |
+
|
| 1911 |
+
- [x] RE-963 Rust client-frame prefix with source motion gates and expiry ([evidence](research/RUST_FILTER_FRAME_PREFIX.md)).
|
| 1912 |
+
|
| 1913 |
+
RE-954–963 completed add/remove wrappers, resolved duration export, full-capacity expiry/admission and a bounded frame prefix. RE-964 tracks remaining callers/native ownership and runtime integration. [Batch and next work](research/QVM_FILTER_COMMANDS_BATCH.md).
|
docs/RESEARCH_LEDGER.md
CHANGED
|
@@ -2517,3 +2517,9 @@ Rust matches48 original full-table expiry/admission cases and all table checksum
|
|
| 2517 |
## 2026-10-28 — RE-962 Original client-frame prefix with unconditional expiry
|
| 2518 |
|
| 2519 |
Forty actual150692 prefix executions through150791 compose source65613 squared horizontal motion and252067 full-table expiry. Strict elapsed>3000 and square>100 gate activity, z is discarded, entity bit64 copies to the client flag, and the timer wraps. Every prefix invocation reaches expiry regardless of movement gates/count. Direct sites place loader252933 at3924 inside3877 and expiry252067 at150789 inside150692. Whole callback/cadence and native runtime remain open. Focused `cargo xtask test-group qvm-filter-frame-prefix` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2517 |
## 2026-10-28 — RE-962 Original client-frame prefix with unconditional expiry
|
| 2518 |
|
| 2519 |
Forty actual150692 prefix executions through150791 compose source65613 squared horizontal motion and252067 full-table expiry. Strict elapsed>3000 and square>100 gate activity, z is discarded, entity bit64 copies to the client flag, and the timer wraps. Every prefix invocation reaches expiry regardless of movement gates/count. Direct sites place loader252933 at3924 inside3877 and expiry252067 at150789 inside150692. Whole callback/cadence and native runtime remain open. Focused `cargo xtask test-group qvm-filter-frame-prefix` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
|
| 2520 |
+
|
| 2521 |
+
## 2026-10-28 — RE-963 Rust client-frame prefix with source motion gates and expiry
|
| 2522 |
+
|
| 2523 |
+
Rust matches40 original frame-prefix cases, retaining squared horizontal motion, strict elapsed/square gates, ignored z, source bit64 copy, wrapping accumulation and unconditional full-table expiry. Unit tests cover ignored NaN z, equality, tick wrap and atomic rejection of unsupported horizontal values/incomplete storage. This ports only150692..150791; full callback/caller cadence and native runtime remain open. Focused `cargo xtask test-group rust-filter-frame-prefix` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
|
| 2524 |
+
|
| 2525 |
+
Batch RE-954–963 boundary: the single `cargo xtask test-full --since 696a4794` run after commit ten passed with the flake-declared Nix Python: 1,858 Python tests, 260 Rust tests (assets10, gameplay220, xtask30), 106 deterministic report producers, storage policy, 535 documentation files and whitespace guards. No generated report drift. Focused dependency-selection regression covers all five new source/Rust pairs and shared command/loading/lifecycle/native-policy/formatter inputs, including scoped gameplay test-count metadata. Validation notes were amended into task ten; original assets unchanged. See [batch findings and next work](research/QVM_FILTER_COMMANDS_BATCH.md).
|
docs/REVERSE_ENGINEERING_TODO.md
CHANGED
|
@@ -1925,7 +1925,7 @@ RE-944–953 recover bounded time, expiry, loading, duration and persistence rou
|
|
| 1925 |
|
| 1926 |
- [x] RE-953 Rust export reload composition and persistence-loss regressions ([evidence](research/RUST_FILTER_ROUNDTRIP.md)).
|
| 1927 |
|
| 1928 |
-
-
|
| 1929 |
|
| 1930 |
- [x] RE-954 Original add-filter client lookup and queued kick command ([evidence](research/QVM_FILTER_ADD_COMMAND.md)).
|
| 1931 |
|
|
@@ -1944,3 +1944,7 @@ RE-944–953 recover bounded time, expiry, loading, duration and persistence rou
|
|
| 1944 |
- [x] RE-961 Rust full-capacity expiry and address-admission composition ([evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md)).
|
| 1945 |
|
| 1946 |
- [x] RE-962 Original client-frame prefix with unconditional expiry ([evidence](research/QVM_FILTER_FRAME_PREFIX.md)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1925 |
|
| 1926 |
- [x] RE-953 Rust export reload composition and persistence-loss regressions ([evidence](research/RUST_FILTER_ROUNDTRIP.md)).
|
| 1927 |
|
| 1928 |
+
RE-954–963 recover bounded command wrappers, resolved duration export, full-capacity expiry/admission and a frame prefix; native ownership and full runtime acceptance remain open.
|
| 1929 |
|
| 1930 |
- [x] RE-954 Original add-filter client lookup and queued kick command ([evidence](research/QVM_FILTER_ADD_COMMAND.md)).
|
| 1931 |
|
|
|
|
| 1944 |
- [x] RE-961 Rust full-capacity expiry and address-admission composition ([evidence](research/RUST_FILTER_EXPIRY_ADMISSION.md)).
|
| 1945 |
|
| 1946 |
- [x] RE-962 Original client-frame prefix with unconditional expiry ([evidence](research/QVM_FILTER_FRAME_PREFIX.md)).
|
| 1947 |
+
|
| 1948 |
+
- [x] RE-963 Rust client-frame prefix with source motion gates and expiry ([evidence](research/RUST_FILTER_FRAME_PREFIX.md)).
|
| 1949 |
+
|
| 1950 |
+
- [ ] RE-964 Recover remaining frame/initialization callers and native command/time/file/network ownership, bot setup/userinfo and full Rust/Bevy/Solari acceptance ([next work](research/QVM_FILTER_COMMANDS_BATCH.md)).
|
docs/TESTING.md
CHANGED
|
@@ -179,3 +179,5 @@ RE-924–933 adds `qvm-bot-settings`, `rust-bot-settings`, `qvm-team-announcemen
|
|
| 179 |
Filter persistence focused groups: `qvm-filter-export`, `rust-filter-export`, `qvm-filter-remove`, `rust-filter-remove`, `qvm-filter-metadata`, `rust-filter-metadata`, `qvm-filter-insert-export`, `rust-filter-insert-export`, `qvm-filter-remove-export` and `rust-filter-remove-export`. The shared Rust filter lifecycle module and adapter select all affected parity reports and scoped gameplay test metadata; formatter edits also select these consumers. Run one group per invocation. Native file effects are captured plans in these checks.
|
| 180 |
|
| 181 |
Filter loading focused groups: `qvm-filter-time`, `rust-filter-time`, `qvm-filter-expiry`, `rust-filter-expiry`, `qvm-filter-load`, `rust-filter-load`, `qvm-filter-duration`, `rust-filter-duration`, `qvm-filter-roundtrip` and `rust-filter-roundtrip`. The shared loading module/adapter, native policies, lifecycle module and formatter inputs select affected parity producers and scoped gameplay test-count metadata. Run one group per invocation. Time/file replies are supplied snapshots; native effects are captured.
|
|
|
|
|
|
|
|
|
| 179 |
Filter persistence focused groups: `qvm-filter-export`, `rust-filter-export`, `qvm-filter-remove`, `rust-filter-remove`, `qvm-filter-metadata`, `rust-filter-metadata`, `qvm-filter-insert-export`, `rust-filter-insert-export`, `qvm-filter-remove-export` and `rust-filter-remove-export`. The shared Rust filter lifecycle module and adapter select all affected parity reports and scoped gameplay test metadata; formatter edits also select these consumers. Run one group per invocation. Native file effects are captured plans in these checks.
|
| 180 |
|
| 181 |
Filter loading focused groups: `qvm-filter-time`, `rust-filter-time`, `qvm-filter-expiry`, `rust-filter-expiry`, `qvm-filter-load`, `rust-filter-load`, `qvm-filter-duration`, `rust-filter-duration`, `qvm-filter-roundtrip` and `rust-filter-roundtrip`. The shared loading module/adapter, native policies, lifecycle module and formatter inputs select affected parity producers and scoped gameplay test-count metadata. Run one group per invocation. Time/file replies are supplied snapshots; native effects are captured.
|
| 182 |
+
|
| 183 |
+
Filter command/caller focused groups: `qvm-filter-add-command`, `rust-filter-add-command`, `qvm-filter-remove-command`, `rust-filter-remove-command`, `qvm-filter-duration-export`, `rust-filter-duration-export`, `qvm-filter-expiry-admission`, `rust-filter-expiry-admission`, `qvm-filter-frame-prefix` and `rust-filter-frame-prefix`. Shared command/loading/lifecycle/native-policy/formatter changes select their parity reports and scoped gameplay test-count metadata. Run one group per invocation. Full-capacity source loops use bounded262144-instruction budgets; native effects remain supplied/captured.
|
docs/research/QVM_FILTER_COMMANDS_BATCH.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Filter commands, admission and frame prefix: RE-954–963
|
| 2 |
+
|
| 3 |
+
Ten tasks recover five source/Rust contracts across **288 paired fixtures**. They extend the [loading batch](QVM_FILTER_LOADING_BATCH.md) with add/remove commands, resolved duration persistence, full-capacity expiry/admission and the client-frame prefix that invokes expiry. Each task has a separate commit and focused `cargo xtask` validation. Native userinfo/time replies remain supplied; console/network/queued-command/file effects remain captured plans.
|
| 4 |
+
|
| 5 |
+
| Tasks | Evidence | Paired fixtures |
|
| 6 |
+
| --- | --- | ---: |
|
| 7 |
+
| RE-954 / RE-955 | [Original add command](QVM_FILTER_ADD_COMMAND.md) / [Rust add command](RUST_FILTER_ADD_COMMAND.md) | 96 |
|
| 8 |
+
| RE-956 / RE-957 | [Original remove command](QVM_FILTER_REMOVE_COMMAND.md) / [Rust remove command](RUST_FILTER_REMOVE_COMMAND.md) | 24 |
|
| 9 |
+
| RE-958 / RE-959 | [Original duration/export](QVM_FILTER_DURATION_EXPORT.md) / [Rust composition](RUST_FILTER_DURATION_EXPORT.md) | 80 |
|
| 10 |
+
| RE-960 / RE-961 | [Original expiry/admission](QVM_FILTER_EXPIRY_ADMISSION.md) / [Rust composition](RUST_FILTER_EXPIRY_ADMISSION.md) | 48 |
|
| 11 |
+
| RE-962 / RE-963 | [Original frame prefix](QVM_FILTER_FRAME_PREFIX.md) / [Rust prefix](RUST_FILTER_FRAME_PREFIX.md) | 40 |
|
| 12 |
+
|
| 13 |
+
## Command findings
|
| 14 |
+
|
| 15 |
+
Actual253100 treats nonempty input shorter than three bytes as a numeric client request, using actual36038 length and37159 integer-prefix conversion. Short nonnumeric input can therefore select slot0. Invalid slots and inactive clients stop without insertion or kick. An active slot requests a1024-byte userinfo snapshot, looks up `ip` through actual70503, and inserts that value through252829 with saving enabled. The lookup toggles the userinfo selector even when `ip` is missing. After insertion, the wrapper always formats and enqueues `clientkick N` with mode1. It does so after ordinary parser failure; the Rust full-capacity regression also verifies a kick after insertion refusal. This is a queued engine command, not an already-executed client drop.
|
| 16 |
+
|
| 17 |
+
Inputs of three or more bytes go directly to insertion. Empty input emits exact console or client usage text and skips insertion. Client usage and kick formatting execute70458/37914 and advance the formatter ring. Console, network delivery, userinfo acquisition, command execution and insertion-triggered export remain explicit native boundaries for this wrapper. Native strings use explicit padded storage because the source length/comparison helpers perform word reads beyond the terminator.
|
| 18 |
+
|
| 19 |
+
Actual253245 handles removal usage similarly, then delegates nonempty input to actual253296. The composition retains first-match duplicate/sentinel behavior, unchanged count, diagnostics and conditional export requests. It does not acquire userinfo or alter its selector. Rust stages unsupported domains without mutation while retaining ordinary source rejection/failure effects.
|
| 20 |
+
|
| 21 |
+
The duration composition resolves actual252213 through252127 and252500. Successful first-match metadata updates now produce original export bytes and ordered print/open/write/close records. Both duplicate rows serialize in table order, even though only the first receives new metadata. Usage, parse failure and missing matches skip export. Supplied zero handles still reach write/close in the captured contract. Time acquisition, file acceptance and network/console delivery are not executed by these tests.
|
| 22 |
+
|
| 23 |
+
## Full-capacity expiry/admission
|
| 24 |
+
|
| 25 |
+
Actual252067 scans all4096 records before actual252643 filters the address against the caller's active count. The48 compositions cover counts0/3/4096, both filter modes, pre/post-expiry times, localhost bypass, short-address scratch and broadcast input. A live match at slot4095 can still reject an address after an earlier match expires. Rust's address helper now accepts the source capacity4096 instead of its earlier1024-entry guard;4097 remains rejected for ordinary address scans.
|
| 26 |
+
|
| 27 |
+
Comparison-1 holes remain eligible for the matcher's mask comparison. With a full mask, they can match `255.255.255.255`, including after expiry. The port preserves that interaction. Ordinary address rejection retains expiry mutations; unsupported typed domains reject atomically. Table-wide checksums verify unchanged masks/metadata and all untouched rows. Full scans use bounded262144-instruction source budgets. This evidence does not establish live network admission or engine-owned scratch provenance.
|
| 28 |
+
|
| 29 |
+
## Client-frame prefix and direct call sites
|
| 30 |
+
|
| 31 |
+
The source report executes150692 through the boundary at150791 with actual65613 and252067 children. If the activity word is zero and signed wrapping elapsed ticks exceed3000, the prefix copies velocity, zeroes its local z component and calculates squared horizontal length. It sets activity only when that square exceeds100. It then copies entity bit64 into a client flag, adds milliseconds to a wrapping accumulator and invokes expiry unconditionally before the boundary. Forty cases cover strict equality, ignored vertical motion, preexisting activity, flags, timer wrap and count zero. Source velocity and last-tick words remain unchanged.
|
| 32 |
+
|
| 33 |
+
Rust preserves this finite prefix and stages unsupported horizontal values or incomplete tables without mutation. Extra tests cover ignored NaN z and tick wrap. The rest of150692 is still open, so this does not establish whole-frame behavior or overall scheduling cadence.
|
| 34 |
+
|
| 35 |
+
The verified instruction scan finds these direct call sites:
|
| 36 |
+
|
| 37 |
+
| Callee | CALL instruction | Enclosing original body |
|
| 38 |
+
| --- | ---: | ---: |
|
| 39 |
+
| Loader252933 | 3924 | 3877 |
|
| 40 |
+
| Expiry252067 | 150789 | 150692 |
|
| 41 |
+
|
| 42 |
+
These are direct constant-target calls. Indirect dispatch, the complete initialization path, full caller behavior and actual native time cadence require further work.
|
| 43 |
+
|
| 44 |
+
## Validation
|
| 45 |
+
|
| 46 |
+
Each task ran its focused `cargo xtask test-group` before its commit: qvm/rust-filter-add-command, qvm/rust-filter-remove-command, qvm/rust-filter-duration-export, qvm/rust-filter-expiry-admission and qvm/rust-filter-frame-prefix. Selected reports regenerated twice identically. Original fixtures use independent wrapper, mutation, arithmetic and admission expectations; Rust parity compares every projected field with the source report and records its SHA256.
|
| 47 |
+
|
| 48 |
+
Rust regressions additionally cover full-table refusal with a queued kick, active/inactive routing, usage suppression, duplicate preservation, zero-handle export,4096/4097 admission bounds, hole/broadcast interaction, ordinary rejection retaining expiry, strict horizontal gates, ignored z, tick/timer wrap and atomic unsupported-domain rejection. Dependency-selection regressions cover all five new pairs and shared command/loading/lifecycle/native-policy/formatter inputs, including scoped gameplay test-count metadata. All Python runs use the flake-declared Nix runtime, including Git hooks. Original assets are unchanged. The single `cargo xtask test-full --since 696a4794` run after task ten passed: **1,858 Python tests**, **260 Rust tests** (assets10, gameplay220, xtask30), **106 deterministic report producers**, storage policy, links across **535 documentation files** and whitespace guards. Regeneration left no changes. The focused dependency-selection regression also passed. Validation notes are amended into task ten, preserving ten commits for this batch.
|
| 49 |
+
|
| 50 |
+
## Next work: RE-964
|
| 51 |
+
|
| 52 |
+
- [ ] Recover the remainder of150692 after150791 and its actual callers/dispatch, plus initialization3877 around the loader call and table-count ownership/reset ordering.
|
| 53 |
+
- [ ] Resolve native userinfo, queued engine commands/client kicks, console/network delivery and file effects with real adapters; verify operation order and failure behavior on macOS/Linux.
|
| 54 |
+
- [ ] Trace native time ABI/calendar rollover and expiry cadence; compose full duration, load, mutation, expiry and address admission across game lifecycle transitions.
|
| 55 |
+
- [ ] Extend scratch/length/capacity domains, repeated-load growth, malformed reply handling and full-capacity command/loader/export interactions.
|
| 56 |
+
- [ ] Recover125185 bot setup/resource ownership,171668 userinfo mutation and5864 ranking/publication; compose native connect/network effects.
|
| 57 |
+
- [ ] Continue native collision/spatial queries, respawn/intermission/events/scoreboard integration, assets/maps/models/shader conversion and Rust/Bevy/Solari acceptance on macOS/Linux.
|
docs/research/QVM_FILTER_LOADING_BATCH.md
CHANGED
|
@@ -45,7 +45,7 @@ Each task ran its focused `cargo xtask test-group` before its commit: qvm/rust-f
|
|
| 45 |
|
| 46 |
Rust unit tests additionally check arithmetic extremes, unrelated structure fields, unsigned expiry gates, complete-storage requirements, duplicate routing, explicit missing-file/partial-read replies, ring wrap, negative durations, lossy reloads and atomic unsupported-domain rejection. Dependency-selection regression coverage includes all five report pairs and shared policy/formatter inputs, including scoped gameplay test-count metadata. Python uses the flake-declared Nix runtime throughout, including Git hooks. Original assets are unchanged. The single `cargo xtask test-full --since ed9db0e6` run after task ten passed: **1,838 Python tests**, **249 Rust tests** (assets10, gameplay209, xtask30), **96 deterministic report producers**, storage policy, links across **524 documentation files** and whitespace guards. Regeneration left no changes. The focused dependency-selection regression also passed. Validation notes are amended into task ten, preserving ten commits for the batch.
|
| 47 |
|
| 48 |
-
##
|
| 49 |
|
| 50 |
- [ ] Recover253100 add-filter and253245 removal command wrappers, including client-number/userinfo resolution, drop/console/client effects and malformed inputs.
|
| 51 |
- [ ] Trace actual252067/252933 callers, initialization ordering, native time-structure ABI, year rollover and expiry cadence; test composition with address admission.
|
|
@@ -53,3 +53,5 @@ Rust unit tests additionally check arithmetic extremes, unrelated structure fiel
|
|
| 53 |
- [ ] Compose duration, expiry, removal, persistence and live address filtering with table ownership and all native adapters on macOS/Linux.
|
| 54 |
- [ ] Recover125185 bot setup/resource ownership,171668 userinfo mutation and5864 ranking/publication, then compose connect with native network effects.
|
| 55 |
- [ ] Continue collision/spatial-query recovery, respawn/intermission/events/scoreboard integration, assets/maps/models/shader conversion and Rust/Bevy/Solari runtime acceptance on macOS/Linux.
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
Rust unit tests additionally check arithmetic extremes, unrelated structure fields, unsigned expiry gates, complete-storage requirements, duplicate routing, explicit missing-file/partial-read replies, ring wrap, negative durations, lossy reloads and atomic unsupported-domain rejection. Dependency-selection regression coverage includes all five report pairs and shared policy/formatter inputs, including scoped gameplay test-count metadata. Python uses the flake-declared Nix runtime throughout, including Git hooks. Original assets are unchanged. The single `cargo xtask test-full --since ed9db0e6` run after task ten passed: **1,838 Python tests**, **249 Rust tests** (assets10, gameplay209, xtask30), **96 deterministic report producers**, storage policy, links across **524 documentation files** and whitespace guards. Regeneration left no changes. The focused dependency-selection regression also passed. Validation notes are amended into task ten, preserving ten commits for the batch.
|
| 47 |
|
| 48 |
+
## Historical next work after RE-953
|
| 49 |
|
| 50 |
- [ ] Recover253100 add-filter and253245 removal command wrappers, including client-number/userinfo resolution, drop/console/client effects and malformed inputs.
|
| 51 |
- [ ] Trace actual252067/252933 callers, initialization ordering, native time-structure ABI, year rollover and expiry cadence; test composition with address admission.
|
|
|
|
| 53 |
- [ ] Compose duration, expiry, removal, persistence and live address filtering with table ownership and all native adapters on macOS/Linux.
|
| 54 |
- [ ] Recover125185 bot setup/resource ownership,171668 userinfo mutation and5864 ranking/publication, then compose connect with native network effects.
|
| 55 |
- [ ] Continue collision/spatial-query recovery, respawn/intermission/events/scoreboard integration, assets/maps/models/shader conversion and Rust/Bevy/Solari runtime acceptance on macOS/Linux.
|
| 56 |
+
|
| 57 |
+
Follow-up: [RE-954–963 command/admission/frame-prefix findings and current next work](QVM_FILTER_COMMANDS_BATCH.md).
|
docs/research/README.md
CHANGED
|
@@ -1479,3 +1479,7 @@ The extension collector adds five focused tests for native tail calls, command-r
|
|
| 1479 |
- [RE-961: Rust full-capacity expiry and address-admission composition](RUST_FILTER_EXPIRY_ADMISSION.md).
|
| 1480 |
|
| 1481 |
- [RE-962: Original client-frame prefix with unconditional expiry](QVM_FILTER_FRAME_PREFIX.md).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1479 |
- [RE-961: Rust full-capacity expiry and address-admission composition](RUST_FILTER_EXPIRY_ADMISSION.md).
|
| 1480 |
|
| 1481 |
- [RE-962: Original client-frame prefix with unconditional expiry](QVM_FILTER_FRAME_PREFIX.md).
|
| 1482 |
+
|
| 1483 |
+
- [RE-963: Rust client-frame prefix with source motion gates and expiry](RUST_FILTER_FRAME_PREFIX.md).
|
| 1484 |
+
|
| 1485 |
+
- [RE-954–963 filter commands batch and RE-964 next work](QVM_FILTER_COMMANDS_BATCH.md).
|
docs/research/RUST_FILTER_FRAME_PREFIX.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Rust client-frame prefix with source motion gates and expiry
|
| 2 |
+
|
| 3 |
+
RE-963. Focused validation: `cargo xtask test-group rust-filter-frame-prefix`. [Machine report](rust-filter-frame-prefix.json).
|
| 4 |
+
|
| 5 |
+
Rust matches40 original frame-prefix cases, retaining squared horizontal motion, strict elapsed/square gates, ignored z, source bit64 copy, wrapping accumulation and unconditional full-table expiry. Unit tests cover ignored NaN z, equality, tick wrap and atomic rejection of unsupported horizontal values/incomplete storage. This ports only150692..150791; full callback/caller cadence and native runtime remain open.
|
docs/research/rust-filter-frame-prefix.json
ADDED
|
@@ -0,0 +1,1807 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"limits": "Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.",
|
| 3 |
+
"probes": [
|
| 4 |
+
{
|
| 5 |
+
"rust": {
|
| 6 |
+
"checksum": 6770823300158093670,
|
| 7 |
+
"clock_calls": [
|
| 8 |
+
{
|
| 9 |
+
"op": "time"
|
| 10 |
+
}
|
| 11 |
+
],
|
| 12 |
+
"count": 3,
|
| 13 |
+
"fields": [
|
| 14 |
+
0,
|
| 15 |
+
0,
|
| 16 |
+
1
|
| 17 |
+
],
|
| 18 |
+
"last_tick": 7000,
|
| 19 |
+
"vector_squared": [],
|
| 20 |
+
"velocity": [
|
| 21 |
+
0,
|
| 22 |
+
0,
|
| 23 |
+
1148846080
|
| 24 |
+
]
|
| 25 |
+
},
|
| 26 |
+
"source": {
|
| 27 |
+
"checksum": 6770823300158093670,
|
| 28 |
+
"clock_calls": [
|
| 29 |
+
{
|
| 30 |
+
"op": "time"
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
"count": 3,
|
| 34 |
+
"fields": [
|
| 35 |
+
0,
|
| 36 |
+
0,
|
| 37 |
+
1
|
| 38 |
+
],
|
| 39 |
+
"last_tick": 7000,
|
| 40 |
+
"vector_squared": [],
|
| 41 |
+
"velocity": [
|
| 42 |
+
0,
|
| 43 |
+
0,
|
| 44 |
+
1148846080
|
| 45 |
+
]
|
| 46 |
+
}
|
| 47 |
+
},
|
| 48 |
+
{
|
| 49 |
+
"rust": {
|
| 50 |
+
"checksum": 6770823300158093670,
|
| 51 |
+
"clock_calls": [
|
| 52 |
+
{
|
| 53 |
+
"op": "time"
|
| 54 |
+
}
|
| 55 |
+
],
|
| 56 |
+
"count": 0,
|
| 57 |
+
"fields": [
|
| 58 |
+
0,
|
| 59 |
+
1,
|
| 60 |
+
1
|
| 61 |
+
],
|
| 62 |
+
"last_tick": 7000,
|
| 63 |
+
"vector_squared": [],
|
| 64 |
+
"velocity": [
|
| 65 |
+
0,
|
| 66 |
+
0,
|
| 67 |
+
1148846080
|
| 68 |
+
]
|
| 69 |
+
},
|
| 70 |
+
"source": {
|
| 71 |
+
"checksum": 6770823300158093670,
|
| 72 |
+
"clock_calls": [
|
| 73 |
+
{
|
| 74 |
+
"op": "time"
|
| 75 |
+
}
|
| 76 |
+
],
|
| 77 |
+
"count": 0,
|
| 78 |
+
"fields": [
|
| 79 |
+
0,
|
| 80 |
+
1,
|
| 81 |
+
1
|
| 82 |
+
],
|
| 83 |
+
"last_tick": 7000,
|
| 84 |
+
"vector_squared": [],
|
| 85 |
+
"velocity": [
|
| 86 |
+
0,
|
| 87 |
+
0,
|
| 88 |
+
1148846080
|
| 89 |
+
]
|
| 90 |
+
}
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"rust": {
|
| 94 |
+
"checksum": 6770823300158093670,
|
| 95 |
+
"clock_calls": [
|
| 96 |
+
{
|
| 97 |
+
"op": "time"
|
| 98 |
+
}
|
| 99 |
+
],
|
| 100 |
+
"count": 3,
|
| 101 |
+
"fields": [
|
| 102 |
+
0,
|
| 103 |
+
0,
|
| 104 |
+
1
|
| 105 |
+
],
|
| 106 |
+
"last_tick": 7000,
|
| 107 |
+
"vector_squared": [],
|
| 108 |
+
"velocity": [
|
| 109 |
+
1092616192,
|
| 110 |
+
0,
|
| 111 |
+
0
|
| 112 |
+
]
|
| 113 |
+
},
|
| 114 |
+
"source": {
|
| 115 |
+
"checksum": 6770823300158093670,
|
| 116 |
+
"clock_calls": [
|
| 117 |
+
{
|
| 118 |
+
"op": "time"
|
| 119 |
+
}
|
| 120 |
+
],
|
| 121 |
+
"count": 3,
|
| 122 |
+
"fields": [
|
| 123 |
+
0,
|
| 124 |
+
0,
|
| 125 |
+
1
|
| 126 |
+
],
|
| 127 |
+
"last_tick": 7000,
|
| 128 |
+
"vector_squared": [],
|
| 129 |
+
"velocity": [
|
| 130 |
+
1092616192,
|
| 131 |
+
0,
|
| 132 |
+
0
|
| 133 |
+
]
|
| 134 |
+
}
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"rust": {
|
| 138 |
+
"checksum": 6770823300158093670,
|
| 139 |
+
"clock_calls": [
|
| 140 |
+
{
|
| 141 |
+
"op": "time"
|
| 142 |
+
}
|
| 143 |
+
],
|
| 144 |
+
"count": 0,
|
| 145 |
+
"fields": [
|
| 146 |
+
0,
|
| 147 |
+
1,
|
| 148 |
+
1
|
| 149 |
+
],
|
| 150 |
+
"last_tick": 7000,
|
| 151 |
+
"vector_squared": [],
|
| 152 |
+
"velocity": [
|
| 153 |
+
1092616192,
|
| 154 |
+
0,
|
| 155 |
+
0
|
| 156 |
+
]
|
| 157 |
+
},
|
| 158 |
+
"source": {
|
| 159 |
+
"checksum": 6770823300158093670,
|
| 160 |
+
"clock_calls": [
|
| 161 |
+
{
|
| 162 |
+
"op": "time"
|
| 163 |
+
}
|
| 164 |
+
],
|
| 165 |
+
"count": 0,
|
| 166 |
+
"fields": [
|
| 167 |
+
0,
|
| 168 |
+
1,
|
| 169 |
+
1
|
| 170 |
+
],
|
| 171 |
+
"last_tick": 7000,
|
| 172 |
+
"vector_squared": [],
|
| 173 |
+
"velocity": [
|
| 174 |
+
1092616192,
|
| 175 |
+
0,
|
| 176 |
+
0
|
| 177 |
+
]
|
| 178 |
+
}
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"rust": {
|
| 182 |
+
"checksum": 6770823300158093670,
|
| 183 |
+
"clock_calls": [
|
| 184 |
+
{
|
| 185 |
+
"op": "time"
|
| 186 |
+
}
|
| 187 |
+
],
|
| 188 |
+
"count": 3,
|
| 189 |
+
"fields": [
|
| 190 |
+
0,
|
| 191 |
+
0,
|
| 192 |
+
1
|
| 193 |
+
],
|
| 194 |
+
"last_tick": 7000,
|
| 195 |
+
"vector_squared": [],
|
| 196 |
+
"velocity": [
|
| 197 |
+
1093664768,
|
| 198 |
+
0,
|
| 199 |
+
0
|
| 200 |
+
]
|
| 201 |
+
},
|
| 202 |
+
"source": {
|
| 203 |
+
"checksum": 6770823300158093670,
|
| 204 |
+
"clock_calls": [
|
| 205 |
+
{
|
| 206 |
+
"op": "time"
|
| 207 |
+
}
|
| 208 |
+
],
|
| 209 |
+
"count": 3,
|
| 210 |
+
"fields": [
|
| 211 |
+
0,
|
| 212 |
+
0,
|
| 213 |
+
1
|
| 214 |
+
],
|
| 215 |
+
"last_tick": 7000,
|
| 216 |
+
"vector_squared": [],
|
| 217 |
+
"velocity": [
|
| 218 |
+
1093664768,
|
| 219 |
+
0,
|
| 220 |
+
0
|
| 221 |
+
]
|
| 222 |
+
}
|
| 223 |
+
},
|
| 224 |
+
{
|
| 225 |
+
"rust": {
|
| 226 |
+
"checksum": 6770823300158093670,
|
| 227 |
+
"clock_calls": [
|
| 228 |
+
{
|
| 229 |
+
"op": "time"
|
| 230 |
+
}
|
| 231 |
+
],
|
| 232 |
+
"count": 0,
|
| 233 |
+
"fields": [
|
| 234 |
+
0,
|
| 235 |
+
1,
|
| 236 |
+
1
|
| 237 |
+
],
|
| 238 |
+
"last_tick": 7000,
|
| 239 |
+
"vector_squared": [],
|
| 240 |
+
"velocity": [
|
| 241 |
+
1093664768,
|
| 242 |
+
0,
|
| 243 |
+
0
|
| 244 |
+
]
|
| 245 |
+
},
|
| 246 |
+
"source": {
|
| 247 |
+
"checksum": 6770823300158093670,
|
| 248 |
+
"clock_calls": [
|
| 249 |
+
{
|
| 250 |
+
"op": "time"
|
| 251 |
+
}
|
| 252 |
+
],
|
| 253 |
+
"count": 0,
|
| 254 |
+
"fields": [
|
| 255 |
+
0,
|
| 256 |
+
1,
|
| 257 |
+
1
|
| 258 |
+
],
|
| 259 |
+
"last_tick": 7000,
|
| 260 |
+
"vector_squared": [],
|
| 261 |
+
"velocity": [
|
| 262 |
+
1093664768,
|
| 263 |
+
0,
|
| 264 |
+
0
|
| 265 |
+
]
|
| 266 |
+
}
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"rust": {
|
| 270 |
+
"checksum": 6770823300158093670,
|
| 271 |
+
"clock_calls": [
|
| 272 |
+
{
|
| 273 |
+
"op": "time"
|
| 274 |
+
}
|
| 275 |
+
],
|
| 276 |
+
"count": 3,
|
| 277 |
+
"fields": [
|
| 278 |
+
0,
|
| 279 |
+
0,
|
| 280 |
+
1
|
| 281 |
+
],
|
| 282 |
+
"last_tick": 7000,
|
| 283 |
+
"vector_squared": [],
|
| 284 |
+
"velocity": [
|
| 285 |
+
1086324736,
|
| 286 |
+
1090519040,
|
| 287 |
+
1148846080
|
| 288 |
+
]
|
| 289 |
+
},
|
| 290 |
+
"source": {
|
| 291 |
+
"checksum": 6770823300158093670,
|
| 292 |
+
"clock_calls": [
|
| 293 |
+
{
|
| 294 |
+
"op": "time"
|
| 295 |
+
}
|
| 296 |
+
],
|
| 297 |
+
"count": 3,
|
| 298 |
+
"fields": [
|
| 299 |
+
0,
|
| 300 |
+
0,
|
| 301 |
+
1
|
| 302 |
+
],
|
| 303 |
+
"last_tick": 7000,
|
| 304 |
+
"vector_squared": [],
|
| 305 |
+
"velocity": [
|
| 306 |
+
1086324736,
|
| 307 |
+
1090519040,
|
| 308 |
+
1148846080
|
| 309 |
+
]
|
| 310 |
+
}
|
| 311 |
+
},
|
| 312 |
+
{
|
| 313 |
+
"rust": {
|
| 314 |
+
"checksum": 6770823300158093670,
|
| 315 |
+
"clock_calls": [
|
| 316 |
+
{
|
| 317 |
+
"op": "time"
|
| 318 |
+
}
|
| 319 |
+
],
|
| 320 |
+
"count": 0,
|
| 321 |
+
"fields": [
|
| 322 |
+
0,
|
| 323 |
+
1,
|
| 324 |
+
1
|
| 325 |
+
],
|
| 326 |
+
"last_tick": 7000,
|
| 327 |
+
"vector_squared": [],
|
| 328 |
+
"velocity": [
|
| 329 |
+
1086324736,
|
| 330 |
+
1090519040,
|
| 331 |
+
1148846080
|
| 332 |
+
]
|
| 333 |
+
},
|
| 334 |
+
"source": {
|
| 335 |
+
"checksum": 6770823300158093670,
|
| 336 |
+
"clock_calls": [
|
| 337 |
+
{
|
| 338 |
+
"op": "time"
|
| 339 |
+
}
|
| 340 |
+
],
|
| 341 |
+
"count": 0,
|
| 342 |
+
"fields": [
|
| 343 |
+
0,
|
| 344 |
+
1,
|
| 345 |
+
1
|
| 346 |
+
],
|
| 347 |
+
"last_tick": 7000,
|
| 348 |
+
"vector_squared": [],
|
| 349 |
+
"velocity": [
|
| 350 |
+
1086324736,
|
| 351 |
+
1090519040,
|
| 352 |
+
1148846080
|
| 353 |
+
]
|
| 354 |
+
}
|
| 355 |
+
},
|
| 356 |
+
{
|
| 357 |
+
"rust": {
|
| 358 |
+
"checksum": 6770823300158093670,
|
| 359 |
+
"clock_calls": [
|
| 360 |
+
{
|
| 361 |
+
"op": "time"
|
| 362 |
+
}
|
| 363 |
+
],
|
| 364 |
+
"count": 3,
|
| 365 |
+
"fields": [
|
| 366 |
+
0,
|
| 367 |
+
0,
|
| 368 |
+
1
|
| 369 |
+
],
|
| 370 |
+
"last_tick": 7000,
|
| 371 |
+
"vector_squared": [],
|
| 372 |
+
"velocity": [
|
| 373 |
+
1090519040,
|
| 374 |
+
1090519040,
|
| 375 |
+
0
|
| 376 |
+
]
|
| 377 |
+
},
|
| 378 |
+
"source": {
|
| 379 |
+
"checksum": 6770823300158093670,
|
| 380 |
+
"clock_calls": [
|
| 381 |
+
{
|
| 382 |
+
"op": "time"
|
| 383 |
+
}
|
| 384 |
+
],
|
| 385 |
+
"count": 3,
|
| 386 |
+
"fields": [
|
| 387 |
+
0,
|
| 388 |
+
0,
|
| 389 |
+
1
|
| 390 |
+
],
|
| 391 |
+
"last_tick": 7000,
|
| 392 |
+
"vector_squared": [],
|
| 393 |
+
"velocity": [
|
| 394 |
+
1090519040,
|
| 395 |
+
1090519040,
|
| 396 |
+
0
|
| 397 |
+
]
|
| 398 |
+
}
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"rust": {
|
| 402 |
+
"checksum": 6770823300158093670,
|
| 403 |
+
"clock_calls": [
|
| 404 |
+
{
|
| 405 |
+
"op": "time"
|
| 406 |
+
}
|
| 407 |
+
],
|
| 408 |
+
"count": 0,
|
| 409 |
+
"fields": [
|
| 410 |
+
0,
|
| 411 |
+
1,
|
| 412 |
+
1
|
| 413 |
+
],
|
| 414 |
+
"last_tick": 7000,
|
| 415 |
+
"vector_squared": [],
|
| 416 |
+
"velocity": [
|
| 417 |
+
1090519040,
|
| 418 |
+
1090519040,
|
| 419 |
+
0
|
| 420 |
+
]
|
| 421 |
+
},
|
| 422 |
+
"source": {
|
| 423 |
+
"checksum": 6770823300158093670,
|
| 424 |
+
"clock_calls": [
|
| 425 |
+
{
|
| 426 |
+
"op": "time"
|
| 427 |
+
}
|
| 428 |
+
],
|
| 429 |
+
"count": 0,
|
| 430 |
+
"fields": [
|
| 431 |
+
0,
|
| 432 |
+
1,
|
| 433 |
+
1
|
| 434 |
+
],
|
| 435 |
+
"last_tick": 7000,
|
| 436 |
+
"vector_squared": [],
|
| 437 |
+
"velocity": [
|
| 438 |
+
1090519040,
|
| 439 |
+
1090519040,
|
| 440 |
+
0
|
| 441 |
+
]
|
| 442 |
+
}
|
| 443 |
+
},
|
| 444 |
+
{
|
| 445 |
+
"rust": {
|
| 446 |
+
"checksum": 6770823300158093670,
|
| 447 |
+
"clock_calls": [
|
| 448 |
+
{
|
| 449 |
+
"op": "time"
|
| 450 |
+
}
|
| 451 |
+
],
|
| 452 |
+
"count": 3,
|
| 453 |
+
"fields": [
|
| 454 |
+
0,
|
| 455 |
+
0,
|
| 456 |
+
1
|
| 457 |
+
],
|
| 458 |
+
"last_tick": 6999,
|
| 459 |
+
"vector_squared": [
|
| 460 |
+
0
|
| 461 |
+
],
|
| 462 |
+
"velocity": [
|
| 463 |
+
0,
|
| 464 |
+
0,
|
| 465 |
+
1148846080
|
| 466 |
+
]
|
| 467 |
+
},
|
| 468 |
+
"source": {
|
| 469 |
+
"checksum": 6770823300158093670,
|
| 470 |
+
"clock_calls": [
|
| 471 |
+
{
|
| 472 |
+
"op": "time"
|
| 473 |
+
}
|
| 474 |
+
],
|
| 475 |
+
"count": 3,
|
| 476 |
+
"fields": [
|
| 477 |
+
0,
|
| 478 |
+
0,
|
| 479 |
+
1
|
| 480 |
+
],
|
| 481 |
+
"last_tick": 6999,
|
| 482 |
+
"vector_squared": [
|
| 483 |
+
0
|
| 484 |
+
],
|
| 485 |
+
"velocity": [
|
| 486 |
+
0,
|
| 487 |
+
0,
|
| 488 |
+
1148846080
|
| 489 |
+
]
|
| 490 |
+
}
|
| 491 |
+
},
|
| 492 |
+
{
|
| 493 |
+
"rust": {
|
| 494 |
+
"checksum": 6770823300158093670,
|
| 495 |
+
"clock_calls": [
|
| 496 |
+
{
|
| 497 |
+
"op": "time"
|
| 498 |
+
}
|
| 499 |
+
],
|
| 500 |
+
"count": 0,
|
| 501 |
+
"fields": [
|
| 502 |
+
0,
|
| 503 |
+
1,
|
| 504 |
+
1
|
| 505 |
+
],
|
| 506 |
+
"last_tick": 6999,
|
| 507 |
+
"vector_squared": [
|
| 508 |
+
0
|
| 509 |
+
],
|
| 510 |
+
"velocity": [
|
| 511 |
+
0,
|
| 512 |
+
0,
|
| 513 |
+
1148846080
|
| 514 |
+
]
|
| 515 |
+
},
|
| 516 |
+
"source": {
|
| 517 |
+
"checksum": 6770823300158093670,
|
| 518 |
+
"clock_calls": [
|
| 519 |
+
{
|
| 520 |
+
"op": "time"
|
| 521 |
+
}
|
| 522 |
+
],
|
| 523 |
+
"count": 0,
|
| 524 |
+
"fields": [
|
| 525 |
+
0,
|
| 526 |
+
1,
|
| 527 |
+
1
|
| 528 |
+
],
|
| 529 |
+
"last_tick": 6999,
|
| 530 |
+
"vector_squared": [
|
| 531 |
+
0
|
| 532 |
+
],
|
| 533 |
+
"velocity": [
|
| 534 |
+
0,
|
| 535 |
+
0,
|
| 536 |
+
1148846080
|
| 537 |
+
]
|
| 538 |
+
}
|
| 539 |
+
},
|
| 540 |
+
{
|
| 541 |
+
"rust": {
|
| 542 |
+
"checksum": 6770823300158093670,
|
| 543 |
+
"clock_calls": [
|
| 544 |
+
{
|
| 545 |
+
"op": "time"
|
| 546 |
+
}
|
| 547 |
+
],
|
| 548 |
+
"count": 3,
|
| 549 |
+
"fields": [
|
| 550 |
+
0,
|
| 551 |
+
0,
|
| 552 |
+
1
|
| 553 |
+
],
|
| 554 |
+
"last_tick": 6999,
|
| 555 |
+
"vector_squared": [
|
| 556 |
+
1120403456
|
| 557 |
+
],
|
| 558 |
+
"velocity": [
|
| 559 |
+
1092616192,
|
| 560 |
+
0,
|
| 561 |
+
0
|
| 562 |
+
]
|
| 563 |
+
},
|
| 564 |
+
"source": {
|
| 565 |
+
"checksum": 6770823300158093670,
|
| 566 |
+
"clock_calls": [
|
| 567 |
+
{
|
| 568 |
+
"op": "time"
|
| 569 |
+
}
|
| 570 |
+
],
|
| 571 |
+
"count": 3,
|
| 572 |
+
"fields": [
|
| 573 |
+
0,
|
| 574 |
+
0,
|
| 575 |
+
1
|
| 576 |
+
],
|
| 577 |
+
"last_tick": 6999,
|
| 578 |
+
"vector_squared": [
|
| 579 |
+
1120403456
|
| 580 |
+
],
|
| 581 |
+
"velocity": [
|
| 582 |
+
1092616192,
|
| 583 |
+
0,
|
| 584 |
+
0
|
| 585 |
+
]
|
| 586 |
+
}
|
| 587 |
+
},
|
| 588 |
+
{
|
| 589 |
+
"rust": {
|
| 590 |
+
"checksum": 6770823300158093670,
|
| 591 |
+
"clock_calls": [
|
| 592 |
+
{
|
| 593 |
+
"op": "time"
|
| 594 |
+
}
|
| 595 |
+
],
|
| 596 |
+
"count": 0,
|
| 597 |
+
"fields": [
|
| 598 |
+
0,
|
| 599 |
+
1,
|
| 600 |
+
1
|
| 601 |
+
],
|
| 602 |
+
"last_tick": 6999,
|
| 603 |
+
"vector_squared": [
|
| 604 |
+
1120403456
|
| 605 |
+
],
|
| 606 |
+
"velocity": [
|
| 607 |
+
1092616192,
|
| 608 |
+
0,
|
| 609 |
+
0
|
| 610 |
+
]
|
| 611 |
+
},
|
| 612 |
+
"source": {
|
| 613 |
+
"checksum": 6770823300158093670,
|
| 614 |
+
"clock_calls": [
|
| 615 |
+
{
|
| 616 |
+
"op": "time"
|
| 617 |
+
}
|
| 618 |
+
],
|
| 619 |
+
"count": 0,
|
| 620 |
+
"fields": [
|
| 621 |
+
0,
|
| 622 |
+
1,
|
| 623 |
+
1
|
| 624 |
+
],
|
| 625 |
+
"last_tick": 6999,
|
| 626 |
+
"vector_squared": [
|
| 627 |
+
1120403456
|
| 628 |
+
],
|
| 629 |
+
"velocity": [
|
| 630 |
+
1092616192,
|
| 631 |
+
0,
|
| 632 |
+
0
|
| 633 |
+
]
|
| 634 |
+
}
|
| 635 |
+
},
|
| 636 |
+
{
|
| 637 |
+
"rust": {
|
| 638 |
+
"checksum": 6770823300158093670,
|
| 639 |
+
"clock_calls": [
|
| 640 |
+
{
|
| 641 |
+
"op": "time"
|
| 642 |
+
}
|
| 643 |
+
],
|
| 644 |
+
"count": 3,
|
| 645 |
+
"fields": [
|
| 646 |
+
1,
|
| 647 |
+
0,
|
| 648 |
+
1
|
| 649 |
+
],
|
| 650 |
+
"last_tick": 6999,
|
| 651 |
+
"vector_squared": [
|
| 652 |
+
1123155968
|
| 653 |
+
],
|
| 654 |
+
"velocity": [
|
| 655 |
+
1093664768,
|
| 656 |
+
0,
|
| 657 |
+
0
|
| 658 |
+
]
|
| 659 |
+
},
|
| 660 |
+
"source": {
|
| 661 |
+
"checksum": 6770823300158093670,
|
| 662 |
+
"clock_calls": [
|
| 663 |
+
{
|
| 664 |
+
"op": "time"
|
| 665 |
+
}
|
| 666 |
+
],
|
| 667 |
+
"count": 3,
|
| 668 |
+
"fields": [
|
| 669 |
+
1,
|
| 670 |
+
0,
|
| 671 |
+
1
|
| 672 |
+
],
|
| 673 |
+
"last_tick": 6999,
|
| 674 |
+
"vector_squared": [
|
| 675 |
+
1123155968
|
| 676 |
+
],
|
| 677 |
+
"velocity": [
|
| 678 |
+
1093664768,
|
| 679 |
+
0,
|
| 680 |
+
0
|
| 681 |
+
]
|
| 682 |
+
}
|
| 683 |
+
},
|
| 684 |
+
{
|
| 685 |
+
"rust": {
|
| 686 |
+
"checksum": 6770823300158093670,
|
| 687 |
+
"clock_calls": [
|
| 688 |
+
{
|
| 689 |
+
"op": "time"
|
| 690 |
+
}
|
| 691 |
+
],
|
| 692 |
+
"count": 0,
|
| 693 |
+
"fields": [
|
| 694 |
+
1,
|
| 695 |
+
1,
|
| 696 |
+
1
|
| 697 |
+
],
|
| 698 |
+
"last_tick": 6999,
|
| 699 |
+
"vector_squared": [
|
| 700 |
+
1123155968
|
| 701 |
+
],
|
| 702 |
+
"velocity": [
|
| 703 |
+
1093664768,
|
| 704 |
+
0,
|
| 705 |
+
0
|
| 706 |
+
]
|
| 707 |
+
},
|
| 708 |
+
"source": {
|
| 709 |
+
"checksum": 6770823300158093670,
|
| 710 |
+
"clock_calls": [
|
| 711 |
+
{
|
| 712 |
+
"op": "time"
|
| 713 |
+
}
|
| 714 |
+
],
|
| 715 |
+
"count": 0,
|
| 716 |
+
"fields": [
|
| 717 |
+
1,
|
| 718 |
+
1,
|
| 719 |
+
1
|
| 720 |
+
],
|
| 721 |
+
"last_tick": 6999,
|
| 722 |
+
"vector_squared": [
|
| 723 |
+
1123155968
|
| 724 |
+
],
|
| 725 |
+
"velocity": [
|
| 726 |
+
1093664768,
|
| 727 |
+
0,
|
| 728 |
+
0
|
| 729 |
+
]
|
| 730 |
+
}
|
| 731 |
+
},
|
| 732 |
+
{
|
| 733 |
+
"rust": {
|
| 734 |
+
"checksum": 6770823300158093670,
|
| 735 |
+
"clock_calls": [
|
| 736 |
+
{
|
| 737 |
+
"op": "time"
|
| 738 |
+
}
|
| 739 |
+
],
|
| 740 |
+
"count": 3,
|
| 741 |
+
"fields": [
|
| 742 |
+
0,
|
| 743 |
+
0,
|
| 744 |
+
1
|
| 745 |
+
],
|
| 746 |
+
"last_tick": 6999,
|
| 747 |
+
"vector_squared": [
|
| 748 |
+
1120403456
|
| 749 |
+
],
|
| 750 |
+
"velocity": [
|
| 751 |
+
1086324736,
|
| 752 |
+
1090519040,
|
| 753 |
+
1148846080
|
| 754 |
+
]
|
| 755 |
+
},
|
| 756 |
+
"source": {
|
| 757 |
+
"checksum": 6770823300158093670,
|
| 758 |
+
"clock_calls": [
|
| 759 |
+
{
|
| 760 |
+
"op": "time"
|
| 761 |
+
}
|
| 762 |
+
],
|
| 763 |
+
"count": 3,
|
| 764 |
+
"fields": [
|
| 765 |
+
0,
|
| 766 |
+
0,
|
| 767 |
+
1
|
| 768 |
+
],
|
| 769 |
+
"last_tick": 6999,
|
| 770 |
+
"vector_squared": [
|
| 771 |
+
1120403456
|
| 772 |
+
],
|
| 773 |
+
"velocity": [
|
| 774 |
+
1086324736,
|
| 775 |
+
1090519040,
|
| 776 |
+
1148846080
|
| 777 |
+
]
|
| 778 |
+
}
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"rust": {
|
| 782 |
+
"checksum": 6770823300158093670,
|
| 783 |
+
"clock_calls": [
|
| 784 |
+
{
|
| 785 |
+
"op": "time"
|
| 786 |
+
}
|
| 787 |
+
],
|
| 788 |
+
"count": 0,
|
| 789 |
+
"fields": [
|
| 790 |
+
0,
|
| 791 |
+
1,
|
| 792 |
+
1
|
| 793 |
+
],
|
| 794 |
+
"last_tick": 6999,
|
| 795 |
+
"vector_squared": [
|
| 796 |
+
1120403456
|
| 797 |
+
],
|
| 798 |
+
"velocity": [
|
| 799 |
+
1086324736,
|
| 800 |
+
1090519040,
|
| 801 |
+
1148846080
|
| 802 |
+
]
|
| 803 |
+
},
|
| 804 |
+
"source": {
|
| 805 |
+
"checksum": 6770823300158093670,
|
| 806 |
+
"clock_calls": [
|
| 807 |
+
{
|
| 808 |
+
"op": "time"
|
| 809 |
+
}
|
| 810 |
+
],
|
| 811 |
+
"count": 0,
|
| 812 |
+
"fields": [
|
| 813 |
+
0,
|
| 814 |
+
1,
|
| 815 |
+
1
|
| 816 |
+
],
|
| 817 |
+
"last_tick": 6999,
|
| 818 |
+
"vector_squared": [
|
| 819 |
+
1120403456
|
| 820 |
+
],
|
| 821 |
+
"velocity": [
|
| 822 |
+
1086324736,
|
| 823 |
+
1090519040,
|
| 824 |
+
1148846080
|
| 825 |
+
]
|
| 826 |
+
}
|
| 827 |
+
},
|
| 828 |
+
{
|
| 829 |
+
"rust": {
|
| 830 |
+
"checksum": 6770823300158093670,
|
| 831 |
+
"clock_calls": [
|
| 832 |
+
{
|
| 833 |
+
"op": "time"
|
| 834 |
+
}
|
| 835 |
+
],
|
| 836 |
+
"count": 3,
|
| 837 |
+
"fields": [
|
| 838 |
+
1,
|
| 839 |
+
0,
|
| 840 |
+
1
|
| 841 |
+
],
|
| 842 |
+
"last_tick": 6999,
|
| 843 |
+
"vector_squared": [
|
| 844 |
+
1124073472
|
| 845 |
+
],
|
| 846 |
+
"velocity": [
|
| 847 |
+
1090519040,
|
| 848 |
+
1090519040,
|
| 849 |
+
0
|
| 850 |
+
]
|
| 851 |
+
},
|
| 852 |
+
"source": {
|
| 853 |
+
"checksum": 6770823300158093670,
|
| 854 |
+
"clock_calls": [
|
| 855 |
+
{
|
| 856 |
+
"op": "time"
|
| 857 |
+
}
|
| 858 |
+
],
|
| 859 |
+
"count": 3,
|
| 860 |
+
"fields": [
|
| 861 |
+
1,
|
| 862 |
+
0,
|
| 863 |
+
1
|
| 864 |
+
],
|
| 865 |
+
"last_tick": 6999,
|
| 866 |
+
"vector_squared": [
|
| 867 |
+
1124073472
|
| 868 |
+
],
|
| 869 |
+
"velocity": [
|
| 870 |
+
1090519040,
|
| 871 |
+
1090519040,
|
| 872 |
+
0
|
| 873 |
+
]
|
| 874 |
+
}
|
| 875 |
+
},
|
| 876 |
+
{
|
| 877 |
+
"rust": {
|
| 878 |
+
"checksum": 6770823300158093670,
|
| 879 |
+
"clock_calls": [
|
| 880 |
+
{
|
| 881 |
+
"op": "time"
|
| 882 |
+
}
|
| 883 |
+
],
|
| 884 |
+
"count": 0,
|
| 885 |
+
"fields": [
|
| 886 |
+
1,
|
| 887 |
+
1,
|
| 888 |
+
1
|
| 889 |
+
],
|
| 890 |
+
"last_tick": 6999,
|
| 891 |
+
"vector_squared": [
|
| 892 |
+
1124073472
|
| 893 |
+
],
|
| 894 |
+
"velocity": [
|
| 895 |
+
1090519040,
|
| 896 |
+
1090519040,
|
| 897 |
+
0
|
| 898 |
+
]
|
| 899 |
+
},
|
| 900 |
+
"source": {
|
| 901 |
+
"checksum": 6770823300158093670,
|
| 902 |
+
"clock_calls": [
|
| 903 |
+
{
|
| 904 |
+
"op": "time"
|
| 905 |
+
}
|
| 906 |
+
],
|
| 907 |
+
"count": 0,
|
| 908 |
+
"fields": [
|
| 909 |
+
1,
|
| 910 |
+
1,
|
| 911 |
+
1
|
| 912 |
+
],
|
| 913 |
+
"last_tick": 6999,
|
| 914 |
+
"vector_squared": [
|
| 915 |
+
1124073472
|
| 916 |
+
],
|
| 917 |
+
"velocity": [
|
| 918 |
+
1090519040,
|
| 919 |
+
1090519040,
|
| 920 |
+
0
|
| 921 |
+
]
|
| 922 |
+
}
|
| 923 |
+
},
|
| 924 |
+
{
|
| 925 |
+
"rust": {
|
| 926 |
+
"checksum": 6770823300158093670,
|
| 927 |
+
"clock_calls": [
|
| 928 |
+
{
|
| 929 |
+
"op": "time"
|
| 930 |
+
}
|
| 931 |
+
],
|
| 932 |
+
"count": 3,
|
| 933 |
+
"fields": [
|
| 934 |
+
1,
|
| 935 |
+
0,
|
| 936 |
+
1
|
| 937 |
+
],
|
| 938 |
+
"last_tick": 7000,
|
| 939 |
+
"vector_squared": [],
|
| 940 |
+
"velocity": [
|
| 941 |
+
0,
|
| 942 |
+
0,
|
| 943 |
+
1148846080
|
| 944 |
+
]
|
| 945 |
+
},
|
| 946 |
+
"source": {
|
| 947 |
+
"checksum": 6770823300158093670,
|
| 948 |
+
"clock_calls": [
|
| 949 |
+
{
|
| 950 |
+
"op": "time"
|
| 951 |
+
}
|
| 952 |
+
],
|
| 953 |
+
"count": 3,
|
| 954 |
+
"fields": [
|
| 955 |
+
1,
|
| 956 |
+
0,
|
| 957 |
+
1
|
| 958 |
+
],
|
| 959 |
+
"last_tick": 7000,
|
| 960 |
+
"vector_squared": [],
|
| 961 |
+
"velocity": [
|
| 962 |
+
0,
|
| 963 |
+
0,
|
| 964 |
+
1148846080
|
| 965 |
+
]
|
| 966 |
+
}
|
| 967 |
+
},
|
| 968 |
+
{
|
| 969 |
+
"rust": {
|
| 970 |
+
"checksum": 6770823300158093670,
|
| 971 |
+
"clock_calls": [
|
| 972 |
+
{
|
| 973 |
+
"op": "time"
|
| 974 |
+
}
|
| 975 |
+
],
|
| 976 |
+
"count": 0,
|
| 977 |
+
"fields": [
|
| 978 |
+
1,
|
| 979 |
+
1,
|
| 980 |
+
1
|
| 981 |
+
],
|
| 982 |
+
"last_tick": 7000,
|
| 983 |
+
"vector_squared": [],
|
| 984 |
+
"velocity": [
|
| 985 |
+
0,
|
| 986 |
+
0,
|
| 987 |
+
1148846080
|
| 988 |
+
]
|
| 989 |
+
},
|
| 990 |
+
"source": {
|
| 991 |
+
"checksum": 6770823300158093670,
|
| 992 |
+
"clock_calls": [
|
| 993 |
+
{
|
| 994 |
+
"op": "time"
|
| 995 |
+
}
|
| 996 |
+
],
|
| 997 |
+
"count": 0,
|
| 998 |
+
"fields": [
|
| 999 |
+
1,
|
| 1000 |
+
1,
|
| 1001 |
+
1
|
| 1002 |
+
],
|
| 1003 |
+
"last_tick": 7000,
|
| 1004 |
+
"vector_squared": [],
|
| 1005 |
+
"velocity": [
|
| 1006 |
+
0,
|
| 1007 |
+
0,
|
| 1008 |
+
1148846080
|
| 1009 |
+
]
|
| 1010 |
+
}
|
| 1011 |
+
},
|
| 1012 |
+
{
|
| 1013 |
+
"rust": {
|
| 1014 |
+
"checksum": 6770823300158093670,
|
| 1015 |
+
"clock_calls": [
|
| 1016 |
+
{
|
| 1017 |
+
"op": "time"
|
| 1018 |
+
}
|
| 1019 |
+
],
|
| 1020 |
+
"count": 3,
|
| 1021 |
+
"fields": [
|
| 1022 |
+
1,
|
| 1023 |
+
0,
|
| 1024 |
+
1
|
| 1025 |
+
],
|
| 1026 |
+
"last_tick": 7000,
|
| 1027 |
+
"vector_squared": [],
|
| 1028 |
+
"velocity": [
|
| 1029 |
+
1092616192,
|
| 1030 |
+
0,
|
| 1031 |
+
0
|
| 1032 |
+
]
|
| 1033 |
+
},
|
| 1034 |
+
"source": {
|
| 1035 |
+
"checksum": 6770823300158093670,
|
| 1036 |
+
"clock_calls": [
|
| 1037 |
+
{
|
| 1038 |
+
"op": "time"
|
| 1039 |
+
}
|
| 1040 |
+
],
|
| 1041 |
+
"count": 3,
|
| 1042 |
+
"fields": [
|
| 1043 |
+
1,
|
| 1044 |
+
0,
|
| 1045 |
+
1
|
| 1046 |
+
],
|
| 1047 |
+
"last_tick": 7000,
|
| 1048 |
+
"vector_squared": [],
|
| 1049 |
+
"velocity": [
|
| 1050 |
+
1092616192,
|
| 1051 |
+
0,
|
| 1052 |
+
0
|
| 1053 |
+
]
|
| 1054 |
+
}
|
| 1055 |
+
},
|
| 1056 |
+
{
|
| 1057 |
+
"rust": {
|
| 1058 |
+
"checksum": 6770823300158093670,
|
| 1059 |
+
"clock_calls": [
|
| 1060 |
+
{
|
| 1061 |
+
"op": "time"
|
| 1062 |
+
}
|
| 1063 |
+
],
|
| 1064 |
+
"count": 0,
|
| 1065 |
+
"fields": [
|
| 1066 |
+
1,
|
| 1067 |
+
1,
|
| 1068 |
+
1
|
| 1069 |
+
],
|
| 1070 |
+
"last_tick": 7000,
|
| 1071 |
+
"vector_squared": [],
|
| 1072 |
+
"velocity": [
|
| 1073 |
+
1092616192,
|
| 1074 |
+
0,
|
| 1075 |
+
0
|
| 1076 |
+
]
|
| 1077 |
+
},
|
| 1078 |
+
"source": {
|
| 1079 |
+
"checksum": 6770823300158093670,
|
| 1080 |
+
"clock_calls": [
|
| 1081 |
+
{
|
| 1082 |
+
"op": "time"
|
| 1083 |
+
}
|
| 1084 |
+
],
|
| 1085 |
+
"count": 0,
|
| 1086 |
+
"fields": [
|
| 1087 |
+
1,
|
| 1088 |
+
1,
|
| 1089 |
+
1
|
| 1090 |
+
],
|
| 1091 |
+
"last_tick": 7000,
|
| 1092 |
+
"vector_squared": [],
|
| 1093 |
+
"velocity": [
|
| 1094 |
+
1092616192,
|
| 1095 |
+
0,
|
| 1096 |
+
0
|
| 1097 |
+
]
|
| 1098 |
+
}
|
| 1099 |
+
},
|
| 1100 |
+
{
|
| 1101 |
+
"rust": {
|
| 1102 |
+
"checksum": 6770823300158093670,
|
| 1103 |
+
"clock_calls": [
|
| 1104 |
+
{
|
| 1105 |
+
"op": "time"
|
| 1106 |
+
}
|
| 1107 |
+
],
|
| 1108 |
+
"count": 3,
|
| 1109 |
+
"fields": [
|
| 1110 |
+
1,
|
| 1111 |
+
0,
|
| 1112 |
+
1
|
| 1113 |
+
],
|
| 1114 |
+
"last_tick": 7000,
|
| 1115 |
+
"vector_squared": [],
|
| 1116 |
+
"velocity": [
|
| 1117 |
+
1093664768,
|
| 1118 |
+
0,
|
| 1119 |
+
0
|
| 1120 |
+
]
|
| 1121 |
+
},
|
| 1122 |
+
"source": {
|
| 1123 |
+
"checksum": 6770823300158093670,
|
| 1124 |
+
"clock_calls": [
|
| 1125 |
+
{
|
| 1126 |
+
"op": "time"
|
| 1127 |
+
}
|
| 1128 |
+
],
|
| 1129 |
+
"count": 3,
|
| 1130 |
+
"fields": [
|
| 1131 |
+
1,
|
| 1132 |
+
0,
|
| 1133 |
+
1
|
| 1134 |
+
],
|
| 1135 |
+
"last_tick": 7000,
|
| 1136 |
+
"vector_squared": [],
|
| 1137 |
+
"velocity": [
|
| 1138 |
+
1093664768,
|
| 1139 |
+
0,
|
| 1140 |
+
0
|
| 1141 |
+
]
|
| 1142 |
+
}
|
| 1143 |
+
},
|
| 1144 |
+
{
|
| 1145 |
+
"rust": {
|
| 1146 |
+
"checksum": 6770823300158093670,
|
| 1147 |
+
"clock_calls": [
|
| 1148 |
+
{
|
| 1149 |
+
"op": "time"
|
| 1150 |
+
}
|
| 1151 |
+
],
|
| 1152 |
+
"count": 0,
|
| 1153 |
+
"fields": [
|
| 1154 |
+
1,
|
| 1155 |
+
1,
|
| 1156 |
+
1
|
| 1157 |
+
],
|
| 1158 |
+
"last_tick": 7000,
|
| 1159 |
+
"vector_squared": [],
|
| 1160 |
+
"velocity": [
|
| 1161 |
+
1093664768,
|
| 1162 |
+
0,
|
| 1163 |
+
0
|
| 1164 |
+
]
|
| 1165 |
+
},
|
| 1166 |
+
"source": {
|
| 1167 |
+
"checksum": 6770823300158093670,
|
| 1168 |
+
"clock_calls": [
|
| 1169 |
+
{
|
| 1170 |
+
"op": "time"
|
| 1171 |
+
}
|
| 1172 |
+
],
|
| 1173 |
+
"count": 0,
|
| 1174 |
+
"fields": [
|
| 1175 |
+
1,
|
| 1176 |
+
1,
|
| 1177 |
+
1
|
| 1178 |
+
],
|
| 1179 |
+
"last_tick": 7000,
|
| 1180 |
+
"vector_squared": [],
|
| 1181 |
+
"velocity": [
|
| 1182 |
+
1093664768,
|
| 1183 |
+
0,
|
| 1184 |
+
0
|
| 1185 |
+
]
|
| 1186 |
+
}
|
| 1187 |
+
},
|
| 1188 |
+
{
|
| 1189 |
+
"rust": {
|
| 1190 |
+
"checksum": 6770823300158093670,
|
| 1191 |
+
"clock_calls": [
|
| 1192 |
+
{
|
| 1193 |
+
"op": "time"
|
| 1194 |
+
}
|
| 1195 |
+
],
|
| 1196 |
+
"count": 3,
|
| 1197 |
+
"fields": [
|
| 1198 |
+
1,
|
| 1199 |
+
0,
|
| 1200 |
+
1
|
| 1201 |
+
],
|
| 1202 |
+
"last_tick": 7000,
|
| 1203 |
+
"vector_squared": [],
|
| 1204 |
+
"velocity": [
|
| 1205 |
+
1086324736,
|
| 1206 |
+
1090519040,
|
| 1207 |
+
1148846080
|
| 1208 |
+
]
|
| 1209 |
+
},
|
| 1210 |
+
"source": {
|
| 1211 |
+
"checksum": 6770823300158093670,
|
| 1212 |
+
"clock_calls": [
|
| 1213 |
+
{
|
| 1214 |
+
"op": "time"
|
| 1215 |
+
}
|
| 1216 |
+
],
|
| 1217 |
+
"count": 3,
|
| 1218 |
+
"fields": [
|
| 1219 |
+
1,
|
| 1220 |
+
0,
|
| 1221 |
+
1
|
| 1222 |
+
],
|
| 1223 |
+
"last_tick": 7000,
|
| 1224 |
+
"vector_squared": [],
|
| 1225 |
+
"velocity": [
|
| 1226 |
+
1086324736,
|
| 1227 |
+
1090519040,
|
| 1228 |
+
1148846080
|
| 1229 |
+
]
|
| 1230 |
+
}
|
| 1231 |
+
},
|
| 1232 |
+
{
|
| 1233 |
+
"rust": {
|
| 1234 |
+
"checksum": 6770823300158093670,
|
| 1235 |
+
"clock_calls": [
|
| 1236 |
+
{
|
| 1237 |
+
"op": "time"
|
| 1238 |
+
}
|
| 1239 |
+
],
|
| 1240 |
+
"count": 0,
|
| 1241 |
+
"fields": [
|
| 1242 |
+
1,
|
| 1243 |
+
1,
|
| 1244 |
+
1
|
| 1245 |
+
],
|
| 1246 |
+
"last_tick": 7000,
|
| 1247 |
+
"vector_squared": [],
|
| 1248 |
+
"velocity": [
|
| 1249 |
+
1086324736,
|
| 1250 |
+
1090519040,
|
| 1251 |
+
1148846080
|
| 1252 |
+
]
|
| 1253 |
+
},
|
| 1254 |
+
"source": {
|
| 1255 |
+
"checksum": 6770823300158093670,
|
| 1256 |
+
"clock_calls": [
|
| 1257 |
+
{
|
| 1258 |
+
"op": "time"
|
| 1259 |
+
}
|
| 1260 |
+
],
|
| 1261 |
+
"count": 0,
|
| 1262 |
+
"fields": [
|
| 1263 |
+
1,
|
| 1264 |
+
1,
|
| 1265 |
+
1
|
| 1266 |
+
],
|
| 1267 |
+
"last_tick": 7000,
|
| 1268 |
+
"vector_squared": [],
|
| 1269 |
+
"velocity": [
|
| 1270 |
+
1086324736,
|
| 1271 |
+
1090519040,
|
| 1272 |
+
1148846080
|
| 1273 |
+
]
|
| 1274 |
+
}
|
| 1275 |
+
},
|
| 1276 |
+
{
|
| 1277 |
+
"rust": {
|
| 1278 |
+
"checksum": 6770823300158093670,
|
| 1279 |
+
"clock_calls": [
|
| 1280 |
+
{
|
| 1281 |
+
"op": "time"
|
| 1282 |
+
}
|
| 1283 |
+
],
|
| 1284 |
+
"count": 3,
|
| 1285 |
+
"fields": [
|
| 1286 |
+
1,
|
| 1287 |
+
0,
|
| 1288 |
+
1
|
| 1289 |
+
],
|
| 1290 |
+
"last_tick": 7000,
|
| 1291 |
+
"vector_squared": [],
|
| 1292 |
+
"velocity": [
|
| 1293 |
+
1090519040,
|
| 1294 |
+
1090519040,
|
| 1295 |
+
0
|
| 1296 |
+
]
|
| 1297 |
+
},
|
| 1298 |
+
"source": {
|
| 1299 |
+
"checksum": 6770823300158093670,
|
| 1300 |
+
"clock_calls": [
|
| 1301 |
+
{
|
| 1302 |
+
"op": "time"
|
| 1303 |
+
}
|
| 1304 |
+
],
|
| 1305 |
+
"count": 3,
|
| 1306 |
+
"fields": [
|
| 1307 |
+
1,
|
| 1308 |
+
0,
|
| 1309 |
+
1
|
| 1310 |
+
],
|
| 1311 |
+
"last_tick": 7000,
|
| 1312 |
+
"vector_squared": [],
|
| 1313 |
+
"velocity": [
|
| 1314 |
+
1090519040,
|
| 1315 |
+
1090519040,
|
| 1316 |
+
0
|
| 1317 |
+
]
|
| 1318 |
+
}
|
| 1319 |
+
},
|
| 1320 |
+
{
|
| 1321 |
+
"rust": {
|
| 1322 |
+
"checksum": 6770823300158093670,
|
| 1323 |
+
"clock_calls": [
|
| 1324 |
+
{
|
| 1325 |
+
"op": "time"
|
| 1326 |
+
}
|
| 1327 |
+
],
|
| 1328 |
+
"count": 0,
|
| 1329 |
+
"fields": [
|
| 1330 |
+
1,
|
| 1331 |
+
1,
|
| 1332 |
+
1
|
| 1333 |
+
],
|
| 1334 |
+
"last_tick": 7000,
|
| 1335 |
+
"vector_squared": [],
|
| 1336 |
+
"velocity": [
|
| 1337 |
+
1090519040,
|
| 1338 |
+
1090519040,
|
| 1339 |
+
0
|
| 1340 |
+
]
|
| 1341 |
+
},
|
| 1342 |
+
"source": {
|
| 1343 |
+
"checksum": 6770823300158093670,
|
| 1344 |
+
"clock_calls": [
|
| 1345 |
+
{
|
| 1346 |
+
"op": "time"
|
| 1347 |
+
}
|
| 1348 |
+
],
|
| 1349 |
+
"count": 0,
|
| 1350 |
+
"fields": [
|
| 1351 |
+
1,
|
| 1352 |
+
1,
|
| 1353 |
+
1
|
| 1354 |
+
],
|
| 1355 |
+
"last_tick": 7000,
|
| 1356 |
+
"vector_squared": [],
|
| 1357 |
+
"velocity": [
|
| 1358 |
+
1090519040,
|
| 1359 |
+
1090519040,
|
| 1360 |
+
0
|
| 1361 |
+
]
|
| 1362 |
+
}
|
| 1363 |
+
},
|
| 1364 |
+
{
|
| 1365 |
+
"rust": {
|
| 1366 |
+
"checksum": 6770823300158093670,
|
| 1367 |
+
"clock_calls": [
|
| 1368 |
+
{
|
| 1369 |
+
"op": "time"
|
| 1370 |
+
}
|
| 1371 |
+
],
|
| 1372 |
+
"count": 3,
|
| 1373 |
+
"fields": [
|
| 1374 |
+
1,
|
| 1375 |
+
0,
|
| 1376 |
+
1
|
| 1377 |
+
],
|
| 1378 |
+
"last_tick": 6999,
|
| 1379 |
+
"vector_squared": [],
|
| 1380 |
+
"velocity": [
|
| 1381 |
+
0,
|
| 1382 |
+
0,
|
| 1383 |
+
1148846080
|
| 1384 |
+
]
|
| 1385 |
+
},
|
| 1386 |
+
"source": {
|
| 1387 |
+
"checksum": 6770823300158093670,
|
| 1388 |
+
"clock_calls": [
|
| 1389 |
+
{
|
| 1390 |
+
"op": "time"
|
| 1391 |
+
}
|
| 1392 |
+
],
|
| 1393 |
+
"count": 3,
|
| 1394 |
+
"fields": [
|
| 1395 |
+
1,
|
| 1396 |
+
0,
|
| 1397 |
+
1
|
| 1398 |
+
],
|
| 1399 |
+
"last_tick": 6999,
|
| 1400 |
+
"vector_squared": [],
|
| 1401 |
+
"velocity": [
|
| 1402 |
+
0,
|
| 1403 |
+
0,
|
| 1404 |
+
1148846080
|
| 1405 |
+
]
|
| 1406 |
+
}
|
| 1407 |
+
},
|
| 1408 |
+
{
|
| 1409 |
+
"rust": {
|
| 1410 |
+
"checksum": 6770823300158093670,
|
| 1411 |
+
"clock_calls": [
|
| 1412 |
+
{
|
| 1413 |
+
"op": "time"
|
| 1414 |
+
}
|
| 1415 |
+
],
|
| 1416 |
+
"count": 0,
|
| 1417 |
+
"fields": [
|
| 1418 |
+
1,
|
| 1419 |
+
1,
|
| 1420 |
+
1
|
| 1421 |
+
],
|
| 1422 |
+
"last_tick": 6999,
|
| 1423 |
+
"vector_squared": [],
|
| 1424 |
+
"velocity": [
|
| 1425 |
+
0,
|
| 1426 |
+
0,
|
| 1427 |
+
1148846080
|
| 1428 |
+
]
|
| 1429 |
+
},
|
| 1430 |
+
"source": {
|
| 1431 |
+
"checksum": 6770823300158093670,
|
| 1432 |
+
"clock_calls": [
|
| 1433 |
+
{
|
| 1434 |
+
"op": "time"
|
| 1435 |
+
}
|
| 1436 |
+
],
|
| 1437 |
+
"count": 0,
|
| 1438 |
+
"fields": [
|
| 1439 |
+
1,
|
| 1440 |
+
1,
|
| 1441 |
+
1
|
| 1442 |
+
],
|
| 1443 |
+
"last_tick": 6999,
|
| 1444 |
+
"vector_squared": [],
|
| 1445 |
+
"velocity": [
|
| 1446 |
+
0,
|
| 1447 |
+
0,
|
| 1448 |
+
1148846080
|
| 1449 |
+
]
|
| 1450 |
+
}
|
| 1451 |
+
},
|
| 1452 |
+
{
|
| 1453 |
+
"rust": {
|
| 1454 |
+
"checksum": 6770823300158093670,
|
| 1455 |
+
"clock_calls": [
|
| 1456 |
+
{
|
| 1457 |
+
"op": "time"
|
| 1458 |
+
}
|
| 1459 |
+
],
|
| 1460 |
+
"count": 3,
|
| 1461 |
+
"fields": [
|
| 1462 |
+
1,
|
| 1463 |
+
0,
|
| 1464 |
+
1
|
| 1465 |
+
],
|
| 1466 |
+
"last_tick": 6999,
|
| 1467 |
+
"vector_squared": [],
|
| 1468 |
+
"velocity": [
|
| 1469 |
+
1092616192,
|
| 1470 |
+
0,
|
| 1471 |
+
0
|
| 1472 |
+
]
|
| 1473 |
+
},
|
| 1474 |
+
"source": {
|
| 1475 |
+
"checksum": 6770823300158093670,
|
| 1476 |
+
"clock_calls": [
|
| 1477 |
+
{
|
| 1478 |
+
"op": "time"
|
| 1479 |
+
}
|
| 1480 |
+
],
|
| 1481 |
+
"count": 3,
|
| 1482 |
+
"fields": [
|
| 1483 |
+
1,
|
| 1484 |
+
0,
|
| 1485 |
+
1
|
| 1486 |
+
],
|
| 1487 |
+
"last_tick": 6999,
|
| 1488 |
+
"vector_squared": [],
|
| 1489 |
+
"velocity": [
|
| 1490 |
+
1092616192,
|
| 1491 |
+
0,
|
| 1492 |
+
0
|
| 1493 |
+
]
|
| 1494 |
+
}
|
| 1495 |
+
},
|
| 1496 |
+
{
|
| 1497 |
+
"rust": {
|
| 1498 |
+
"checksum": 6770823300158093670,
|
| 1499 |
+
"clock_calls": [
|
| 1500 |
+
{
|
| 1501 |
+
"op": "time"
|
| 1502 |
+
}
|
| 1503 |
+
],
|
| 1504 |
+
"count": 0,
|
| 1505 |
+
"fields": [
|
| 1506 |
+
1,
|
| 1507 |
+
1,
|
| 1508 |
+
1
|
| 1509 |
+
],
|
| 1510 |
+
"last_tick": 6999,
|
| 1511 |
+
"vector_squared": [],
|
| 1512 |
+
"velocity": [
|
| 1513 |
+
1092616192,
|
| 1514 |
+
0,
|
| 1515 |
+
0
|
| 1516 |
+
]
|
| 1517 |
+
},
|
| 1518 |
+
"source": {
|
| 1519 |
+
"checksum": 6770823300158093670,
|
| 1520 |
+
"clock_calls": [
|
| 1521 |
+
{
|
| 1522 |
+
"op": "time"
|
| 1523 |
+
}
|
| 1524 |
+
],
|
| 1525 |
+
"count": 0,
|
| 1526 |
+
"fields": [
|
| 1527 |
+
1,
|
| 1528 |
+
1,
|
| 1529 |
+
1
|
| 1530 |
+
],
|
| 1531 |
+
"last_tick": 6999,
|
| 1532 |
+
"vector_squared": [],
|
| 1533 |
+
"velocity": [
|
| 1534 |
+
1092616192,
|
| 1535 |
+
0,
|
| 1536 |
+
0
|
| 1537 |
+
]
|
| 1538 |
+
}
|
| 1539 |
+
},
|
| 1540 |
+
{
|
| 1541 |
+
"rust": {
|
| 1542 |
+
"checksum": 6770823300158093670,
|
| 1543 |
+
"clock_calls": [
|
| 1544 |
+
{
|
| 1545 |
+
"op": "time"
|
| 1546 |
+
}
|
| 1547 |
+
],
|
| 1548 |
+
"count": 3,
|
| 1549 |
+
"fields": [
|
| 1550 |
+
1,
|
| 1551 |
+
0,
|
| 1552 |
+
1
|
| 1553 |
+
],
|
| 1554 |
+
"last_tick": 6999,
|
| 1555 |
+
"vector_squared": [],
|
| 1556 |
+
"velocity": [
|
| 1557 |
+
1093664768,
|
| 1558 |
+
0,
|
| 1559 |
+
0
|
| 1560 |
+
]
|
| 1561 |
+
},
|
| 1562 |
+
"source": {
|
| 1563 |
+
"checksum": 6770823300158093670,
|
| 1564 |
+
"clock_calls": [
|
| 1565 |
+
{
|
| 1566 |
+
"op": "time"
|
| 1567 |
+
}
|
| 1568 |
+
],
|
| 1569 |
+
"count": 3,
|
| 1570 |
+
"fields": [
|
| 1571 |
+
1,
|
| 1572 |
+
0,
|
| 1573 |
+
1
|
| 1574 |
+
],
|
| 1575 |
+
"last_tick": 6999,
|
| 1576 |
+
"vector_squared": [],
|
| 1577 |
+
"velocity": [
|
| 1578 |
+
1093664768,
|
| 1579 |
+
0,
|
| 1580 |
+
0
|
| 1581 |
+
]
|
| 1582 |
+
}
|
| 1583 |
+
},
|
| 1584 |
+
{
|
| 1585 |
+
"rust": {
|
| 1586 |
+
"checksum": 6770823300158093670,
|
| 1587 |
+
"clock_calls": [
|
| 1588 |
+
{
|
| 1589 |
+
"op": "time"
|
| 1590 |
+
}
|
| 1591 |
+
],
|
| 1592 |
+
"count": 0,
|
| 1593 |
+
"fields": [
|
| 1594 |
+
1,
|
| 1595 |
+
1,
|
| 1596 |
+
1
|
| 1597 |
+
],
|
| 1598 |
+
"last_tick": 6999,
|
| 1599 |
+
"vector_squared": [],
|
| 1600 |
+
"velocity": [
|
| 1601 |
+
1093664768,
|
| 1602 |
+
0,
|
| 1603 |
+
0
|
| 1604 |
+
]
|
| 1605 |
+
},
|
| 1606 |
+
"source": {
|
| 1607 |
+
"checksum": 6770823300158093670,
|
| 1608 |
+
"clock_calls": [
|
| 1609 |
+
{
|
| 1610 |
+
"op": "time"
|
| 1611 |
+
}
|
| 1612 |
+
],
|
| 1613 |
+
"count": 0,
|
| 1614 |
+
"fields": [
|
| 1615 |
+
1,
|
| 1616 |
+
1,
|
| 1617 |
+
1
|
| 1618 |
+
],
|
| 1619 |
+
"last_tick": 6999,
|
| 1620 |
+
"vector_squared": [],
|
| 1621 |
+
"velocity": [
|
| 1622 |
+
1093664768,
|
| 1623 |
+
0,
|
| 1624 |
+
0
|
| 1625 |
+
]
|
| 1626 |
+
}
|
| 1627 |
+
},
|
| 1628 |
+
{
|
| 1629 |
+
"rust": {
|
| 1630 |
+
"checksum": 6770823300158093670,
|
| 1631 |
+
"clock_calls": [
|
| 1632 |
+
{
|
| 1633 |
+
"op": "time"
|
| 1634 |
+
}
|
| 1635 |
+
],
|
| 1636 |
+
"count": 3,
|
| 1637 |
+
"fields": [
|
| 1638 |
+
1,
|
| 1639 |
+
0,
|
| 1640 |
+
1
|
| 1641 |
+
],
|
| 1642 |
+
"last_tick": 6999,
|
| 1643 |
+
"vector_squared": [],
|
| 1644 |
+
"velocity": [
|
| 1645 |
+
1086324736,
|
| 1646 |
+
1090519040,
|
| 1647 |
+
1148846080
|
| 1648 |
+
]
|
| 1649 |
+
},
|
| 1650 |
+
"source": {
|
| 1651 |
+
"checksum": 6770823300158093670,
|
| 1652 |
+
"clock_calls": [
|
| 1653 |
+
{
|
| 1654 |
+
"op": "time"
|
| 1655 |
+
}
|
| 1656 |
+
],
|
| 1657 |
+
"count": 3,
|
| 1658 |
+
"fields": [
|
| 1659 |
+
1,
|
| 1660 |
+
0,
|
| 1661 |
+
1
|
| 1662 |
+
],
|
| 1663 |
+
"last_tick": 6999,
|
| 1664 |
+
"vector_squared": [],
|
| 1665 |
+
"velocity": [
|
| 1666 |
+
1086324736,
|
| 1667 |
+
1090519040,
|
| 1668 |
+
1148846080
|
| 1669 |
+
]
|
| 1670 |
+
}
|
| 1671 |
+
},
|
| 1672 |
+
{
|
| 1673 |
+
"rust": {
|
| 1674 |
+
"checksum": 6770823300158093670,
|
| 1675 |
+
"clock_calls": [
|
| 1676 |
+
{
|
| 1677 |
+
"op": "time"
|
| 1678 |
+
}
|
| 1679 |
+
],
|
| 1680 |
+
"count": 0,
|
| 1681 |
+
"fields": [
|
| 1682 |
+
1,
|
| 1683 |
+
1,
|
| 1684 |
+
1
|
| 1685 |
+
],
|
| 1686 |
+
"last_tick": 6999,
|
| 1687 |
+
"vector_squared": [],
|
| 1688 |
+
"velocity": [
|
| 1689 |
+
1086324736,
|
| 1690 |
+
1090519040,
|
| 1691 |
+
1148846080
|
| 1692 |
+
]
|
| 1693 |
+
},
|
| 1694 |
+
"source": {
|
| 1695 |
+
"checksum": 6770823300158093670,
|
| 1696 |
+
"clock_calls": [
|
| 1697 |
+
{
|
| 1698 |
+
"op": "time"
|
| 1699 |
+
}
|
| 1700 |
+
],
|
| 1701 |
+
"count": 0,
|
| 1702 |
+
"fields": [
|
| 1703 |
+
1,
|
| 1704 |
+
1,
|
| 1705 |
+
1
|
| 1706 |
+
],
|
| 1707 |
+
"last_tick": 6999,
|
| 1708 |
+
"vector_squared": [],
|
| 1709 |
+
"velocity": [
|
| 1710 |
+
1086324736,
|
| 1711 |
+
1090519040,
|
| 1712 |
+
1148846080
|
| 1713 |
+
]
|
| 1714 |
+
}
|
| 1715 |
+
},
|
| 1716 |
+
{
|
| 1717 |
+
"rust": {
|
| 1718 |
+
"checksum": 6770823300158093670,
|
| 1719 |
+
"clock_calls": [
|
| 1720 |
+
{
|
| 1721 |
+
"op": "time"
|
| 1722 |
+
}
|
| 1723 |
+
],
|
| 1724 |
+
"count": 3,
|
| 1725 |
+
"fields": [
|
| 1726 |
+
1,
|
| 1727 |
+
0,
|
| 1728 |
+
1
|
| 1729 |
+
],
|
| 1730 |
+
"last_tick": 6999,
|
| 1731 |
+
"vector_squared": [],
|
| 1732 |
+
"velocity": [
|
| 1733 |
+
1090519040,
|
| 1734 |
+
1090519040,
|
| 1735 |
+
0
|
| 1736 |
+
]
|
| 1737 |
+
},
|
| 1738 |
+
"source": {
|
| 1739 |
+
"checksum": 6770823300158093670,
|
| 1740 |
+
"clock_calls": [
|
| 1741 |
+
{
|
| 1742 |
+
"op": "time"
|
| 1743 |
+
}
|
| 1744 |
+
],
|
| 1745 |
+
"count": 3,
|
| 1746 |
+
"fields": [
|
| 1747 |
+
1,
|
| 1748 |
+
0,
|
| 1749 |
+
1
|
| 1750 |
+
],
|
| 1751 |
+
"last_tick": 6999,
|
| 1752 |
+
"vector_squared": [],
|
| 1753 |
+
"velocity": [
|
| 1754 |
+
1090519040,
|
| 1755 |
+
1090519040,
|
| 1756 |
+
0
|
| 1757 |
+
]
|
| 1758 |
+
}
|
| 1759 |
+
},
|
| 1760 |
+
{
|
| 1761 |
+
"rust": {
|
| 1762 |
+
"checksum": 6770823300158093670,
|
| 1763 |
+
"clock_calls": [
|
| 1764 |
+
{
|
| 1765 |
+
"op": "time"
|
| 1766 |
+
}
|
| 1767 |
+
],
|
| 1768 |
+
"count": 0,
|
| 1769 |
+
"fields": [
|
| 1770 |
+
1,
|
| 1771 |
+
1,
|
| 1772 |
+
1
|
| 1773 |
+
],
|
| 1774 |
+
"last_tick": 6999,
|
| 1775 |
+
"vector_squared": [],
|
| 1776 |
+
"velocity": [
|
| 1777 |
+
1090519040,
|
| 1778 |
+
1090519040,
|
| 1779 |
+
0
|
| 1780 |
+
]
|
| 1781 |
+
},
|
| 1782 |
+
"source": {
|
| 1783 |
+
"checksum": 6770823300158093670,
|
| 1784 |
+
"clock_calls": [
|
| 1785 |
+
{
|
| 1786 |
+
"op": "time"
|
| 1787 |
+
}
|
| 1788 |
+
],
|
| 1789 |
+
"count": 0,
|
| 1790 |
+
"fields": [
|
| 1791 |
+
1,
|
| 1792 |
+
1,
|
| 1793 |
+
1
|
| 1794 |
+
],
|
| 1795 |
+
"last_tick": 6999,
|
| 1796 |
+
"vector_squared": [],
|
| 1797 |
+
"velocity": [
|
| 1798 |
+
1090519040,
|
| 1799 |
+
1090519040,
|
| 1800 |
+
0
|
| 1801 |
+
]
|
| 1802 |
+
}
|
| 1803 |
+
}
|
| 1804 |
+
],
|
| 1805 |
+
"source_report": "docs/research/qvm-filter-frame-prefix.json",
|
| 1806 |
+
"source_report_sha256": "e65060c9eb4e640fdc56b1e44dfff5df2339bd1023e4759076ccfa9a9c763510"
|
| 1807 |
+
}
|
docs/research/rust-health-impulse.json
CHANGED
|
@@ -2985,7 +2985,7 @@
|
|
| 2985 |
"exit_code": 2
|
| 2986 |
}
|
| 2987 |
],
|
| 2988 |
-
"rust_unit_tests":
|
| 2989 |
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
}
|
|
|
|
| 2985 |
"exit_code": 2
|
| 2986 |
}
|
| 2987 |
],
|
| 2988 |
+
"rust_unit_tests": 220,
|
| 2989 |
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
}
|
scripts/analyze_rust_filter_frame_prefix.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compare recovered Rust policy with original QVM fixtures."""
|
| 2 |
+
import hashlib,json,os,subprocess
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from analyze_qvm import write_json
|
| 5 |
+
from rust_lifecycle_support import result
|
| 6 |
+
|
| 7 |
+
def main():
|
| 8 |
+
subprocess.run(['cargo','build','--offline','--package','urt-gameplay','--bin','urt-filter-commands'],check=True,capture_output=True)
|
| 9 |
+
binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-filter-commands'
|
| 10 |
+
path=Path('docs/research/qvm-filter-frame-prefix.json');data=path.read_bytes();probes=[]
|
| 11 |
+
for p in json.loads(data)['probes']:
|
| 12 |
+
probes.append(dict(source={k:p[k] for k in ['clock_calls', 'vector_squared', 'fields', 'velocity', 'last_tick', 'count', 'checksum']},rust=result(binary,'frame',encode(p['input']))))
|
| 13 |
+
write_json(Path('docs/research/rust-filter-frame-prefix.json'),dict(source_report=str(path),source_report_sha256=hashlib.sha256(data).hexdigest(),probes=probes,limits='Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.'))
|
| 14 |
+
|
| 15 |
+
def encode(a):
|
| 16 |
+
from analyze_qvm_acceleration import word
|
| 17 |
+
return [a['activity'],a['elapsed'],*[word(v) for v in a['velocity']],a['flags'],a['accumulator'],a['msec'],a['now'],a['count']]
|
| 18 |
+
if __name__=='__main__':main()
|
scripts/test_rust_filter_frame_prefix.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import hashlib,json,unittest
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
class PortTests(unittest.TestCase):
|
| 4 |
+
def test_original_parity(self):
|
| 5 |
+
r=json.loads(Path('docs/research/rust-filter-frame-prefix.json').read_text());self.assertGreaterEqual(len(r['probes']),12)
|
| 6 |
+
for p in r['probes']:self.assertEqual(p['source'],p['rust'])
|
| 7 |
+
def test_identity(self):
|
| 8 |
+
r=json.loads(Path('docs/research/rust-filter-frame-prefix.json').read_text());self.assertEqual(hashlib.sha256(Path(r['source_report']).read_bytes()).hexdigest(),r['source_report_sha256'])
|
| 9 |
+
if __name__=='__main__':unittest.main()
|
xtask/checks.tsv
CHANGED
|
@@ -3398,3 +3398,21 @@ report scripts/analyze_qvm_filter_frame_prefix.py docs/research/qvm-filter-frame
|
|
| 3398 |
edge docs/research/qvm-filter-frame-prefix.json scripts/test_qvm_filter_frame_prefix.py
|
| 3399 |
group qvm-filter-frame-prefix scripts/analyze_qvm_filter_frame_prefix.py
|
| 3400 |
edge scripts/analyze_qvm_filter_frame_prefix.py scripts/analyze_qvm_resumer_audit.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3398 |
edge docs/research/qvm-filter-frame-prefix.json scripts/test_qvm_filter_frame_prefix.py
|
| 3399 |
group qvm-filter-frame-prefix scripts/analyze_qvm_filter_frame_prefix.py
|
| 3400 |
edge scripts/analyze_qvm_filter_frame_prefix.py scripts/analyze_qvm_resumer_audit.py
|
| 3401 |
+
report scripts/analyze_rust_filter_frame_prefix.py docs/research/rust-filter-frame-prefix.json
|
| 3402 |
+
edge docs/research/rust-filter-frame-prefix.json scripts/test_rust_filter_frame_prefix.py
|
| 3403 |
+
group rust-filter-frame-prefix scripts/analyze_rust_filter_frame_prefix.py
|
| 3404 |
+
edge scripts/analyze_rust_filter_frame_prefix.py scripts/analyze_qvm_resumer_audit.py
|
| 3405 |
+
edge Cargo.toml scripts/analyze_rust_filter_frame_prefix.py
|
| 3406 |
+
edge Cargo.lock scripts/analyze_rust_filter_frame_prefix.py
|
| 3407 |
+
edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_filter_frame_prefix.py
|
| 3408 |
+
edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3409 |
+
edge crates/urt-gameplay/src/filter_loading.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3410 |
+
edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3411 |
+
edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3412 |
+
edge crates/urt-gameplay/src/bin/urt-filter-loading.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3413 |
+
edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3414 |
+
edge docs/research/qvm-filter-frame-prefix.json scripts/analyze_rust_filter_frame_prefix.py
|
| 3415 |
+
group rust-filter-frame-prefix scripts/analyze_rust_health_impulse.py
|
| 3416 |
+
group gameplay scripts/analyze_rust_filter_frame_prefix.py
|
| 3417 |
+
edge crates/urt-gameplay/src/filter_commands.rs scripts/analyze_rust_filter_frame_prefix.py
|
| 3418 |
+
edge crates/urt-gameplay/src/bin/urt-filter-commands.rs scripts/analyze_rust_filter_frame_prefix.py
|
xtask/src/lib.rs
CHANGED
|
@@ -1130,6 +1130,31 @@ mod integration_tests {
|
|
| 1130 |
("native_policy", "filter_insert"),
|
| 1131 |
("filter_lifecycle", "filter_export"),
|
| 1132 |
("filter_loading", "filter_time"),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1133 |
("filter_lifecycle", "filter_time"),
|
| 1134 |
("native_policy", "filter_time"),
|
| 1135 |
("qvm_format", "filter_time"),
|
|
@@ -1253,6 +1278,11 @@ mod integration_tests {
|
|
| 1253 |
("qvm-filter-insert", "filter_insert"),
|
| 1254 |
("qvm-filter-export", "filter_export"),
|
| 1255 |
("qvm-filter-time", "filter_time"),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1256 |
("qvm-filter-expiry", "filter_expiry"),
|
| 1257 |
("qvm-filter-load", "filter_load"),
|
| 1258 |
("qvm-filter-duration", "filter_duration"),
|
|
|
|
| 1130 |
("native_policy", "filter_insert"),
|
| 1131 |
("filter_lifecycle", "filter_export"),
|
| 1132 |
("filter_loading", "filter_time"),
|
| 1133 |
+
("filter_commands", "filter_add_command"),
|
| 1134 |
+
("filter_loading", "filter_add_command"),
|
| 1135 |
+
("filter_lifecycle", "filter_add_command"),
|
| 1136 |
+
("native_policy", "filter_add_command"),
|
| 1137 |
+
("qvm_format", "filter_add_command"),
|
| 1138 |
+
("filter_commands", "filter_remove_command"),
|
| 1139 |
+
("filter_loading", "filter_remove_command"),
|
| 1140 |
+
("filter_lifecycle", "filter_remove_command"),
|
| 1141 |
+
("native_policy", "filter_remove_command"),
|
| 1142 |
+
("qvm_format", "filter_remove_command"),
|
| 1143 |
+
("filter_commands", "filter_duration_export"),
|
| 1144 |
+
("filter_loading", "filter_duration_export"),
|
| 1145 |
+
("filter_lifecycle", "filter_duration_export"),
|
| 1146 |
+
("native_policy", "filter_duration_export"),
|
| 1147 |
+
("qvm_format", "filter_duration_export"),
|
| 1148 |
+
("filter_commands", "filter_expiry_admission"),
|
| 1149 |
+
("filter_loading", "filter_expiry_admission"),
|
| 1150 |
+
("filter_lifecycle", "filter_expiry_admission"),
|
| 1151 |
+
("native_policy", "filter_expiry_admission"),
|
| 1152 |
+
("qvm_format", "filter_expiry_admission"),
|
| 1153 |
+
("filter_commands", "filter_frame_prefix"),
|
| 1154 |
+
("filter_loading", "filter_frame_prefix"),
|
| 1155 |
+
("filter_lifecycle", "filter_frame_prefix"),
|
| 1156 |
+
("native_policy", "filter_frame_prefix"),
|
| 1157 |
+
("qvm_format", "filter_frame_prefix"),
|
| 1158 |
("filter_lifecycle", "filter_time"),
|
| 1159 |
("native_policy", "filter_time"),
|
| 1160 |
("qvm_format", "filter_time"),
|
|
|
|
| 1278 |
("qvm-filter-insert", "filter_insert"),
|
| 1279 |
("qvm-filter-export", "filter_export"),
|
| 1280 |
("qvm-filter-time", "filter_time"),
|
| 1281 |
+
("qvm-filter-add-command", "filter_add_command"),
|
| 1282 |
+
("qvm-filter-remove-command", "filter_remove_command"),
|
| 1283 |
+
("qvm-filter-duration-export", "filter_duration_export"),
|
| 1284 |
+
("qvm-filter-expiry-admission", "filter_expiry_admission"),
|
| 1285 |
+
("qvm-filter-frame-prefix", "filter_frame_prefix"),
|
| 1286 |
("qvm-filter-expiry", "filter_expiry"),
|
| 1287 |
("qvm-filter-load", "filter_load"),
|
| 1288 |
("qvm-filter-duration", "filter_duration"),
|