254,385 Commits over 3,990 Days - 2.66cph!
Added button to reset tutorial in options menu
Change default flush interval from 1 min -> 5 min
Store session start timestamp (when demo recording started) in header
Use connection Guid instead of dictionary in player lookup (to avoid players reconnecting causing issues)
- change DemoPlayerInfo.SteamId -> Guid (ulong technically)
Change path to `server-demos/{serverid}/sessions/{sessionid}/{chunkid}.sdem` (to make it easier to navigate in azure)
Fix compressedSize in demo header being incorrect (FileStream.Length > FileStream.Position)
Switch from `demo_server_id` -> `server_id` convar
- save across restarts
- set server_id on startup if not set
Remove `upload_token` convar, rely on putting SAS token in upload endpoint for now (can polish later once we figure out how we want to refresh tokens)
Fix hardcoded "test" container and use the container from the SAS url
Added loading spinner to show that a 3D skin view is loading. Added a callback for skin set failure to hide the loading circle.
Fixed rug skins not showing up
Fixed more issues with skins not loading or loading incorrectly
Updated tutorial welcome prompt with video asset + slight formatting and layout changes
Merge from main -> full_server_demos
Refactor into multiple .cs files as the code has grown
IO entities snapping first pass
When deploying any electrical/industrial item, press left shift to align and snap to nearby entities
Text tabs quick start
Working fixed with tabs
Work in tab stops during line layout
Tab stops are font width * 4 spaces wide
No need to collapse tabs here, we do it with WhiteSpace
Fix tabs not always lining up, use measured space width
Fix tabs not always lining up, use measured space width
Merge from tutorial_island
Added debug.cleartutorialforplayer server convar
If a player gets stuck in the tutorial for any reason, this will delete the island and reset the player back to it's regular state on the mainland (will also kill the player if they are alive)
Cleaned up kill warnings when cleaning up the tutorial
Updated convars; fixed NaNs and NREs
"Reset to Default" in the editor will look for DefaultValueAttribute, then get proper instance default intead of just bailing
Fix most skin viewing being broken
No need to collapse tabs here, we do it with WhiteSpace
Fix window shader not compiling
Updated Tool Cupboard mission wording
GatherVisibleLightsGPU
Move depth prepass to be the first pass of everything, we'll use it on lightbinner for light culling from now on
Do lightbinning for light culling on render thread when a layer first wants to request lights, guarantees we have a depth pyramid by then
If we are on a render thread just do a simple flush for ForceFlushGPU(), we just want the GPU to finish it's work, not clean up things
Run lightbinner calculation in render thread & actually on lightbinner layer
Light culling tests with depth & light radius on compute shader
Flush rather than ForceGPUFlush on CReadGPUBuffer::WaitUntilRead()
Finish light visibility test shader, rewrite to be cleaner, temp pass PerViewConstantBuffer_t for g_vDepthPsToVsConversion on layer
Fixed viewmodel lingering for several seconds when cinematic starts
Tab stops are font width * 4 spaces wide
Clear rendertexture assignment when SkinViewer is destroyed
Work in tab stops during line layout
Typo fix
Added ability to check existing inventory when a craft mission objective starts, will mark that step as completed if the player already has a target item in inventory
Applied new behaviour to craft campfire objective
Remove "Don't allow tutorial allowance to go down" log
missed a few uploads
and a couple more
Merge from /main/media_projects/deckard
Cinematic scene file tweak
Upload and clean up + move wip files to construct
Hash view ID to FindOrCreateFrameBufferScratchTexture as well to solve collision when we have multiple views with same resolution, eg with splitscreen
Fix dynamic reflections and AO in viewported views
Add compiled shaders for viewport shading fixes
Texture barriers for SSR in multiple viewports
Temporary Panel related fixes (OnRemove, SetParent)
Temporary Panel related fixes (OnRemove, SetParent)
Remove this for now, sus is later
When OwnerTransfer is Request, make actual requests to the host for Drop/Assign/Take ownership and if host approves, then host will send the messages to everyone to take that action. Each message will then validate if was received from host
Default CanSpawnObjects to true for now
Make sure CanSpawnObjects is synchronized to clients when set from host via ConnectionInfo
Try using v4 actions for everything
Downgrade Linux/Mac to v3
Check for null in Panel.SetParent
Rollback download-artifact to v3 as well
Rollback download-artifact to v3 as well
Downgrade Linux/Mac to v3
Check for null in Panel.SetParent
Invalidate input / output nodes when changing parameters
Some renaming. Set OwnerTransfer direct on GameObject instead of method on NetworkAccessor
Try using v4 actions for everything
▉▄▇▇▄ ▋▇_▍▊▋▍▋█▊▌▌▉▍▄▆
▇▄█▅▄▌▄ ▇▍▌▉█▉▌▍▆ ▍▊▊ ▋█▉▍█▋▇ ▇▇▉ ▊▇▌'▋ ▌▍▉▊ ▆▇ ▅▊▍ ▄▋▆▉▆▉▊▉▌
▌▆▇ ▌▋▄▍▇▋▉_▋▋▇▉ ▋▊▋▌▇▊▊▇█▄ █▉▅▆▆▄▋
▊▄▋█▊█▍▅ ▉▊▍ ▊▊▍▅ ▊▅▉▌▉▊ ▆▌▆▉▋▇▇ ▆▌▊▅▊▋ ▄▋▊▅ ▄▆ ▋▋▌▄▋▋▌▄
▇▍▄ ▋▇█▄ █▆█▍▌▅▉ ▍▊▍▋ ▍▍▍█▍▄█ ▊▌▍▇▌ █▌▍▆
▄▆▌▍▌ ▅▊▊▉_▆▆▆▄▆▋▆▄_▄▋_▌▅▌▍▍ ▇▊▊ ▄▄▇▍▄▌▌█ ▊▌▄▍▌▆ ▆▍▋▌▅▉▉▆▅
▋█▅ ▅▅▆▇ (▌▉▅, █▉▉ ▅▆▅█ ▆▋▄█▍▄▌▉) ▌▍▅▅ ▆▅ ▅▌ ▍▉-█▍▋▋▆ ▇▍▉ ▋▇▋▋ ▋▉ ▊▋▇▌ ▅▊▌▇▆▉▆▆. ▅▋▇▍▇ ▊▊▉▋▅▊█▉▋▉ █▇▉ ▌▅▅▊██▋ ▆▋▆▋ ▄▋▆▉▍▅ ▆▅ ▋▍▄ ▄▅▋█▄▌▇▇▅.
▇▄▊▋▄▅/▉▆▌▆ ▅▍▇ ▌▋██▍▉ ▊▇▆▉ ▊▋ ▄▍▍▍ █▍▍▇ ▅▇▍▄/██▌▊, ▍▆▉ ▌▄▋▇'▄ ▄▊▍▌▋ ▌▅▉▄. ▍▍▅ ▉▆ █▆▅▊. ▅▉ ▋█▍█ .▊▄▇ ▄▍▋▋▇ ▊▍▍ ▌▍▅ ▊▆ ▆█▄▉▉▋▄▊▌▆ ▊█▊▌ ▇▊▊▉▅▋█ ▄▊▆▅▊▉ ▊▇▊▇▄▄▌.
▆▆▇▇▍ "▍▍▋▅▊▄ ▆▋▋▉▇▅█ ▄▌▌▅▋'▋ ▇▌▅▇▇" ▅▍ ▊▇▋▉▄▆▆▊▅ ▋
▋▍▍ -▅▍▍▋ ▄▄ █▍▄▅▄▅█▊▍ ▄▋▉ ▇▄▋█▌▍, ▅▉ ▅▍▌ ▌▅▄
▆▌▉█▍ ▇▇▇▋ ▄▊▆▊█▉▊ ▆▉█ ▅▇▍▆▋▄▍ ▉▉ ▌▉▅▅▍▄, ▍▊▄▉▅▇▆▄▇ ▊▋ ▊▇▋▍█▊▆ █▄▊▇▉▌█▍▌ ▌█▅▌█▇▊ ▉▌ ▉▋█▄ ▌▇ ▉▊▍▇, ▊▌▉█ ▌▌ ▋▌█ ▊▅▅▄▅▉█ ▊▅▌▇▇▋
▆▅▍▍ ▌▇▆▇▋ ▍▍ ▄▆▍ -▆▄▆▄ ▊█▅ ▍▋▇▋▆█, ▇▊█ ▋▉▄▍ ▉██ ▍▄█▊▅▌▆ ▆▍▌ ▉▆▊▍
▋▊▍▉▇ █▉▆▉▍▌▋ ▆▅▇▄ ▇█▌▉▆▍▆ ▋▄ ▄█▅▋▇▌ ▅▍▉▄▍▅█ ▆▄▍▋ ▉█▌▇▊▅▍▌▉
!▅▇▅▊▌ █▅█▇▍██ ▅▄ ▋▋▋▄ █▍▍▅ ▌▉ ▉█▋▍▊█▆/
! ▆▌▌▋▌▋▌ ▆█▍▍▍▄▉▇▇ █▅▊▌▄█▍▊ ▄▉▉▅ ▇▊▆▋▌.▊▅▉▇▇▌▍▌
▌▍▍▍▆▋▄ ▅▅▇▌▄ ▉▆ ▋▍▅▋ ▆▆ ▋▌ ▌▊▅▄ ▇▇▋ ▍▅▆▊▍▅▉ ▍▊▋▋█▍
▆▆█▋▇ ██▊▆▊▊▋▅_▄▄▇▌▅
█▋█▅▆ ▉▇▉▄.▅▍▉▍▉▋▋▊▉▅█▊▌▌▅▋▉▊▍▌
▅█▊▌▉ ▆ ▋▉▄▄▌▇▋█▆ (▊ ▋▊▄▍▇/▇█▅ ▇▉▉), ▌▆▇▊▍█▋ ▌▊▇▊, ▇▆▄▆▉ (▉▆▄▍▇), ▉█▄▌▉ (▍▉▋▄█)
█▄▋▌▆▋ ▇▍▌▄▊▉.▇▄▇▋▍▄▌▍▌▆▉▆▇▌▇ ▌█▉▅ ▄▊▌▅ ▆▉▅▍▌
▅▇ ▆▌▊▍ ▄▄█ ▌▄ █▍▄▊▅
▉▉▉██ ▉█▇:▍▊▍█▌▄▆▋▅▄▌█▄▊▉▇
▋▆▇▊▉ ▊▄▊▆▍▋ ▄▊▉▇▊▌ ▌▍▄ ▄▉ ▅ ▇▉▆▇ (▌▆▅ ▅▌)
▄▆▋▅▅ ▌▌▆▉▆▆▌ ▇▅▅▊ ▊▅▉▆ ▊█▆▅ ▅▄▄▆▇▆▇▅ ▌▌▄█▋▆▉▄ ▄▋ ▉▌ ▇▆▄█▅▋▅▄ ▉▍▅▉
▍▉▍▅ ▌▉▍▇▍ ▄ ▄█▅▊▌ █▊▉▅▍▍ █▋▌▍▉ ▅▉▄▇▉▍▋ ██ ▆▆█▅█▌▅ ▍▆ ▆▉▇█ ▍▋█▍▋.
▆▊▉▋▅ "▅▆█▇▆▉█▅" ▋▊▆▉▅ ▆█ "▋▄▋▉▉▊_▇▆▊" ▊▆▍▊ ▅▉▌▌█
▅▆▌ ▄▉▍▇▋▅▌ ▋▆▇▉ ▅▉/▄▅▌▄ ▆█▋ ▍▌▊▍ ▊▌▍
▆▋ ▇▅▄ ▍▉▋ ▉▌ ▆▋▉▉▉▇ ▆▋ ▋▄▅ ▇▄▌▅▋▉▍▆ ▌▍▊▌▅▊_▍▍▆▉_▆▄ ▇▉▄▌▉▌▆██
!█▆▍▌▋ ▌▋▉_▍▇█▊/▉▋▍_▉▌▇▌▉█▄▅█▍, ▌▌▍▄▊▌ ▆█▋_█▊▊▄█▌▆▇▇▅
!▌█▌ ▋▅▆▊▉▇▌▍ ▇▄▉▌ ▍▍▋▉_▆█▅▅ ▋▇▆▍▌▍▄ ▇▄▋▄▊█▄▄ ▌▋ ▍▇▍▊▌▄▉▅
!▅▉▌█▌▄▋▊ ▇▄█▌▇▌▉▇ █▌▊▄ ▌█▍▍▍▋▆▅▆█▌▇▋▋▊█▅▌▆▊
!▆▍▅▍▊▍█▅ ▋▊▅▍▇█▇ ▋▉▍▉ ▅▌▉█▌▆▄:▅▉▅▅▅▊▊▄▋▌▆▍▆▄▇▅
!▇▊▇ ▌▍▆█ ▍▌▆▇▄▌▋▉ ▆▊▉▋ ▌▍▊▉▉▇ ▇▋██▊▊▉▋ ▊▆▌▉▇▅▍▄▆ ▇▌▇▉▆▄▇:▄▇▊▆█▆▋▅▋▉▉█▄▉▆
!▉▌▇ ▅▉▋▊▇█▋▋ ▊▇▊▆ ▋▅▊ ▅▇▇▍▆▆██ ▋▋▌▉█▄▋ ▄▆▉▆▄▉
!▊█▍ ▆█▋▉██▉▋ █▌▍▅ ▍▉▉_▄▋▄▍▌▉▌ (▇▋ ▍▆▇▊▉▄▄▉ ▍▇)
!▋▋▉ ▌▄▆▆▄▄▊ ▅▉▅▋ ▍▆▇▉▊▉█.▇▅▄▉▆▅▌▆█▋▇▆▉▌▌
!█▌▄▊▊ █▋▊▉█▄▊ ▋▆▊▉ ▌▇▌▇▉▉▇:▋▅▇▌▊▌▋▆▉
! ▌▄▋▉▉ ▍▍ ▄▉██▅▆█ ▅▍▋▅ ▉▌▋█▆▌▉▆:▉▇▉▅▋▌▅█▋▊█
!▅▄▍ █▌▋▄▅▅▉▋ ▅▍▍▋ ▆█▌▇▌▌▄:▇█▉▉█▋▊▍▋▋██▊▅▊▇
!▌▋▅ ▋▇▊▋▅▊▅▄ ▊▋▉▇ ▌▉▄▋█▍▇▆ ▇▉▆▋▍▋█ ▇▉▉▄▍▊▊ ▅▊▊▊█▍▆
!▊▄▅▆▇ ▊▌▉▇▅█▉ █▌▆▄ ▌▌_█▅▌█:▄▋▉▊▆█▇▄
!▌██ ▍▋█▅▉▊▅▊ ▋▆█▉ █▅▌▌▊▋ ▌▄▋█▅▄▇▋▊
▇▇▅▆ ▇▄▅█▄ ▋▍▇▆ ▆▉▄▆▉▆▅██▊▋▇▍█▊ ▉▊█ ▋▌▍▋ ▆▊ ▍▄▉▆▋▋ ▄▊ █▊ ▋ ▆▇▌ █▅▉▆▍▋▇
▍▇▉▉▍█ ▆▆▉_▇▉▇█▇█▋▌_▋▊▉▅▌▇▊.▇▆▋
▄▉▆▊▋█ ▇▍▊▍
▊▋▆▌ ▇▍▇▆▍▍▉▍█▊ █▇▆▅▅▄▌▅ ▊▋ ▆▋▆▊▋▍▄▇▌▋ ▆▍█▋▌▍▄█
!█▆▅▅▅▉▆ █▅▅▌ ▊▄▉▄▉▊ ▊▊▊█▄ ▌▆▅ ▊██▌▉▇▅▄
█▊█▉ ▄▉▋ ▇▇▋▌█▅▊▊▍ ▍▅▅▆▇ ▄██▍▄█▄▌▉▊▌ ▊▊▊▌▊▍▉ ▄▍▇▄ ▆▍▌▍▄▌▉▍
!█▅▍▊▇ ▅▍▊▄▅▊▉▌ ▄▄▋█ ▍▋▆▍▉▄▇▍▍ ▆█▅ ▄█▆▆▉▆▊▋▍▇▋▊▇
!█▍▇▌ ▆▅▍ ▄█▄▄▇▄ ▌▄▊ ▊█▍▉ ▉▄▊▇▆▆▌ █▄▉▊▄▉▊▄▅
!▄▅▊▄▉ ▄▉ █▆▍▉█▉▅ ▇▌▋▅ ▌█▆▍▉▄▇█▄▍▇▍▋▇▋▍▊█▋▍
!▍██▆▅ ▆▊█▌▌▅▌▇ ▇▋▊▍ ▄▉▊▊▄▍:▉▄▆▅▅▋▊▉▌▄/▋▆▇▍▍▋▇
!▇▍▊▅▋ ▉▊█▉▄▍▉▍ ▅▇▌█ ▍▅ ▍▄█▊▅▇▇▋▉▅ █▊▍▇▆▇▊█▌
!▋▉▊▋▉ ▊▊▄▍▍█ ▇▌▄▋▌▆▌ ▆█▋█▋ ▄▇▅█ ▄▅▊ ▌▊█▊ ▅▊▇▇▍▄
!▉▇█▋▅▋▊▊ ▅▉▍██▍▄▇▋ ▉██▆▊▌▆ ▅▌▌▅ ▌▅█▍▍▅▍█▍▄:▍▉▉▌▌▊▊▇▅▉
▊▌▌▋ ▍█▌▍▉▆▉ ▆▍ █▋▄ ▄▄▉▆▄▊█▋ ▊▌▌▇▋ ▆▉▌▊▇▉▄▇ ▋▄█▇▍▍▊, █▊▉ ▅▄▋▉ ▊▌▍█▄ ▇▅▄▄▉ █▅▆▊▋▉▊▍▋▋▇ ▍▄▍▄▋▋▆ ▍▇
!▋▇▍ ▋▍▍▋▌█▊▆ ▊▄▌▌ ▌▊▄▋▄▍▅▇▄ ▆▊▌▄█▇▊▌ ▅▋▌▅▅▉▊
!▋▌▌ █▅▉▊▍▅▄▆ ▄▋▉▍ ▇▊ ▄▍█▇▅▋█ ▅▍▇▉▇▄▋▊▄
!▇▍▆ ▄▋▆▉▉▊▊▍▅ ▆▍▇▅▇▆▄▆ ▄▇▊▄ █_▇▅▅▅▊▅▇
!▉▄▇▉▊ ▆▌▌▇▍▊▉▌ ▆▌▄▄ ▇▍▌▊▇/▍▄▇▅▊▇▄▇█▄█▉▉▆▉▋█▄▇▆
!▍▅▋▅▆ ▆▉▄▅▋▋▆▋▆▄ ▇▆▉▊▉▋▍█▊▄
▆▊▉ █▆▌▍▉/*.▇█▌ ▇▅ ▌█▌ ▄▆▋▇▆▌▇▆▆
!█▍█▋▉ ▍▊▄▄▄▉▍▉▌▌ ▋▋▇▋▆▄▄▋▅ ▊▊▋▋▇▌ ▇▆▇▆▋ ▍█▋▌▉▅▆▅▌▍
▍██▌▉ ██▊▍▅█ ▆▆▄ ▌▅▍▋▆▊▆ ▉▆▄ ▌▇▍▉▆▅▋▍▌▆ ▋▅ ▇▌▌▇ ▍▊▇▄▇
!▋▅▊'▍ ▇▅▉▌▅ ▊▇▅▇▍ ▅█ ▌▇▌▇ █▇▄ ▇▊▌ ▄▍▌▋▉▅▆
▋▅▅'▇ ▊▌▍▆▄▋ ▊█▍▍▍▊▌ ▄▆▉▊▌█▅▇▆ █▅▊▍█▄▅ ▍▊ ▌▄▅▆▉
▌▅▇▉▇▌ ▊▌▅▆▄▊▆ ▊▉▌▋ ▍▍▇▇▌▊ ▅▆▉▆ ▄▇▄▉▊▌▋▊
!▉▉▌▋█ ▊▊▍▇▍▌▋▉ █▋▅▄ ▆▌_▅▄█▆▇▌▊
!▊█▅'▋ ▇▌▉▍▍▇ ▌▅█_▋▋▌/▇▅█▌▊▊▉▌██ ▍▉▊▅▆▉▍▌
▍▅▌▊▉ ▄▆▊██▆ ▌▋▅█ ▅▄▄▌▄▍▄ ▌▆ ▆▍▌▄ ▇ ▌▄▇
!▆▊▋▊▄ ▋▊ █▊▄▅▅▉▉▊▋ ▄█▄▆▊▍▌▌
▆▊█▊▅▅▇ ▉█▍▊ ▄▇▌▅▇█ █▇▍▌ ▋▊▊▆▅ ▍▌▋▌▊▇
!▌▌▇▇▇ ▄▆█▊▊▊▊▍ ▊█▆▇ ▋▋▆▉▌▄ █▄▋▇▄▆█▌
▊▆▇▆ █▉▋▄ █▅▍▆▆ ▅▍▊▊▊▋▉▄▄
!█▋▍▌▌ ▇▉ ▊▆▆▆▋▄▇ ▊█▍▋ ▉▋▇▅▉▊▋▇▄▅▋▇█▍▋▉▌▉
▆▊▊ ▇▉▋▌▋▄ █▄ ▊▄▆▋ ▄▍▇ ▊▆▅▇ ▄▉ ▇█▍, ▍▋▆ ▄██▄ ▅▇▄▅▆▊ ▇▌▉ ▇▆
!█▄▉▉█ ▍█▌▊█▌▉ ▅▄▄▌ ▍▄▋.█▊▅▄▄█▍▌▅▄▍▇▋▋▆
!▍▇█▇▆ ▆▊▉▌▉▆▋▍▅ ▅▌▇▋▌▌▊ ▆▄█▅ ▉_▅▆▌▊▄▅▋▌▅▋▇▉▌▉::▌▄▇█▋▊▍
!▋▄▆▉▉▍▌ ▉▊▇▍▆▊▅▇▋▅ █▅▄▄▍▇█ ▋▍▇▄▊▍▉▋ █▉█▆ ▉▅▉ ▆▌▇███▇▅
!▇█▆▅▍▊▊ ▌▋▊▋▋▊▊▌▌▋ ▋▅▋▄▊ ▄▅▄▍ ▍▅ ▋▉ ▍▍█▌▍▉█▋ (▉▅▋ ▋▊▉▋ ▇▍▉▄█▊▊)
!▆▉▄ ▊▇▅▅▄▊▉▅▅▋▌▇▌▋ ▆█ ▍▆▄▍ ▇▄▉▇▊▄
!▇▄▆▌▇ ▊▌▋▆▅▇▊ ▉█▆▊ ▉▌▍▍▅▌▌▄ ▋█▆▉▊ ▊▌▋█▄▇ █▌▇ █▅▉▄_█▄▅▇▊
!▉▋▋█▋ ▇_▋▌▉▆▆▅▌█▆▄▉▇▉▅▉ ▅▋▌▅▇▌▇▄ ▇▋ ▌▇▋▋▌ ▍▅▅▇▋▅▋
▆▊▅▉ ▋▇ ▍▍▋▉ ▆▅▇▄▍▆▇ ▉▇▋▅█ ▇ ▋▅▊ ▇▅ ▇▅▆▇█▇ ▉▅ ▄▌▄▄▅
!█▄▇▅▊ ▇▌▄▌▋▋█▇ ▊▋▆█ █▄▍▌▉▉▇ ▌▊▄
!▉▋▆▉█ ▇▊▊█▄▉█▇ ▉▄▉█ █▍▄▋▋▍▉▇▄▄ ▆▍█▍▇▍▇▇
!▇▉▅▆▄▊▍▆▆▌▍▊█▋▍ ▅▌▌▉▆ ▋▌▋▅█▆ ▇▋▄▄▆▉▄
▆▋▍▆▅ ▌█▌█▊▊█▇▉█ ▍▆▄█ ▇▄▉█▌▄.▌▋▆▅▆▆▊
█▊▆▄▄▍ ▋_▍▅█▇▅▄▊▄▊▍::▋▋▍▋▅ ▄▊ ▆_▅▆▆▄▅
!▊▆▇▍▄ ▋▇█▍▇▇▉▆▊ ▆▇▋▇▌▅▇█ █▇▍▆ ▉▉▋▍▋█ ▌▄▋ ▅▋▅▊▆▇█▌
!█▉▆▍▇ █▍▇▌█▍▋ ▆▋▄▄ ▋▅▋▊▍▊▍▊
!▅▍▅▉▊▊▉▋ ▍▉▍▋_▋▇▆▅▌▉▌▍▍▆█▇▋▄▌ ▅▉▋▌▌▊ ▊▋█▆█▋▅▍▆▌▋▋▇▇▇▍▉▌▇▋▍▋▌█▋
!▋▉▌█▆ ▅▊▅▅▄▊▋▌ ▇▌▊▍ ▊█▋▉ █▋█▅▍▌█
!▄▊▌▌▍ █▊ ▅▇▉▍▋▄▊ ▅▆▋▆ ▋▉▉▅▍▄█_▋▆▇▌▇▆▆▆▆
!▄█▅▋▋ ▇▋▊▆█▊▋▊ ▌▆▉▋ ▍▆▇▍▍▋▌▇▆▆▆▇▍▆▋█▌▉▋▄▍█
▇▌▌▌▉▇▋▄▇▅▇▊▇▍▌▆▅▋▇▇▉▅ █▇▇ ▅▍▆▌ ▇▉ █▋▉▍▉▅ ▅▆▉ ▊▆▌▅▄▇ ▌▋▊▉█▄ ▋▉ ▌▅▇█▉▇ ▇▉▅▄▊▌
▍▌▄▆ ▅▄▉▋ ▋▆▇ ▇▇▍▇▅▉ ▆▌█▋▅▊ ▌▆▊▊ ▌▅▅▄▋:█▆█▄▋▇██▉▍▌
!▉▌▄▅▉ ▄▅▍▌▅▅▄ ▋▆ ▆▄ ▉█▊▉ ▊▆▉ ▌▄▉▆█▆▌ █▍▋▇▄▍
▅█▄▌▍ ▅ ▅▊▇ ▅▊▋ ▉▆▍▄ ▍▇▅▇▇▆ ▅▍▋ ▋▋▄▋▅
!▆▇▆▆▌ ▄▇▋▉▉
!▄▍█▍▍ ▉▍▍▍█▄█ ▅▊▊▍ ▇▅▅_▆█▅▌▅▌▆▉▆█▌▋▅▌▊▇█▋▅▄
▆▌▋▅ ▇▅▌▆▉▊ ▌▋▅▉▇ ▄▍▄ ▇▄▊▍▊
!▉▄▊▌▊ █▇ ▆▆▅▄▍▇▊ ▍▉▄▍ ▄▍▊▉_▄▉▉█▉▇▇
!▇▄▇▆▅ ▆▄▊▆▆▋▆▇▊ ▉▄▊▍█▍▉▇ ▅▉▄▄ ▄▍▅▆▅▌▍▌▌▅▋▊▆▇
!▌▌▋▋▆ ▋▆▌ ▉█▍█▅▇▌▄ ▍▌▆
!▅▆▅█▄ ▅▌▆█▋█▇ ▄▋▅▄▊▉▇ ▆▇▋▅ █▋▇▊_▋▉▄▋▅▍█
▅▅▋▇▊ ▉██▌▅▄▄ ▌▋▄▆▆▉▉▉ ▌▇▄▊▋▊█▄▊ █▍▇ █▊▉▍▇▆
▌▌▌▌▍▄█▋█▌▋▆ ▌▆▉▇▉▋ ▄▄▊▄▅▇▌▇ ▅▋▉▆▆▄▍ ▍▊▋▊▄█▄▆▄▅▉▇▇
▊▋▋▄▄ ▋▌▆▉ ▌▊█▄ ▊▍▊▅▆▊▋ ▇▌▊ ▌▋▉▇▄▌▊▌ ▉▄█▊▇▍█ ▅█▅▊▇▋▄ ▅▍▌ ▄▉▌▍'▍ ▉▄▌▄▌▇?
!▉▇▌█▍▄▅ █▊▍▉▊▋▄▅▉▊█▌▋▉▉▉ ▍▆▌▌▉█
!█▌▆▅▄ ▊▅▇▆█▋▍▋▇ ▌▉▌▅▍▌▄ ▇▇▅▅ ▋▍▋▌ ▅▅▅▉▍ ▅▄▆▉▊▇▄▅▇
!▄▅▌▌▆ ▋██▊▍▋▇▄▉▅▍ ▇▊▇▉ ▅▇▉▇▋▅▋▆▆
▉▉-▋▍▍▆▄▆ ▍▋▄▇▋█ ▆▋▊▅▉▅▉ ▆▋▋ ▉▆▋
!▊█▅▄▍▅▅ ▅▇▍█▅▆ ▄▋▇▍▆▆▇▌_▆▉▅▄
!▆▅▊▆▌ ▄ ▇▊▉▇▋ ▌▊▅▅ ▊▇▌▌▅▍▆▄▌▍▋█▇▍
▍█▍▍▄ ▊▄█▌▉▌▅█▋▊▍ ▉▆ ▄▄_▋█▇▋ ▍▄▄▄▌▇▄▊ ▍▋ ▊▍▌▌▊
▉▄▅▉▇▍▄ ▉▉▇ ▌▇▉▇▆▅ █▄▅ ▍▍▊▄▉▉▉▆ ▅▊▅▋▅▋▉ ▉▍▉▍
▄▌▍█▉ ▊▍▍ █▆▊▉▅▍▊▌ ▋▌▄▉▍▋▊▌ ▌▇ ▊▊▊▄.▌▇▊▉▄▇▄█▅█▊ - ▉▅▄█▅▍
▌▉▌▋▋ ▍▍▍▆▅ ▄▊▅▍▇▆ ██▇▍▊▍ ▆▌▇▋ ▊▍█▊▊ █▋▇▌ ▅▌▆▅▇▊▉▋▆
▍▌▄█▆ ▆▊▉▄▅ ▇▌▆
▄█▍▆▄ ▉▊█▊▌▋▅▅█ ▅▇▍ ▆▄ ▅▄▌█▋▆ ▊▅▍▅█▉, ▄▍▍▋ ▋▅ ▄▊▄ ▄▋▇▍▆▇▅ ▌█▆▄▍
▇▋▅ ▅▄▆ ▄▇▇▊ ▇▆▆▋▅ ▆▊█▅▍▊ ▍▅▆▉██▌▉ ▇█▌▇ ▊▊▆ ▋▊▋▌▍▆ ▊▇ █▅▊ █▅▍▅ ▄▄ ▅▆▇ ▉▌▊▉▌ ▆▋▄▆ █▌ ▊▄▌█▄▋▇
▍.▇. ▆▋▌ █▋▍▋ ▊▅ █▋▆█ ▇▊▍▄ ▅▄▋▉▊▅▍ ▆▄█▆█ ▄▇ ▊▆▌ ▄▌▄▅▋ ▌▉▅▍ ▋▋▊ ▆▋▆▉▄, ▉▇▅▌+▊ ▉▌▆▋▉█ ▅▄ ▅▄▍ ▉▆▋ ▌▌█▅▆ ▇▋█▆▉▌. ▋▄▍▄▋▇▅ ▄█▇▆ ▍▍▇ ▄▍▌▊ ▊▊▊█ █▊ ▅▅▅ ▌█ ▍▅▉▊▍▌.
▇▅▄▇▋ ▌▉▌█ ▊▌█▌▅▇▌ - ▋▊▍▅▆▊▇ ▌▊▅▆▉ █▅▊▇ ▄▉▋▌▋.▆▌▌
▄▉▍▄ ▇▊▇▊▄▄ ▇▍▋▋▉ ▊▌▆ ▋▊▉▄█
▆▍▉▇ ▇█▉ ▅█▋▄▄
▊▊▆▉▍▋▊ █▇▌▊▊▆▍▄▍▉▉:▆▆▄▅▊▅▋▆▍▆█▍▌▆▊
▊▌▄▊▋▋▌ ▍▉▄█▆▍▅ ▇▇▉▊▍ █▌ ▄▉▍▅▋.▊▋█▍ █▍ █▍▊▅▄▇▌▋█
▆▉▅ ▆▌▌▅▊▌▍▆▌▌ ▋▊ ▇▄▉▍▅▄▉▉▉█▌
▍█▆▆ ▆▌▆▄▊▉ ▇▋▆▍█▅▉ ▄▅▄▉▆ ▍▌▄▌▌▊█▋▍▊▌▍, ▍▊█▊ ▊█▊ ▌▅▅▍ ▇▆ ▄▊▌▍▉▇▇▇ ▊▉▇ ▅█▍▊▊▌▊ ▋▍▇▍▋▋
▍█▋█▋ ▅ ▌▌▋▉▌▍▉ ▋█▆█ ▊▆▅▄█▆ ▉▄▆ ▆▉▆▇▍▄▌▄ ▄▄▊▍▉ ▉▊ ██▌▅▊
▄▅▅██▊▋▊▋ █▅▆▇ ▉▍▇▊ ▇▊▋▄█ ▋▇ ▊ █▅▋█▉ ▄█▇▇▅
▄▇▋▍▆ ▇▆▇▉▍█▊ ▍▉▇▋▄▅█▊▊▇ ▌▌▄▉ ▍▅▅█▊▌.▍█▌▍▍██▇▋▄
▆▇▆▌▅ ▅▅▌▄▇▍▋▉▋█ ▌▌ ▊▇_▅▆▅▆/▉▊▉▋▇▌▉▋▄▌▉ ▅█▊ ▅█ ▌▄▇█▇▍ ▅▌▅█▅▉▋▍ ▊▌▅▅▊
▅▉█▋ '▄█▊▌▍▄'▉ ▄▆▋▆ ▉▅▍▊▌▊' █▋▊▍▊▍▍ ▄▆▊▄ ▇▍▄▌▇▇▇
▍▋ ▄▆▌ ▉█▍▌ ██▉▌█ ▆▄▊ ▌▋▌▇█▊ ▌▊▇▉
▋▆▋█▅ ▋ ▊▋▄▉▆ ▌▄█▋ ▅█▊▋▋▊▄▍▇▍▉▉▄█
▅▆▉█▍ ▋▊▅▄▆▋▆▊▅▉ █▍▊▇ ▉▇▅▆▍▉ ▍▊▇██▉▆
!▊▆▍▆▊ ▇▅▋▄ ▄▇▇▄▉▍▌▇ ▌▄▍▅ █▅▍▄▊▍▄▅ ▇▋▊▊█▊█▆
▆▌▉▉ ▊█▇▌ ▌▍▄▍▋ ▍▉█▊