Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
d9c21f5
Add da router, and initial logic
eserilev Jan 28, 2026
4a9aaa2
Resolve merge conflicts
eserilev Jan 28, 2026
aba7d45
Resolve merge conflicts
eserilev Jan 28, 2026
de0d604
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev Jan 29, 2026
e9f9ad6
Small rename
eserilev Jan 29, 2026
3df2cf8
Add db boilerplate for payload envelope
eserilev Jan 29, 2026
c26ad96
small fixes
eserilev Jan 29, 2026
b10af22
Fix
eserilev Jan 29, 2026
bb9bfaf
fix
eserilev Jan 29, 2026
534e3c7
Merge remote-tracking branch 'origin/payload-envelope-db' into gloas-…
eserilev Jan 29, 2026
6ea9668
Some test fixes
eserilev Jan 29, 2026
1098f5d
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev Jan 29, 2026
d122561
Test fixes
eserilev Jan 29, 2026
72f0a7b
move commitments to bid
eserilev Jan 29, 2026
4e00426
Test only execute for glosa
eserilev Jan 29, 2026
0b92379
Remove state LRU cache for da checker v2
eserilev Jan 30, 2026
dee394c
Lint fixes
eserilev Jan 30, 2026
ec892bd
Merge branch 'gloas-move-commitments-to-bid' into gloas-data-availabi…
eserilev Jan 30, 2026
d047ace
new da checker doesn't need payloads
eserilev Jan 30, 2026
78c61a0
DA cache updated
eserilev Jan 30, 2026
e1439e6
Use module level imports
eserilev Jan 30, 2026
fadf12e
Merge branch 'gloas-move-commitments-to-bid' into gloas-data-availabi…
eserilev Jan 30, 2026
479fa3f
Remove unused error type
eserilev Jan 30, 2026
4e04399
Use module level imports
eserilev Jan 30, 2026
63e1e26
Cache the bid instead of the block
eserilev Jan 30, 2026
047599a
Fix CI
eserilev Jan 30, 2026
dae4529
Merge branch 'gloas-move-commitments-to-bid' into gloas-data-availabi…
eserilev Jan 30, 2026
0a111f5
Resolve merge conflicts
eserilev Feb 4, 2026
1661145
Clean up
eserilev Feb 4, 2026
2abb5f1
fmt
eserilev Feb 4, 2026
b5b5b0c
Rename
eserilev Feb 4, 2026
c606ba3
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev Feb 4, 2026
fa33577
Remove TODO
eserilev Feb 4, 2026
a6cdc41
Update beacon_node/network/src/network_beacon_processor/gossip_method…
eserilev Feb 10, 2026
fe602d9
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev Feb 10, 2026
abf0c33
Refactor
eserilev Feb 11, 2026
23a7dc5
Fix
eserilev Feb 11, 2026
3778e50
Fix
eserilev Feb 11, 2026
e55f2ff
Resolve merge conflicts
eserilev Mar 9, 2026
2f8e140
Resolve merge conflicts
eserilev Mar 16, 2026
55fa3b3
resolve merge conflicts
eserilev Mar 16, 2026
9cfe662
add payload stuff
eserilev Mar 16, 2026
c6b1299
temp chhanges
eserilev Mar 18, 2026
3e3e552
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev Mar 18, 2026
4c56bd3
remove pre exec payload envelope
eserilev Mar 18, 2026
2acbd2e
Add payload to cache
eserilev Mar 18, 2026
4d04ac1
update
eserilev Mar 18, 2026
83852db
refactor
eserilev Mar 19, 2026
285b7eb
Refactor
eserilev Mar 19, 2026
dacc2f0
cleanup
eserilev Mar 19, 2026
2ed5e0f
merge conflicts
eserilev Apr 3, 2026
3a5492f
initial straightforward merge changes
dknopik Apr 27, 2026
4535753
starting to cell-ize
dknopik Apr 27, 2026
4ef4c7d
some progress around reconstruction
dknopik Apr 28, 2026
3772d2f
some claude progress
dknopik Apr 28, 2026
132f94c
clean up claude progress
dknopik Apr 28, 2026
407fd27
impl missing_cells_for_column_sidecar
dknopik Apr 28, 2026
a03906d
fix remaining errors
dknopik Apr 28, 2026
60e1ded
Merge branch 'unstable' into gloas-payload-cache
dknopik Apr 28, 2026
c76eb3e
merge from unstable
dknopik Apr 29, 2026
215a07c
actually - store bid
dknopik Apr 29, 2026
ab1da0b
get rid of unneded type
dknopik Apr 29, 2026
d7f5e24
nuke router
dknopik Apr 29, 2026
58fd3dd
claude cont: error handling and wiring up
dknopik Apr 29, 2026
2d33545
error handling and wiring up
dknopik Apr 29, 2026
7cf76ac
clean up
dknopik Apr 29, 2026
c5ca824
merge from unstable
dknopik Apr 29, 2026
e742d0b
fix tests
dknopik Apr 29, 2026
ce00ae2
Use stable `if matches!` instead of `if let` match guard
dapplion Apr 29, 2026
bbffb80
Rewrite pending_payload_cache tests to use real public API
dapplion Apr 29, 2026
ae17107
fix test runs
dknopik Apr 30, 2026
bd8cfa3
Refine Gloas data column availability
dapplion Apr 30, 2026
0b7397e
Refactor
dapplion Apr 30, 2026
23d5be1
Fix pending payload cache test lint
dapplion Apr 30, 2026
4b1aab9
Allow large stack frame in proposer_boost_re_org_test
dapplion Apr 30, 2026
8e19955
Fix pending_payload_cache tests for sampling column filtering
dknopik Apr 30, 2026
361bc37
fix gloas tests
dknopik Apr 30, 2026
16a3dfb
fix events test
dknopik Apr 30, 2026
3e331ff
fix another bug
dknopik Apr 30, 2026
48b24e9
Use SignedExecutionPayloadBid directly in pending payload cache
dapplion May 1, 2026
4b76f4d
minor fixes
eserilev May 1, 2026
60093f3
minor fixes
eserilev May 1, 2026
e9ffd19
smol fixes
eserilev May 1, 2026
378eaed
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev May 1, 2026
fd1a8e1
use slot so we dont hit the cache twice
eserilev May 1, 2026
64c53c6
remove duplicate fn impl
eserilev May 1, 2026
33c250b
pending payload cache: restore vec-backed column shape
dapplion May 1, 2026
a4e8b68
pending payload cache: drop unused vec ctor arg
dapplion May 1, 2026
f7c7ed8
clean up gloas-payload-cache
eserilev May 1, 2026
82f2843
Merge branch 'gloas-payload-cache' of https://github.com/dknopik/ligh…
eserilev May 1, 2026
f14e7b1
remove unneeded field
eserilev May 1, 2026
aa531ba
yeet some comments
eserilev May 1, 2026
73ba763
Gloas: fix test failures (KZG verifier wiring, harness columns, WSS s…
dapplion May 1, 2026
dac8a6e
Gloas: fix test failures (KZG verifier wiring, harness columns, WSS s…
dapplion May 1, 2026
0ce0588
Address review comments
dapplion May 1, 2026
d75963b
Address remaining review comments
dapplion May 1, 2026
8510bb4
smol cleanup
eserilev May 1, 2026
2120ebb
smol refactor
eserilev May 1, 2026
5ce7c59
Rename validate_full_data_columns_with_commitments
eserilev May 1, 2026
cbe7bec
Update beacon_node/beacon_chain/src/pending_payload_cache/mod.rs
eserilev May 1, 2026
47bcd0b
Fix TODO
eserilev May 1, 2026
f30287b
Move pending payload cache pruning to finalization callback
dapplion May 1, 2026
b73a66c
Drop dead columns_available_timestamp, document load_gloas_payload_bi…
dapplion May 3, 2026
23159c5
gate sidecars right
dapplion May 3, 2026
a048744
pending_payload_cache: tighten test surface
dapplion May 3, 2026
a17ec17
kzg_utils: support Gloas data column reconstruction
dapplion May 3, 2026
d0209a6
Merge sigp/unstable into gloas-payload-cache
dapplion May 5, 2026
a077241
test(block_verification): mark payload received after gossip columns
dapplion May 5, 2026
cee7d03
No more box
eserilev May 6, 2026
102c02d
just pass the arc
eserilev May 6, 2026
01d51f2
dont panic
eserilev May 6, 2026
378a829
Typo
eserilev May 6, 2026
4741da5
Return invalid variant error instead of dropping silently
eserilev May 6, 2026
0212b87
add todo, remove uneeded ignore large stack frames
eserilev May 6, 2026
c514597
Add a test case for kzg verif
eserilev May 6, 2026
5393fda
return KZG verified data column
eserilev May 6, 2026
ef14859
Remove wierd comment
eserilev May 6, 2026
eab6855
Remove bad var name
eserilev May 6, 2026
895ed4a
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev May 6, 2026
f4d674e
Merge branch 'gloas-payload-cache' of https://github.com/dknopik/ligh…
eserilev May 11, 2026
8cc88ab
Simply is_complete()
eserilev May 11, 2026
dbd91b4
Remove incorrect doc comment about is_complete
eserilev May 11, 2026
08637ef
Correct doc comments about sampling columns
eserilev May 11, 2026
05bb34d
Exclude partials in status_str
eserilev May 11, 2026
7fac5b2
Updatge module level comments to reflect correct architecture
eserilev May 11, 2026
ddcb16e
Remove unneeded bid param
eserilev May 11, 2026
6f9a001
remove invalid scenario
eserilev May 11, 2026
8c707ec
Renamed to cache size
eserilev May 11, 2026
d2ea1b0
Add better comments
eserilev May 11, 2026
be500f4
Fix seen timestamp
eserilev May 11, 2026
4aae9bb
dont penalize peer for GossipDataColumnError::InvalidVariant
eserilev May 11, 2026
914aee5
Move get_or_reconstruct_blobs to test file
eserilev May 11, 2026
b59643a
simplify to use blob kzg_Commitments_len
eserilev May 11, 2026
f16c333
remove unused MaybeAvailableEnvelope
eserilev May 11, 2026
4e649bd
Replaced the unwrap_or_default() (which would silently use Slot(0))
eserilev May 11, 2026
0ea5a40
update comment for fulu -> gloas
eserilev May 11, 2026
973590a
PriorKnownUnpublished should still propogate columns
eserilev May 11, 2026
7e539c7
remove rename start_block_cache_maintenance_service
eserilev May 11, 2026
9e5fe03
wire up metrics appropriately
eserilev May 11, 2026
bf0aa93
Merge branch 'unstable' of https://github.com/sigp/lighthouse into gl…
eserilev May 11, 2026
cc95341
FMT
eserilev May 11, 2026
3355674
Revert commit "PriorKnownUnpublished should still propogate columns".…
jimmygchen May 13, 2026
13f971a
Address review comments re consistency check. Use single source of tr…
jimmygchen May 13, 2026
1a90970
Merge remote-tracking branch 'origin/unstable' into gloas-payload-cache
jimmygchen May 13, 2026
e879090
Fix clippy
jimmygchen May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions beacon_node/beacon_chain/benches/benches.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,21 @@ fn all_benches(c: &mut Criterion) {
)
.unwrap();

let kzg_commitments = signed_block
.message()
.body()
.blob_kzg_commitments()
.unwrap()
.clone();

let spec = spec.clone();

c.bench_function(&format!("reconstruct_{}", blob_count), |b| {
b.iter(|| {
black_box(reconstruct_data_columns(
&kzg,
column_sidecars.iter().as_slice()[0..column_sidecars.len() / 2].to_vec(),
&kzg_commitments,
spec.as_ref(),
))
})
Expand Down
420 changes: 269 additions & 151 deletions beacon_node/beacon_chain/src/beacon_chain.rs

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion beacon_node/beacon_chain/src/block_verification.rs
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,10 @@ pub enum BlockError {
/// TODO: We may need to penalize the peer that gave us a potentially invalid rpc blob.
/// https://github.com/sigp/lighthouse/issues/4546
AvailabilityCheck(AvailabilityCheckError),
/// The payload envelope's block root is unknown.
EnvelopeBlockRootUnknown(Hash256),
/// Optimistic sync is not supported for Gloas payload envelopes.
OptimisticSyncNotSupported { block_root: Hash256 },
/// A Blob with a slot after PeerDAS is received and is not required to be imported.
/// This can happen because we stay subscribed to the blob subnet after 2 epochs, as we could
/// still receive valid blobs from a Deneb epoch after PeerDAS is activated.
Expand Down Expand Up @@ -624,7 +628,8 @@ pub fn signature_verify_chain_segment<T: BeaconChainTypes>(
consensus_context,
});
}

// TODO(gloas) When implementing range and backfill sync for gloas
// we need a batch verify kzg function in the new da checker as well.
chain
.data_availability_checker
.batch_verify_kzg_for_available_blocks(&available_blocks)?;
Expand Down
16 changes: 13 additions & 3 deletions beacon_node/beacon_chain/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use crate::kzg_utils::{build_data_column_sidecars_fulu, build_data_column_sideca
use crate::light_client_server_cache::LightClientServerCache;
use crate::migrate::{BackgroundMigrator, MigratorConfig};
use crate::observed_data_sidecars::ObservedDataSidecars;
use crate::pending_payload_cache::PendingPayloadCache;
use crate::persisted_beacon_chain::PersistedBeaconChain;
use crate::persisted_custody::load_custody_context;
use crate::shuffling_cache::{BlockShufflingIds, ShufflingCache};
Expand Down Expand Up @@ -987,6 +988,7 @@ where
)
};
debug!(?custody_context, "Loaded persisted custody context");
let custody_context = Arc::new(custody_context);

let beacon_chain = BeaconChain {
spec: self.spec.clone(),
Expand Down Expand Up @@ -1062,14 +1064,22 @@ where
data_availability_checker: Arc::new(
DataAvailabilityChecker::new(
complete_blob_backfill,
slot_clock,
slot_clock.clone(),
self.kzg.clone(),
Arc::new(custody_context),
self.spec,
custody_context.clone(),
self.spec.clone(),
enable_partial_columns,
)
.map_err(|e| format!("Error initializing DataAvailabilityChecker: {:?}", e))?,
),
pending_payload_cache: Arc::new(
PendingPayloadCache::new(
self.kzg.clone(),
custody_context.clone(),
self.spec.clone(),
)
.map_err(|e| format!("Error initializing PendingPayloadCache: {:?}", e))?,
),
kzg: self.kzg.clone(),
rng: Arc::new(Mutex::new(rng)),
gossip_verified_payload_bid_cache: <_>::default(),
Expand Down
19 changes: 19 additions & 0 deletions beacon_node/beacon_chain/src/canonical_head.rs
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,25 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
.start_slot(T::EthSpec::slots_per_epoch()),
);

// Prune the Gloas pending-payload cache. Anything older than the data-availability
// boundary cannot still be in flight; finalised entries are also safe to drop.
if self.spec.gloas_fork_epoch.is_some() {
let finalized_epoch = new_view.finalized_checkpoint.epoch;
let current_epoch = new_snapshot
.beacon_state
.slot()
.epoch(T::EthSpec::slots_per_epoch());
if let Some(min_epochs_for_blobs) = self
.spec
.min_epoch_data_availability_boundary(current_epoch)
{
let cutoff_epoch = std::cmp::max(finalized_epoch + 1, min_epochs_for_blobs);
if let Err(e) = self.pending_payload_cache.do_maintenance(cutoff_epoch) {
error!(error = ?e, "Failed to prune pending payload cache on finalization");
}
}
}

if let Some(event_handler) = self.event_handler.as_ref()
&& event_handler.has_finalized_subscribers()
{
Expand Down
75 changes: 59 additions & 16 deletions beacon_node/beacon_chain/src/data_availability_checker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ use crate::data_column_verification::{
GossipVerifiedDataColumn, KzgVerifiedCustodyDataColumn, KzgVerifiedDataColumn,
verify_kzg_for_data_column_list,
};
use crate::kzg_utils::validate_data_columns_with_commitments;
use crate::metrics::{
KZG_DATA_COLUMN_RECONSTRUCTION_ATTEMPTS, KZG_DATA_COLUMN_RECONSTRUCTION_FAILURES,
};
Expand Down Expand Up @@ -490,8 +491,7 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
AvailableBlockData::Blobs(blobs) => verify_kzg_for_blob_list(blobs.iter(), &self.kzg)
.map_err(AvailabilityCheckError::InvalidBlobs),
AvailableBlockData::DataColumns(columns) => {
verify_kzg_for_data_column_list(columns.iter(), &self.kzg)
.map_err(AvailabilityCheckError::InvalidColumn)
verify_columns_against_block(&self.kzg, available_block.block(), columns)
}
}
}
Expand All @@ -504,13 +504,17 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
available_blocks: &[AvailableBlock<T::EthSpec>],
) -> Result<(), AvailabilityCheckError> {
let mut all_blobs = Vec::new();
let mut all_data_columns = Vec::new();

for available_block in available_blocks {
match available_block.data().to_owned() {
match available_block.data() {
AvailableBlockData::NoData => {}
AvailableBlockData::Blobs(blobs) => all_blobs.extend(blobs),
AvailableBlockData::DataColumns(columns) => all_data_columns.extend(columns),
AvailableBlockData::Blobs(blobs) => all_blobs.extend(blobs.iter().cloned()),
AvailableBlockData::DataColumns(columns) => {
// Each block has its own commitments. For Gloas they live in the bid; for
// Fulu they live inline on the column. Verify per block and let the helper
// pick the right path.
verify_columns_against_block(&self.kzg, available_block.block(), columns)?;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The early return is fine for correctness, however worth noting that we lose the cross-block KZG batching, and could be a slight performance regression.

}
}
}

Expand All @@ -519,11 +523,6 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
.map_err(AvailabilityCheckError::InvalidBlobs)?;
}

if !all_data_columns.is_empty() {
verify_kzg_for_data_column_list(all_data_columns.iter(), &self.kzg)
.map_err(AvailabilityCheckError::InvalidColumn)?;
}

Ok(())
}

Expand Down Expand Up @@ -605,9 +604,21 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
metrics::inc_counter(&KZG_DATA_COLUMN_RECONSTRUCTION_ATTEMPTS);
let timer = metrics::start_timer(&metrics::DATA_AVAILABILITY_RECONSTRUCTION_TIME);

let columns: Vec<_> = verified_data_columns
.into_iter()
.map(|c| c.into_inner())
.collect();
// Fulu columns carry their commitments; reconstruction needs the count to drive the
// per-blob recovery loop.
let kzg_commitments = columns
.first()
.and_then(|c| c.kzg_commitments().ok().cloned())
.ok_or(AvailabilityCheckError::InvalidVariant)?;

let all_data_columns = KzgVerifiedCustodyDataColumn::reconstruct_columns(
&self.kzg,
&verified_data_columns,
columns,
&kzg_commitments,
&self.spec,
)
.map_err(|e| {
Expand Down Expand Up @@ -676,6 +687,35 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
}
}

/// Verify a batch of data columns belonging to a single block, picking the right commitment
/// source for the block's fork (Fulu: inline on column; Gloas: from the embedded payload bid).
fn verify_columns_against_block<E: EthSpec>(
kzg: &Kzg,
block: &SignedBeaconBlock<E>,
columns: &[Arc<DataColumnSidecar<E>>],
) -> Result<(), AvailabilityCheckError> {
if columns.is_empty() {
return Ok(());
}
if block.fork_name_unchecked().gloas_enabled() {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a little confusing that we're handling gloas in the old da checker, perhaps this logic could be in the new one.

This is minor though - we could clean it up when we remove the old da checker also.

let commitments = block
.message()
.body()
.signed_execution_payload_bid()
.map(|bid| bid.message.blob_kzg_commitments.clone())
.map_err(|_| {
AvailabilityCheckError::Unexpected(
"Gloas block missing signed_execution_payload_bid".to_string(),
)
})?;
validate_data_columns_with_commitments(kzg, columns.iter(), commitments.as_ref())
.map_err(AvailabilityCheckError::InvalidColumn)
} else {
verify_kzg_for_data_column_list(columns.iter(), kzg)
.map_err(AvailabilityCheckError::InvalidColumn)
}
}

/// Helper struct to group data availability checker metrics.
pub struct DataAvailabilityCheckerMetrics {
pub block_cache_size: usize,
Expand Down Expand Up @@ -874,10 +914,13 @@ impl<E: EthSpec> AvailableBlock<E> {

match &block_data {
AvailableBlockData::NoData => {
if columns_required {
return Err(AvailabilityCheckError::MissingCustodyColumns);
} else if blobs_required {
return Err(AvailabilityCheckError::MissingBlobs);
// For Gloas, DA is checked for the PayloadEnvelope, not for the block.
if !block.fork_name_unchecked().gloas_enabled() {
if columns_required {
return Err(AvailabilityCheckError::MissingCustodyColumns);
} else if blobs_required {
return Err(AvailabilityCheckError::MissingBlobs);
}
}
}
AvailableBlockData::Blobs(blobs) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use types::{BeaconStateError, ColumnIndex, Hash256};
#[derive(Debug)]
pub enum Error {
InvalidBlobs(KzgError),
MissingBid(Hash256),
InvalidColumn((Option<ColumnIndex>, KzgError)),
ReconstructColumnsError(KzgError),
KzgCommitmentMismatch {
Expand All @@ -23,6 +24,7 @@ pub enum Error {
RebuildingStateCaches(BeaconStateError),
SlotClockError,
InvalidAvailableBlockData,
InvalidVariant,
}

#[derive(PartialEq, Eq)]
Expand All @@ -38,6 +40,7 @@ impl Error {
match self {
Error::SszTypes(_)
| Error::MissingBlobs
| Error::MissingBid(_)
| Error::MissingCustodyColumns
| Error::StoreError(_)
| Error::DecodeError(_)
Expand All @@ -46,7 +49,8 @@ impl Error {
| Error::BlockReplayError(_)
| Error::RebuildingStateCaches(_)
| Error::SlotClockError
| Error::InvalidAvailableBlockData => ErrorCategory::Internal,
| Error::InvalidAvailableBlockData
| Error::InvalidVariant => ErrorCategory::Internal,
Error::InvalidBlobs { .. }
| Error::InvalidColumn { .. }
| Error::ReconstructColumnsError { .. }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ impl<E: EthSpec> PendingComponents<E> {
.unwrap_or(false)
}

/// Returns the indices of cached custody columns
/// Returns the indices of cached sampling columns
pub fn get_cached_data_columns_indices(&self) -> Vec<ColumnIndex> {
self.verified_data_columns
.iter()
Expand Down
Loading
Loading