diff --git a/app/Console/Commands/MakeUser.php b/app/Console/Commands/MakeUser.php new file mode 100644 index 0000000..2d0d800 --- /dev/null +++ b/app/Console/Commands/MakeUser.php @@ -0,0 +1,42 @@ + $this->ask('What is your name?'), + 'email' => $this->ask('What is your email address?'), + 'password' => bcrypt($this->ask('What password would you like to use?')), + ]); + + $user->ownedTeams()->create([ + 'name' => config('app.name'), + 'personal_team' => true, + 'settings' => [], + ]); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 4e78877..35609df 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -21,7 +21,7 @@ protected function schedule(Schedule $schedule): void $schedule->job(FetchResourcesFromCredentials::class)->everyOddHour(); $schedule->job(FetchCloudflareAnalytics::class)->everyFourHours(); - $schedule->command('operations:queue')->everyFiveMinutes(); +// $schedule->command('operations:queue')->everyFiveMinutes(); } /** diff --git a/app/Events/Admin/Composer/ActionFailed.php b/app/Events/Admin/Composer/ActionFailed.php new file mode 100644 index 0000000..f8bc910 --- /dev/null +++ b/app/Events/Admin/Composer/ActionFailed.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/Admin/Composer/ActionFinished.php b/app/Events/Admin/Composer/ActionFinished.php new file mode 100644 index 0000000..5e2ea0c --- /dev/null +++ b/app/Events/Admin/Composer/ActionFinished.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/Admin/Composer/ActionLoggedToConsole.php b/app/Events/Admin/Composer/ActionLoggedToConsole.php new file mode 100644 index 0000000..1c0bf38 --- /dev/null +++ b/app/Events/Admin/Composer/ActionLoggedToConsole.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Events/SubscribeToJobEvent.php b/app/Events/SubscribeToJobEvent.php new file mode 100644 index 0000000..98a30e1 --- /dev/null +++ b/app/Events/SubscribeToJobEvent.php @@ -0,0 +1,36 @@ + + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php new file mode 100644 index 0000000..f2394ae --- /dev/null +++ b/app/Http/Controllers/AccountController.php @@ -0,0 +1,10 @@ +filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + })->reduce(function ($result, $config, $service) use ($installedNotInstalled) { + + try { + $installedServiceThatMatchesInstalledDriver = array_values(array_filter($installedNotInstalled['installed'], fn($value) => in_array($service, $value['drivers'] ?? []))); + $driver = Arr::first($installedServiceThatMatchesInstalledDriver) ?? []; + foreach ($driver['drivers'] ?? [] as $eventListener => $driverName) { + $foundListener = Code::with(LaravelProgrammingStyle::class) + ->for(EventServiceProvider::class) + ->propertyContainsValue('listen', $eventListener); + + if ($foundListener) { + return array_merge($result, [ + 'enabled' => array_merge($result['enabled'] ?? [], [ + $service => $config, + ]), + ]); + } + + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + } + } catch (\Throwable $e) { + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + } + + return array_merge($result, [ + 'disabled' => array_merge($result['disabled'] ?? [], [ + $service => $config, + ]), + ]); + }, [ + 'enabled' => [], + 'disabled' => [], + ]); + + return Inertia::render('Admin/Index', array_merge($installedNotInstalled, $serviceWithOauthish)); + } + + public function email() + { + $imapService = new ImapService(); + + dd($imapService->findAllFromDate(now()->subDay())); + + return Inertia::render('Admin/Emails', [ + + 'mail' => '' + ]); + } +} diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php new file mode 100644 index 0000000..080151c --- /dev/null +++ b/app/Http/Controllers/BudgetController.php @@ -0,0 +1,10 @@ +validate([ + 'name' => 'required|string', + ]); + $name = request()->get('name'); + + $jobId = Str::uuid(); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $name) { + // enabling is based on if the driver is supported, so we need to remove support from the event service provider. + + $providers = json_decode(file_get_contents(storage_path('provider-information.json')), true); + $driversToEnable = array_values(array_filter($providers['installed'], fn($package) => $package['name'] === $name)); + + abort_if(count($driversToEnable) === 0, 404, 'No drivers installed by this composer vendor name'); + + broadcast(new ActionLoggedToConsole($jobId, "Attempting to identify the driver needed\r\n")); + + $configuredServices = collect(config('services'))->filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + });; + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;32mThere are {$configuredServices->count()} possible oauth/socialite services.\r\n")); + + $errors = collect([]); + $code = LaravelProgrammingStyle::for(EventServiceProvider::class); + foreach ($driversToEnable as $vendor) { + $drivers = $vendor['drivers']; + + foreach ($drivers as $class => $driverName) { + try { + if (!$configuredServices->has($driverName)) { + broadcast(new ActionLoggedToConsole($jobId, "\e[01;31mThere are no services configured for driver [" . $driverName . "]. Please update your config/services.php config file.\r\n")); + continue; + } + + $code->removeListenerFromEvent(SocialiteWasCalled::class, $class); + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;32mLooks like we are able to disable the event listener automatically.\r\n" + ."Attempting to save file...\r\n")); + + $code->toFile(Code::REPLACE_FILE); + broadcast(new ActionLoggedToConsole($jobId, "\e[01;33mFile: app/Providers/EventServiceProvider.php updated successfully.\r\n")); + } catch (\Throwable $e) { + broadcast(new ActionLoggedToConsole($jobId, $e->getMessage())); + $errors->push($e->getMessage()); + } finally { + // We don't want to close the modal in the UI, so don't launch an event to say the job completed. + } + } + } + + broadcast(new ActionLoggedToConsole($jobId, "\e[01;33mDisabling complete, you can close this window.\r\n")); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/EnableProviderController.php b/app/Http/Controllers/EnableProviderController.php new file mode 100644 index 0000000..a9b6cb1 --- /dev/null +++ b/app/Http/Controllers/EnableProviderController.php @@ -0,0 +1,88 @@ +validate([ + 'name' => 'required|string', + 'client_id' => 'required', + 'client_secret' => 'required', + 'redirect' => 'required' + ]); + $name = request()->get('name'); + + $jobId = Str::uuid(); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $name) { + // enabling is based on if the driver is supported, so we need to remove support from the event service provider. + $providers = json_decode(file_get_contents(storage_path('provider-information.json')), true); + $driversToEnable = array_values(array_filter($providers['installed'], fn($package) => $package['name'] === $name)); + + abort_if(count($driversToEnable) === 0, 404, 'No drivers installed by this composer vendor name'); + + broadcast(new ComposerActionLoggedToConsole($jobId, "Attempting to identify the driver needed\r\n")); + + $configuredServices = collect(config('services'))->filter(function ($service, $key) { + return !empty($service['client_id']) + && !empty($service['client_secret']) + && !empty($service['redirect']); + });; + + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;32mThere are {$configuredServices->count()} possible oauth/socialite services.\r\n")); + + $errors = collect([]); + $code = Code::for(EventServiceProvider::class); + foreach ($driversToEnable as $vendor) { + $drivers = $vendor['drivers']; + + foreach ($drivers as $class => $driverName) { + try { + if (!$configuredServices->has($driverName)) { + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;31mThere are no services configured for driver [" . $driverName . "]. Please update your config/services.php config file.\r\n")); + continue; + } + + $code->addValueToProperty('listen', SocialiteWasCalled::class, $class); + + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;32mLooks like we are able to add the event listener automatically.\r\nAttempting to save file...\r\n")); + + $code->toFile(Code::REPLACE_FILE); + broadcast(new ComposerActionLoggedToConsole($jobId, "\e[01;33mFile: app/Providers/EventServiceProvider.php updated\r\n")); + } catch (\Throwable $e) { + broadcast(new ComposerActionLoggedToConsole($jobId, $e->getMessage())); + $errors->push($e->getMessage()); + } finally { + // We don't want to close the modal in the UI, so don't launch an event to say the job completed. + } + } + } + }; + + broadcast(new SubscribeToJobEvent(request()->user()->id, $jobId)); + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/InstallNewProvider.php b/app/Http/Controllers/InstallNewProvider.php new file mode 100644 index 0000000..67cd85d --- /dev/null +++ b/app/Http/Controllers/InstallNewProvider.php @@ -0,0 +1,30 @@ +validate([ + 'name' => 'required|string', + ]); + + $jobId = Str::uuid(); + + $package = request()->get('name'); + abort_if(empty($package), 404); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $package) { + $process = new Process(['composer', 'require', $package], base_path(), ["COMPOSER_HOME" => "~/.composer"]); + + $this->runProcess($jobId, $process); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Controllers/MessageController.php b/app/Http/Controllers/MessageController.php new file mode 100644 index 0000000..02ce6de --- /dev/null +++ b/app/Http/Controllers/MessageController.php @@ -0,0 +1,10 @@ + $query->Field, DB::select('describe '.(new $model)->getTable())); - - $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { - $ref = new \ReflectionMethod($model, $method); - - $type = $ref->getReturnType(); - if (empty($type)) { - return $allClassMethods; - } - - return array_merge($allClassMethods, - [ - $method => $type, - ]); - }, []); - - $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); - $relations = array_filter($methodsThatReturnAClass, function ($type) { - $c = new \ReflectionClass($type->getName()); - - if (! empty($parentClass = $c->getParentClass())) { - if (! empty($parentParentClass = $parentClass->getParentClass())) { - if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - - return false; - }); - - return response()->json([ - 'fields' => $fields, - 'includes' => array_keys($relations), - 'sorts' => [], - 'filters' => [], - 'actions' => [ - 'get', - 'paginate:14', - 'first', - ], - ]); + return response()->json((new DescribeTableService)->describe($this->getModel($request))); } +protected function getModel(Request $request) +{ +$parts = $request->path(); +$split = explode('/', $parts); + + +return cache()->get(end($split)); +} + /** * @throws Exception */ - public function index(IndexRequest $request, ModelQuery $model) + public function index(IndexRequest $request) { + $class = $this->getModel($request); + $model = new $class; $action = new ActionFilter(request()->get('action', 'paginate:14')); - $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { - $ref = new \ReflectionMethod($model, $method); - - $type = $ref->getReturnType(); - if (empty($type)) { - return $allClassMethods; - } - - return array_merge($allClassMethods, [ - $method => $type, - ]); - }, []); - - $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); - $relations = array_filter($methodsThatReturnAClass, function ($type) { - $c = new \ReflectionClass($type->getName()); - - if (! empty($parentClass = $c->getParentClass())) { - if (! empty($parentParentClass = $parentClass->getParentClass())) { - if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - } - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { - return true; - } - - if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\MorphOneOrMany::class) { - return true; - } - } - - return false; - }); - - $query = QueryBuilder::for(get_class($model)) - ->allowedFields(array_map(fn ($query) => $query->Field, DB::select('describe '.(new $model)->getTable()))) + $description = (new DescribeTableService)->describe($model); + + $query = QueryBuilder::for($class) + ->allowedFields($description['fields']) ->allowedFilters(array_merge([ Filter::scope('q'), - ])) - ->allowedIncludes(array_keys($relations)) - ->allowedSorts([ - 'id', 'updated_at', 'created_at', - 'name', - ]); + ], $description['filters'])) + ->allowedIncludes(array_keys($description['includes'])) + ->allowedSorts($description['sorts']); return $action->execute($query); } - public function store(CreateRequest $request, ModelQuery $model) + public function store(CreateRequest $request) { + $description = (new DescribeTableService)->describe($model = $this->getModel($request)); + + $request->validate(array_reduce($description['required'], fn ($all, $field) => array_merge( + $all, + [$field => 'required'] + ),[])); /** @var ModelQuery $resource */ $resource = new $model; $resource->fill($request->all()); @@ -143,29 +82,30 @@ public function store(CreateRequest $request, ModelQuery $model) public function show(ViewRequest $request, ModelQuery $model, $abstractEloquentModel = null) { - $query = QueryBuilder::for(get_class($model)); + $query = QueryBuilder::for($model = $this->getModel($request)); return $query->find($abstractEloquentModel) ?? response([ 'message' => 'No resource found by that id.', ], 404); } - public function update(UpdateRequest $request, ModelQuery $model, $abstractEloquentModel = null) + public function update(UpdateRequest $request, $abstractEloquentModel = null) { $abstractEloquentModel->update($request->all()); return $abstractEloquentModel->refresh(); } - public function destroy(DeleteRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) + public function destroy(DeleteRequest $request, ModelQuery $abstractEloquentModel) { $abstractEloquentModel->delete(); return response('', 204); } - public function forceDestroy(ForceDeleteRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) + public function forceDestroy(ForceDeleteRequest $request, ModelQuery $abstractEloquentModel) { + $model = new $this->getModel($request); if (! $model->usesSoftdeletes()) { abort(404, 'You cannot force delete an item of this type.'); @@ -179,6 +119,7 @@ public function forceDestroy(ForceDeleteRequest $request, ModelQuery $model, Mod public function restore(RestoreRequest $request, ModelQuery $model, ModelQuery $abstractEloquentModel) { + $model = new $this->getModel($request); if (! $model->usesSoftdeletes()) { abort(404, 'You cannot restore an item of this type.'); diff --git a/app/Http/Controllers/ThreadController.php b/app/Http/Controllers/ThreadController.php new file mode 100644 index 0000000..771e8e1 --- /dev/null +++ b/app/Http/Controllers/ThreadController.php @@ -0,0 +1,10 @@ +validate([ + 'name' => 'required|string', + ]); + + $jobId = Str::uuid(); + $package = request()->get('name'); + abort_if(empty($package), 404); + + $queuedInstalledProcess = function () use ($jobId, $filesystem, $package) { + $process = new Process(['composer', 'remove', $package], base_path(), ["COMPOSER_HOME" => "~/.composer"]); + + $this->runProcess($jobId, $process); + }; + + dispatch($queuedInstalledProcess)->delay(5); + } +} diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index dafb4ad..76dfd0b 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -4,6 +4,9 @@ namespace App\Http\Middleware; +use App\Models\Domain; +use App\Models\Navigation; +use App\Models\Thread; use Illuminate\Http\Request; use Inertia\Middleware; @@ -36,7 +39,32 @@ public function version(Request $request): ?string public function share(Request $request): array { return array_merge(parent::share($request), [ - // + 'navigation' => Navigation::query() + ->where('authentication_required', auth()->check()) + ->whereNull('parent_id') + ->orderBy('order') + ->get() + + ->map(function (Navigation $item) { + $item->current = $item->href === request()->getRequestUri() || ($item->children->isNotEmpty() && $item->children->filter(fn ($item) => $item->href === request()->getRequestUri())->count() > 0); + return $item->toArray(); + }), + 'current_navigation' => Navigation::query() + ->with(['parent.children', 'children' => function ($query) { + $query->orderBy('order'); + }]) + ->where('authentication_required', auth()->check()) + ->where('href', '/'.request()->path()) + ->orderBy('order') + ->first(), + 'conversations' => Thread::query() + ->orderByDesc('origin_server_ts') + ->paginate( + request('limit'), + ['*'], + 'page', + request('page') + ) ]); } } diff --git a/app/Http/Middleware/OnlyHost.php b/app/Http/Middleware/OnlyHost.php new file mode 100644 index 0000000..e6c9d3a --- /dev/null +++ b/app/Http/Middleware/OnlyHost.php @@ -0,0 +1,18 @@ +user(), 404); + + abort_unless(in_array($request->user()->email, config('auth.admin_emails')), 404); + + return $next($request); + } +} diff --git a/app/Models/Article.php b/app/Models/Article.php index 1545722..ec0f96b 100644 --- a/app/Models/Article.php +++ b/app/Models/Article.php @@ -10,7 +10,7 @@ use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; -class Article extends Model +class Article extends Model implements Crud { use HasFactory, LogsActivity; diff --git a/app/Models/Condition.php b/app/Models/Condition.php new file mode 100644 index 0000000..3086b0f --- /dev/null +++ b/app/Models/Condition.php @@ -0,0 +1,11 @@ +belongsTo(User::class); + } + public function getPublicKey(): string { $publicKeyFile = $this->settings['pub_key_file']; diff --git a/app/Models/Crud.php b/app/Models/Crud.php new file mode 100644 index 0000000..ca3c9e3 --- /dev/null +++ b/app/Models/Crud.php @@ -0,0 +1,8 @@ +belongsTo(Credential::class); + } +} diff --git a/app/Models/Finance/Budget.php b/app/Models/Finance/Budget.php new file mode 100644 index 0000000..f107e6c --- /dev/null +++ b/app/Models/Finance/Budget.php @@ -0,0 +1,12 @@ +id() === $this->from_person; + } +} diff --git a/app/Models/Navigation.php b/app/Models/Navigation.php new file mode 100644 index 0000000..d173ed2 --- /dev/null +++ b/app/Models/Navigation.php @@ -0,0 +1,33 @@ + 'boolean', + 'settings' => 'json' + ]; + + public function children() + { + return $this->hasMany(Navigation::class, 'parent_id'); + } + + public function parent() + { + return $this->belongsTo(Navigation::class); + } + + public function domain() + { + return $this->belongsTo(Domain::class); + } +} diff --git a/app/Models/Page.php b/app/Models/Page.php index 9497098..7b45389 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class Page extends Model implements ModelQuery +class Page extends Model implements ModelQuery, Crud { use HasFactory, HasProjectResource; @@ -30,6 +30,12 @@ class Page extends Model implements ModelQuery 'published_at', ]; + public $casts = [ + 'is_active' => 'boolean', + 'middleware' => 'json', + 'settings' => 'json', + ]; + public function domain(): BelongsTo { return $this->belongsTo(Domain::class); diff --git a/app/Models/Person.php b/app/Models/Person.php index f7131e2..2cffcc8 100644 --- a/app/Models/Person.php +++ b/app/Models/Person.php @@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Person extends Model implements ModelQuery +class Person extends Model implements ModelQuery, Crud { use HasFactory; diff --git a/app/Models/Project.php b/app/Models/Project.php index 83be99b..2e65dfd 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -16,7 +16,7 @@ use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Tags\HasTags; -class Project extends Model implements ModelQuery +class Project extends Model implements ModelQuery, Crud { use HasFactory, HasTags, LogsActivity; diff --git a/app/Models/Research.php b/app/Models/Research.php index 1c4ceb0..3de812e 100644 --- a/app/Models/Research.php +++ b/app/Models/Research.php @@ -10,7 +10,7 @@ use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; -class Research extends Model +class Research extends Model implements Crud { use HasFactory, LogsActivity; diff --git a/app/Models/Server.php b/app/Models/Server.php index 0f9b913..5518e1e 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -13,7 +13,7 @@ use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Tags\HasTags; -class Server extends Model implements ModelQuery +class Server extends Model implements ModelQuery, Crud { use HasFactory, HasTags, LogsActivity; diff --git a/app/Models/ShortCode.php b/app/Models/ShortCode.php new file mode 100644 index 0000000..1724108 --- /dev/null +++ b/app/Models/ShortCode.php @@ -0,0 +1,32 @@ + 'bool', + ]; + + public function user() + { + return $this->belongsTo(User::class); + } + + public function generate(string $link) + { + } +} diff --git a/app/Models/Spork/Script.php b/app/Models/Spork/Script.php index ccc2a1e..260e214 100644 --- a/app/Models/Spork/Script.php +++ b/app/Models/Spork/Script.php @@ -4,10 +4,11 @@ namespace App\Models\Spork; +use App\Models\Crud; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Script extends Model +class Script extends Model implements Crud { use HasFactory; } diff --git a/app/Models/Tag.php b/app/Models/Tag.php index c86e87d..e040a8f 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -7,7 +7,7 @@ use App\Contracts\ModelQuery; use Illuminate\Database\Eloquent\Factories\HasFactory; -class Tag extends \Spatie\Tags\Tag implements ModelQuery +class Tag extends \Spatie\Tags\Tag implements ModelQuery, Crud { use HasFactory; diff --git a/app/Models/Thread.php b/app/Models/Thread.php new file mode 100644 index 0000000..1bcba39 --- /dev/null +++ b/app/Models/Thread.php @@ -0,0 +1,32 @@ + 'json', 'origin_server_ts' => 'datetime']; + + public $appends = ['human_timestamp']; + + public function messages() + { + return $this->hasMany(Message::class); + } + + public function participants() + { + return $this->belongsToMany(Person::class, 'thread_participants'); + } + + public function getHumanTimestampAttribute() + { + return $this->origin_server_ts->diffForHumans(now(), CarbonInterface::DIFF_RELATIVE_TO_NOW, false); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 914dd60..17e65b8 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -71,4 +71,9 @@ public function getActivitylogOptions(): LogOptions ->useLogName('user') ->logOnlyDirty(); } + + public function codes() + { + return $this->hasMany(ShortCode::class); + } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index e6c5c0b..ff7ba18 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -43,7 +43,6 @@ class EventServiceProvider extends ServiceProvider ], Events\Domains\NameServerRecordVerified::class => [ Listeners\DebugEventListener::class, - ], ]; diff --git a/app/Providers/HorizonServiceProvider.php b/app/Providers/HorizonServiceProvider.php new file mode 100644 index 0000000..9811982 --- /dev/null +++ b/app/Providers/HorizonServiceProvider.php @@ -0,0 +1,36 @@ +email, [ + // + ]); + }); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 1143397..43a4247 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -72,6 +72,13 @@ public function boot(): void Route::middleware('web') ->domain(config('app.env') == 'production' ? 'spork.zone' : 'spork.localhost') ->group(base_path('routes/pages/spork.php')); + + Route::middleware('api') + ->domain(config('app.env') == 'production' ? 'deploy.kregel.host' : 'deploy.localhost') + ->group(base_path('routes/pages/deploy.php')); + + Route::domain(env("LINK_SHORTENING_DOMAIN")) + ->group(base_path('routes/pages/link-shortening.php')); }); } } diff --git a/app/Services/Code.php b/app/Services/Code.php new file mode 100644 index 0000000..cf4e6c7 --- /dev/null +++ b/app/Services/Code.php @@ -0,0 +1,557 @@ +phpFiles[$file] = PhpFile::fromCode(file_get_contents($file)); + } + } + + public static function with(string $driver): static|LaravelProgrammingStyle + { + return match ($driver) { + 'laravel' => new CodeForLaravel([]), + LaravelProgrammingStyle::class => new LaravelProgrammingStyle([]), + }; + } + + public static function composerMappedClasses(): array + { + /** @var ClassLoader $loader */ + $loader = require base_path('vendor').'/autoload.php'; + + return $loader->getClassMap(); + } + + public static function for(string $desiredParentClass): static + { + $classmap = require base_path('vendor/composer/autoload_classmap.php'); + + $classes = array_key_exists($desiredParentClass, $classmap) ? $classmap[$desiredParentClass] : $desiredParentClass; + + return new static( + $desiredParentClass, + $classes + ); + } + + protected function isArray(Property|Constant $property) + { + $contents = explode("\n", (string) $property->getValue()); + + return $contents[0] === '[' && $contents[count($contents) - 1] === ']'; + } + + public function addValueToProperty(string $property, string $name, mixed $value) + { + $this->modifyProperty($property, function (Property $property) use ($name, $value) { + if (is_callable($value)) { + $property->setValue(call_user_func($value, $property)); + + return; + } + $contents = explode("\n", (string) $property->getValue()); + $content = array_values(array_filter($contents)); + + if ($contents[0] === '[' && $contents[count($contents) - 1] === ']') { + // technically an unsafe eval, but you're using code to write code.. + // Soo uhhh... This may be dubious, but also it could just work well? + $literal = eval('return '.$property->getValue().';'); + // This really isn't ideal. but we are ensuring the contents are likely an array if (is_array($literal)) { + // Since it's an array, we should look for the $name, and then insert that right below it + // Or if it evaluates to an KV array, we can set the value instead. + if (is_array($literal[$name])) { + // This would be an array of arrays, see `EventServiceProvider` + $content = array_values(array_filter($contents)); + + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $name)) { + $lineWithEvent = $lineNumber; + } + } + + if ($lineWithEvent === null) { + $content = array_merge(array_slice($content, 0, 1), [ + // new line with our listener, + " /*(n*/\\$name::class => [", + " /*(n*/\\$value::class.'@handle', // code: this is an autogenerated line", + ' ],', + ], array_slice($content, 1, count($content))); + } else { + $content = array_merge(array_slice($content, 0, $lineWithEvent + 1), [ + // new line with our listener, + " /*(n*/\\$value::class . '@handle', // code: this is an autogenerated line", + ], array_slice($content, $lineWithEvent + 1, count($content))); + } + } else { + // This could be an array of strings, objects, or basically anything that isn't an array. + $content = array_values(array_filter($contents)); + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $name)) { + $lineWithEvent = $lineNumber; + } + } + +// if ($lineWithEvent === null) { +// $content = array_merge(array_slice($content, 0, 1), [ +// // new line with our listener, +// " /*(n*/\\$name::class => [", +// " /*(n*/\\$value::class.'@handle', // code: this is an autogenerated line", +// " ]," +// ], array_slice($content, 1, count($content))); +// } else { +// $content = array_merge(array_slice($content, 0, $lineWithEvent+1), [ +// // new line with our listener, +// " /*(n*/\\$value::class . '@handle', // code: this is an autogenerated line" +// ], array_slice($content, $lineWithEvent+1, count($content))); +// } + // I + } + } + + $property->setValue((new Literal(implode("\n", $content)))); + }); + + return $this; + } + + public static function instancesOf(string $desiredParentClass): static + { + // Classes known to composer in array form + $traits = []; + $classes = []; + $interfaces = []; + + foreach (static::composerMappedClasses() as $className => $filePath) { + $filePath = realpath($filePath); + if (stripos($className, 'reflection') !== false) { + // The class has reflection in the name, generally speaking, I'd like to avoid those... + continue; + } + if (stripos($className, 'abstract') !== false) { + // The class has reflection in the name, generally speaking, I'd like to avoid those... + continue; + } + + $vendorParts = explode('/vendor/', $filePath); + + if (str_contains($filePath, 'vendor/')) { + $possibleVendor = explode('/', $vendorParts[1], 2)[0]; + + if (! empty(config('spork.code.settings.blacklist')) && in_array($possibleVendor, config('spork.code.settings.blacklist'))) { + continue; + } + + if (! empty(config('spork.code.settings.whitelist')) && ! in_array($possibleVendor, config('spork.code.settings.whitelist'))) { + continue; + } + } + + try { + if (interface_exists($className)) { + $interfaces[] = $className; + } elseif (class_exists($className)) { + $classes[] = $className; + } elseif (trait_exists($className)) { + $traits[] = $className; + } + } catch (\Throwable|\Error|\ErrorException|ErrorException|\ReflectionException|\Whoops\Exception\ErrorException|\Symfony\Component\ErrorHandler\Error\FatalError|FatalError $e) { + // Missing classes based on my experience so far. + } + } + + $possibleInstances = match (true) { + interface_exists($desiredParentClass) => array_values(array_filter(array_merge($interfaces, $classes), fn ($declaredClass) => isset(class_implements($declaredClass)[$desiredParentClass]))), + class_exists($desiredParentClass) => array_values(array_filter($classes, fn ($declaredClass) => is_subclass_of($declaredClass, $desiredParentClass))), + trait_exists($desiredParentClass) => array_values(array_filter(array_merge($traits, $classes), fn ($declaredClass) => in_array($desiredParentClass, trait_uses_recursive($declaredClass)))), + }; + + return new static($possibleInstances); + } + + public function import(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + foreach ($imports as $import) { + $possibleImport = class_basename($import); + $uses = $namespace->getUses(); + // contains use ClassName; + // it could be aliased + if (in_array($import, $uses)) { + // already imported; + continue; + } + + if (isset($uses[$possibleImport])) { + // Not imported, but the import already exists, so we need to alias it. + // idk how I want to handle this yet, so I'ma just leave this for future me... + + dd($uses, $possibleImport, $import); + } + + $traitBaseName = class_basename($import); + + if ($namespace->getName().'\\'.$traitBaseName === $import) { + // Our class is in the same namespace as the class we're importing + // So we don't actually need to do anything + continue; + } + $namespace->addUse($import); + } + } + } + + return $this; + } + + public function use(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingTraits = $class->getTraits(); + foreach ($imports as $import) { + if (isset($existingTraits[$import])) { + // The trait is already used by the class. + continue; + } + + $class->addTrait($import); + } + } + } + } + + return $this; + } + + protected const TYPE_PROPERTY = 'property'; + + protected const TYPE_ATTRIBUTES = 'attribute'; + + protected const TYPE_TRAIT = 'trait'; + + protected const TYPE_CONSTANT = 'constant'; + + protected const TYPE_EXTEND = 'extend'; + + protected const TYPE_IMPLEMENT = 'implement'; + + protected const TYPE_METHOD = 'method'; + + protected function modify( + string $type, + string $name, + \Closure $valueResolver + ): static { + /** @var PhpFile $file */ + foreach ($this->phpFiles as $file) { + /** @var PhpNamespace $namespaceObject */ + foreach ($file->getNamespaces() as $namespace => $namespaceObject) { + // Add code at the namespace level like use statements, declare(strict_types=1); + /** @var \Nette\PhpGenerator\ClassType $class */ + foreach ($file->getClasses() as $class) { + switch ($type) { + case static::TYPE_PROPERTY: + /** @var \Nette\PhpGenerator\Property $property */ + foreach ($class->getProperties() as $propertyName => $property) { + if ($propertyName === $name) { + call_user_func($valueResolver, $property); + } + } + break; + case static::TYPE_ATTRIBUTES: + foreach ($class->getAttributes() as $attributeName => $attribute) { + if ($attributeName === $name) { + call_user_func($valueResolver, $attribute); + } + } + break; + case static::TYPE_TRAIT: + foreach ($class->getTraits() as $traitName => $trait) { + if ($traitName === $name) { + call_user_func($valueResolver, $trait); + } + } + break; + case static::TYPE_CONSTANT: + foreach ($class->getConstants() as $constantName => $constant) { + if ($constantName === $name) { + call_user_func($valueResolver, $constant); + } + } + break; + case static::TYPE_EXTEND: + foreach ($class->getExtends() as $extendClass => $extends) { + if ($extendClass === $name) { + call_user_func($valueResolver, $extends); + } + } + break; + case static::TYPE_IMPLEMENT: + foreach ($class->getImplements() as $implementationClass => $implementation) { + if ($implementationClass === $name) { + call_user_func($valueResolver, $implementation); + } + } + break; + case static::TYPE_METHOD: + foreach ($class->getMethods() as $methodName => $method) { + if ($methodName === $name) { + call_user_func($valueResolver, $method); + } + } + break; + default: + throw new \InvalidArgumentException('Unknown argument type, please see me after class for more details'); + } + } + } + } + + return $this; + } + + public function modifyProperty(string $name, \Closure $closure) + { + $this->modify(static::TYPE_PROPERTY, $name, $closure); + + return $this; + } + + public function extends(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + if (count($imports) > 1) { + throw new \DomainException('Failed to extend class, classes may only be extended once in this language.'); + } + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingExtends = $class->getExtends(); + + foreach ($imports as $import) { + if (isset($existingExtends[$import])) { + // We already extend the class. + continue; + } + + $class->setExtends($import); + } + } + } + } + + return $this; + } + + public function getInterfaces() + { + $existingInterfaces = []; + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingInterfaces = array_merge($existingInterfaces, $class->getImplements()); + } + } + } + + return $existingInterfaces; + } + public function getProperty(string $property): array + { + return array_map(function (PhpFile $phpFile) use ($property) { + return array_map(fn (PhpNamespace $namespace) => + array_map(fn (ClassType $type) => $type->getProperty($property), $namespace->getClasses()), $phpFile->getNamespaces()); + }, $this->phpFiles); + } + + public function getClasses(): array + { + return array_reduce($this->phpFiles, function (array $allClasses, PhpFile $phpFile) { + return array_reduce( + $phpFile->getNamespaces(), + fn (array $result, PhpNamespace $namespace) => + array_merge( + $result, + array_values(array_map(fn (ClassType $type) => $namespace->getName().'\\'.$type->getName(), $namespace->getClasses())), + ), + $allClasses + ); + }, []); + } + + public function implements(string|array $fqns): static + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + + foreach ($imports as $import) { + $this->import($import); + } + foreach ($this->phpFiles as $phpFile) { + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + /** @var ClassType $class */ + foreach ($namespace->getClasses() as $class) { + $existingInterfaces = $class->getImplements(); + + foreach ($imports as $import) { + if (isset($existingInterfaces[$import])) { + // We already implement the interface. + continue; + } + + $class->addImplement($import); + } + } + } + } + + return $this; + } + + protected function resolveFileOrClassName(string $fileOrClassName) + { + if (str_contains($fileOrClassName, '.')) { + return $fileOrClassName; + } + + return static::composerMappedClasses()[$fileOrClassName]; + } + + // Default to non-destructive action. + public function toFile($howToHandleFile = self::RETURN_CONTENTS) + { + foreach ($this->phpFiles as $className => $file) { + $contents = str_replace("\t", ' ', $this->validateFile($file)); + switch ($howToHandleFile) { + case static::REPLACE_FILE: + if (! file_exists($filePath = $this->resolveFileOrClassName($className))) { + // Our class name isn't found int composer. + // Perhaps we need to run composer:dump + continue 2; + } + file_put_contents($filePath, $contents); + break; + case static::RETURN_CONTENTS: + default: + return $contents; + } + } + + return $this; + } + + protected function validateFile(PhpFile $file) + { + $printer = new Printer; + $printer->indentation = ' '; + $printer->linesBetweenMethods = 1; + + $processedFile = (string) $printer->printFile($file); + + $lines = explode("\n", $processedFile); + $location = array_keys(array_filter($lines, fn ($line) => str_starts_with($line, 'namespace')))[0] ?? 0; + $preLocation = array_slice($lines, 0, $location + 1); + $postLocation = array_slice($lines, $location + 1, count($lines)); + + $filesystem = new Filesystem(); + $filesystem->makeDirectory(storage_path('tmp'), 0755, true, true); + // How can we validate the file, like make sure there aren't any parsing errors or obvious exceptions. + $path = storage_path('tmp/'.Str::random(16)); + + $filesystem->put($path, $contentToVerify = implode("\n", array_merge($preLocation, [ + sprintf('require "%s/vendor/autoload.php";', base_path()), + ], $postLocation))); + try { + // Generally this isn't safe, but we need to check for syntax issues but we also want to add + // a require line for the autoloader, + try { + exec('php -f ' . escapeshellarg($path) . ' 2>&1', $output, $errorCode); + $output = implode("\n", $output); + } catch (SyntaxErrorException $e) { + return null; + } + if ($errorCode !== 0) { + if (str_starts_with($output, 'PHP Fatal error:')) { + $line = explode('on line ', $output, 2)[1] ?? ''; + + throw new FatalError($output, $errorCode, [ + 'file' => $path, + 'line' => explode("\n", $line, 2)[0], + ]); + } + + + throw new SyntaxErrorException('There were syntax errors found in the generated file, this shouldn\'t happen. ' . $output); + } + + return $processedFile; + } finally { + $filesystem->delete($path); + } + } + + public function propertyIncludesValue($field, \Closure $closure) + { + call_user_func($closure, $field); + return false; + } +} diff --git a/app/Services/Development/DescribeTableService.php b/app/Services/Development/DescribeTableService.php new file mode 100644 index 0000000..7d6a6f5 --- /dev/null +++ b/app/Services/Development/DescribeTableService.php @@ -0,0 +1,146 @@ + array_values(array_map(fn ($query) => $query->Field, $everything)); + $description = cache()->remember('description.'.get_class($model), now()->addHour(), fn () => DB::select('describe '.(new $model)->getTable())); + $indexes = cache()->remember('indexes.'.get_class($model), now()->addHour(), fn () => DB::select('show indexes from '.(new $model)->getTable())); + $fields = $mapField($description); + $sorts = array_filter($description, function($query) { + if (str_contains($query->Type, 'int') && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Type, [ + 'timestamp', + 'date', + ]) && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Field, [ + 'name', + 'created_at', + 'deleted_at', + 'updated_at', + ])) { + return true; + } + + return false; + }); + + $returnTypes = array_reduce(get_class_methods($model), function ($allClassMethods, $method) use ($model) { + $ref = new \ReflectionMethod($model, $method); + + $type = $ref->getReturnType(); + if (empty($type)) { + return $allClassMethods; + } + + return array_merge($allClassMethods, + [ + $method => $type, + ]); + }, []); + + $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); + $relations = array_filter($methodsThatReturnAClass, function ($type) { + $c = new \ReflectionClass($type->getName()); + + if (! empty($parentClass = $c->getParentClass())) { + if (! empty($parentParentClass = $parentClass->getParentClass())) { + if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + + return false; + }); + + return [ + 'actions' => ActionFilter::WHITELISTED_ACTIONS, + 'fillable' => empty($model->getFillable()) ? ['name'] :$model->getFillable(), + 'fields' => $fields, + 'filters' => array_map(fn ($query) => $query->Column_name, $indexes), + 'includes' => array_keys($relations), + 'sorts' => $mapField($sorts), + 'required' => $mapField(array_filter($description, fn ($query) => $query->Null === "NO" && $query->Extra !== 'auto_increment')), + ]; + } + + + public function describeTable(string $table): array + { + $mapField = fn ($everything) => array_values(array_map(fn ($query) => $query->Field, $everything)); + $description = cache()->remember('description.'.$table, now()->addHour(), fn () => DB::select('describe '.$table)); + $indexes = cache()->remember('indexes.'.$table, now()->addHour(), fn () => DB::select('show indexes from '.$table)); + $fields = $mapField($description); + $sorts = array_filter($description, function($query) { + if (str_contains($query->Type, 'int') && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Type, [ + 'timestamp', + 'date', + ]) && $query->Null == 'NO') { + return true; + } + + if (Str::contains($query->Field, [ + 'name', + 'created_at', + 'deleted_at', + 'updated_at', + ])) { + return true; + } + + return false; + }); + + $returnTypes = []; + + $methodsThatReturnAClass = array_filter($returnTypes, fn (\ReflectionNamedType $type) => class_exists($type->getName())); + $relations = array_filter($methodsThatReturnAClass, function ($type) { + $c = new \ReflectionClass($type->getName()); + + if (! empty($parentClass = $c->getParentClass())) { + if (! empty($parentParentClass = $parentClass->getParentClass())) { + if ($parentParentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + if ($parentClass->getName() === \Illuminate\Database\Eloquent\Relations\Relation::class) { + return true; + } + } + + return false; + }); + + return [ + 'actions' => ActionFilter::WHITELISTED_ACTIONS, + 'fillable' => ['name'], + 'fields' => $fields, + 'filters' => array_map(fn ($query) => $query->Column_name, $indexes), + 'includes' => array_keys($relations), + 'sorts' => $mapField($sorts), + 'required' => $mapField(array_filter($description, fn ($query) => $query->Null === "NO" && $query->Extra !== 'auto_increment')), + ]; + } +} diff --git a/app/Services/Finance/PlaidHttpService.php b/app/Services/Finance/PlaidHttpService.php new file mode 100644 index 0000000..ef865fb --- /dev/null +++ b/app/Services/Finance/PlaidHttpService.php @@ -0,0 +1,75 @@ +url = sprintf($this->baseUrl, $this->env); + parent::__construct($this->url, []); + } + + /** + * @return PlaidHttpService + */ + public function sandbox(): self + { + $this->url = sprintf($this->baseUrl, 'sandbox'); + $this->new($this->url, []); + + return $this; + } + + /** + * @return PlaidHttpService + */ + public function development(): self + { + $this->url = sprintf($this->baseUrl, 'development'); + $this->new($this->url, []); + + return $this; + } + + /** + * @param $data + * @return HttpService + */ + public function auth($data): HttpService + { + $this->authBits = $data; + + return $this; + } + + /** + * @param $action + * @param null $data + * @return \Illuminate\Support\Collection + * @throws \Exception + */ + protected function request($action, $data = []) + { + return parent::request($action, array_merge((array) $data, $this->authBits)); + } +} diff --git a/app/Services/HttpService.php b/app/Services/HttpService.php new file mode 100644 index 0000000..1b3fce4 --- /dev/null +++ b/app/Services/HttpService.php @@ -0,0 +1,123 @@ +url = $url; + $this->new($url, $data); + } + + public static function __callStatic($method, $arguments) + { + if (empty(self::$instance)) { + self::$instance = new static; + } + + return call_user_func_array([self::$instance, $method], $arguments); + } + + public function __call($method, $arguments) + { + return call_user_func_array([self::$instance, $method], $arguments); + } + + public function toArray() + { + return $this->response->toArray(); + } + + protected function new($path, $data = []) + { + $this->path = $path; + $this->client = new Client(array_merge(['base_uri' => $this->url], $data)); + + return $this; + } + protected function request($action, $data = []) + { + if (!in_array(strtolower($action), ['get', 'post', 'put', 'delete', 'patch'])) { + throw new \Exception('Your desired action is not supported'); + } + + if (empty($data)) { + $body = [ + 'body' => '{}', + 'headers' => [ + 'Content-Type' => 'application/json', + 'Accepts' => 'application/json', + ] + ]; + } else { + $body = [ + 'json' => $data, + 'headers' => [ + 'Content-Type' => 'application/json', + 'Accepts' => 'application/json', + ] + ]; + } + + try { + $response = $this->client->request($action, $this->path, $body); + + $json = $response->getBody()->getContents(); + } catch (ClientException $exception) { + throw new \Exception($exception->getResponse()->getBody()->getContents()); + } + + return $this->response = collect(json_decode($json)); + } + public function get($path, $data = null) + { + $this->path = $path; + + return $this->request('get', $data); + } + public function post($path, $data = null) + { + $this->path = $path; + + return $this->request('post', $data); + } + + public function patch($path, $data = null) + { + $this->path = $path; + + return $this->request('patch', $data); + } + + public function delete(string $path, $data = null) + { + $this->path = $path; + + return $this->request('delete', $data); + } + + public function put(string $path, $data = null) + { + $this->path = $path; + + return $this->request('put', $data); + } +} diff --git a/app/Services/ImapService.php b/app/Services/ImapService.php new file mode 100644 index 0000000..7672e7e --- /dev/null +++ b/app/Services/ImapService.php @@ -0,0 +1,153 @@ +buildMailboxString(), + env('IMAP_USERNAME'), + env("IMAP_PASSWORD") + ), $this->buildMailboxString(), '*')) + ->tap(fn () => imap_close($inbox)); + } + public function findAllFromDate(string $mailbox, Carbon $date): Collection + { + return collect(imap_search($inbox = imap_open( + sprintf('%s%s', $this->buildMailboxString(), $mailbox), + env('IMAP_USERNAME'), + env("IMAP_PASSWORD") + ), + sprintf('SINCE "%s"', $date->format("Y-m-d")) + )) + ->map(function ($messageNumber) use ($inbox) { + $headers = Str::of($headerRaw = imap_fetchheader($inbox, $messageNumber, )) + ->explode("\r\n") + ->filter() + ->reduce(fn ($lines, $line) => array_merge( + $lines, + [explode(": ", $line, 2)[0] => explode(": ", $line, 2)[1] ?? null] + ), []); + + $rfcHeaders = imap_rfc822_parse_headers($headerRaw); + $body = null; + $overview = Arr::first(imap_fetch_overview($inbox, $messageNumber)); + + return [ + 'id' => imap_uid($inbox, $messageNumber), + 'to' => $this->extractEmailAndName($headers['To']), + 'addressed-to' => $this->extractEmailAndName($headers['X-Simplelogin-Envelope-To'] ?? $headers['X-Original-To'] ?? null), + 'addressed-from' => $this->extractEmailAndName($rfcHeaders->fromaddress ?? $headers['X-Pm-External-Id'] ?? null), + 'date' => Carbon::parse($headers['Date']), + 'human_date' => Carbon::parse($headers['Date'])->fromNow(), + 'subject' => imap_utf8($headers['Subject']), + 'from' => $this->extractEmailAndName($rfcHeaders->senderaddress ?? $rfcHeaders->fromaddress ?? $headers['From'], $headers), + 'reply-to' => $this->extractEmailAndName($rfcHeaders->reply_toaddress ?? $headers['Reply-To']), + 'spam' => intval($headers['X-Pm-Spamscore'] ?? 0), + 'seen' => (bool) $overview->seen ?? false, + 'deleted' => (bool) $overview->deleted ?? false, + 'answered' => (bool) $overview->answered ?? false, + 'recent' => (bool) $overview->recent ?? false, + 'draft' => (bool) $overview->draft ?? false, + ]; + }) + ->sortByDesc('date') + ->values() + ->tap(fn () => imap_close($inbox)); + } + + public function findMessage(string $messageNumber, bool $peak = true): array + { + $mailbox = new \PhpImap\Mailbox( + sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}INBOX'), // IMAP server and mailbox folder + env('IMAP_USERNAME'), // Username for the before configured mailbox + env('IMAP_PASSWORD'), // Password for the before configured username + storage_path(), // Directory, where attachments will be saved (optional) + 'UTF-8', // Server encoding (optional) + true, // Trim leading/ending whitespaces of IMAP path (optional) + false // Attachment filename mode (optional; false = random filename; true = original filename) + ); + + $message = $mailbox->getMail($messageNumber, false); + + $headers = Str::of($message->headersRaw) + ->explode("\r\n") + ->filter() + ->reduce(fn ($lines, $line) => array_merge( + $lines, + [explode(": ", $line, 2)[0] => explode(": ", $line, 2)[1] ?? null] + ), []); + + $rfcHeaders = imap_rfc822_parse_headers($message->headersRaw); + return [ + 'id' => $messageNumber, + 'to' => $this->extractEmailAndName($headers['To']), + 'addressed-to' => $this->extractEmailAndName($headers['X-Simplelogin-Envelope-To'] ?? $headers['X-Original-To'] ?? null), + 'addressed-from' => $this->extractEmailAndName($rfcHeaders->fromaddress ?? $headers['X-Pm-External-Id'] ?? null), + 'date' => Carbon::parse($headers['Date']), + 'human_date' => Carbon::parse($headers['Date'])->fromNow(), + 'subject' => imap_utf8($headers['Subject']), + 'from' => $this->extractEmailAndName($rfcHeaders->senderaddress ?? $rfcHeaders->fromaddress ?? $headers['From'], $headers), + 'reply-to' => $this->extractEmailAndName($rfcHeaders->reply_toaddress ?? $headers['Reply-To']), + 'spam' => $headers['X-Pm-Spamscore'], + 'seen' => $message->isSeen ?? false, + 'deleted' => $message->isDeleted ?? false, + 'answered' => $message->isAnswered ?? false, + 'recent' => $message->isRecent ?? false, + 'draft' => $message->isDraft ?? false, + 'body' => base64_encode($message->textHtml), + ]; + } + + protected function buildMailboxString() + { + return sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}'); + } + + protected function extractEmailAndName(?string $value, $headers = []) + { + if (empty($value)) { + return $value +; } + + if (!str_contains($value, '<')) { + return array_merge([ + 'email' => $value + ]); + } + + if (str_contains($value, '"')) { + preg_match_all('/(\".*\")?(\s)?(\<.*\>)/', $value, $matches); + } else { + preg_match_all('/(.*)(\s)(\<.*\>)/', $value, $matches); + } + return match (count($matches)) { + 3 => [ + 'email' => trim(Arr::first($matches[2])), + 'original' => $value + ], + 4 => empty(trim(Arr::first($matches[1]), "\"'")) ? [ + // Address + 'email' => trim(Arr::first($matches[3]), "<>"), + 'original' => $value + ] : [ + // Name + 'name' => trim(Arr::first($matches[1]), "\"'"), + // Address + 'email' => trim(Arr::first($matches[3]), "<>"), + 'original' => $value + ], + }; + } +} diff --git a/app/Services/Matrix/MatrixClient.php b/app/Services/Matrix/MatrixClient.php new file mode 100644 index 0000000..34aef14 --- /dev/null +++ b/app/Services/Matrix/MatrixClient.php @@ -0,0 +1,114 @@ + 'application/json', +// 'Content-type' => 'application/json', +// ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/r0/login')->json() + $rooms = Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.env('MATRIX_ACCESS_TOKEN'), + + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/joined_rooms', [ +// 'type' => 'm.login.application_service', +// 'identifier' => [ +// "type" => "m.id.user", +// 'user' => 'austinkregel', +// +// ] + ])->json('joined_rooms'); + + dd(array_reduce($rooms, function ($all, $room) { + $roomAliases = cache()->rememberForever('room-cache'.$room, fn () => Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.env('MATRIX_ACCESS_TOKEN'), + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/rooms/'.$room.'/aliases')->json('aliases')); + + echo $room."\n"; + + return array_merge( + $all, + [ + $room => $roomAliases + ], + ); + }, [])); + } + + public function requestCodeForBeeper(string $email): string + { + return cache()->remember(md5(json_encode([ + 'beeper','|', + $email, + ])), now()->addMinutes(30), function () use ($email) { + $request = Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login', [ + ])->json('request'); + + Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login/email', [ + 'request' => $request, + 'email' => $email + ])->body(); + + return $request; + }); + } + public function loginWithBeeperCode(string $email, string $code): array + { + if (!cache()->has(md5(json_encode([ + 'beeper','|', + $email + ])))) { + abort(404); + } + + return Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE', + ])->post('https://api.beeper.com/user/login/response', [ + 'request' => cache()->get(md5(json_encode([ + 'beeper','|', + $email + ]))), + 'response' => $code + ])->json(); + } + + public function loginWithJwt(string $jwt): array + { + $login = Http::withHeaders([ + 'Accept' => 'application/json' + ])->post('https://matrix.'.$this->homeserver.'/_matrix/client/v3/login', [ + 'type' => 'org.matrix.login.jwt', + 'token' => $jwt, + ])->json(); + + return $login; + } + + public function devices(string $jwt): array + { + dd(Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer '.$jwt, + ])->get('https://matrix.'.$this->homeserver.'/_matrix/client/v3/devices')->json()); + } +} diff --git a/app/Services/Programming/LaravelProgrammingStyle.php b/app/Services/Programming/LaravelProgrammingStyle.php new file mode 100644 index 0000000..0d94373 --- /dev/null +++ b/app/Services/Programming/LaravelProgrammingStyle.php @@ -0,0 +1,190 @@ +import([$listener, $eventName]); + $this->modifyProperty('listen', function (Property $property) use ($eventName, $listener) { + /** @var Literal $literal */ + $literal = $property->getValue(); + // plan: Split the literal into chunks, look for the $eventName, + // When $eventName is found, on the following line insert $listener with a trailing comma. + + $lineWithEvent = null; + $content = explode("\n", $literal); + + if (count($content) <= 2) { + throw new \DomainException('This EventServiceProvider needs to have at least 3 lines for the $listen'); + } + + $content = array_values(array_filter($content)); + + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $eventName)) { + $lineWithEvent = $lineNumber; + } + } + + if ($lineWithEvent === null) { + $content = array_merge(array_slice($content, 0, 1), [ + // new line with our listener, + ' '.$this->formatClassWithClass($eventName).' => [', + ' '.$this->formatClassWithClass($listener).".'@handle', // code: this is an autogenerated line", + ' ],', + ], array_slice($content, 1, count($content))); + } else { + $content = array_merge(array_slice($content, 0, $lineWithEvent + 1), [ + // new line with our listener, + ' '.$this->formatClassWithClass($listener)." . '@handle', // code: this is an autogenerated line", + ], array_slice($content, $lineWithEvent + 1, count($content))); + } + + $property->setValue((new Literal(implode("\n", $content)))); + }); + + return $this; + } + + public function propertyContainsValue(string $propertyName, string $valueToLookFor) + { + /** @var PhpFile $file */ + foreach ($this->phpFiles as $file) { + /** @var PhpNamespace $namespaceObject */ + foreach ($file->getNamespaces() as $namespace => $namespaceObject) { + // Add code at the namespace level like use statements, declare(strict_types=1); + /** @var \Nette\PhpGenerator\ClassType $class */ + foreach ($file->getClasses() as $class) { + /** @var \Nette\PhpGenerator\Property $property */ + foreach ($class->getProperties() as $definedProperty => $property) { + if ($definedProperty === $propertyName) { + /** @var Literal $value */ + $value = $property->getValue(); + + if (is_string($value) && str_contains($value, $valueToLookFor)) { + return true; + } + $value = $value->formatWith(new Dumper); + + if (str_contains($value, $valueToLookFor)) { + return true; + } + } + } + } + } + } + + return false; + } + + public function removeListenerFromEvent(string $eventName, string $listener) + { + // We need to find the event service provider + // Then find the $listen property + // then the index of the event + // lastly add the listener to the array of listeners + // and rebuild the file. + $this->removeImport([$listener]); + $this->modifyProperty('listen', function (Property $property) use ($eventName, $listener) { + /** @var Literal $literal */ + $literal = $property->getValue(); + // plan: Split the literal into chunks, look for the $eventName, + // When $eventName is found, on the following line insert $listener with a trailing comma. + + $lineWithListener = null; + $content = explode("\n", $literal); + + if (count($content) <= 2) { + throw new \DomainException('This EventServiceProvider needs to have at least 3 lines for the $listen'); + } + + $content = array_values(array_filter($content)); + + $eventLine = 0; + $eventLineEnd = 0; + foreach ($content as $lineNumber => $line) { + if (str_contains($line, $eventName)) { + $eventLine = $lineNumber; + } + if (str_contains($line, $listener)) { + unset($content[$lineNumber]); + $lineWithListener = $lineNumber; + } + if ($eventLineEnd === 0 && $lineNumber > $lineWithListener && str_contains($line, ']')) { + $eventLineEnd = $lineNumber; + } + } + + if (($eventLineEnd - $eventLine) <= 2) { + $content = array_merge(array_slice($content, 0, $lineWithListener), [ + // We need some amount of space between + " // code: this is an autogenerated line", + ], array_slice($content, $lineWithListener, count($content))); + } + + $property->setValue(new Literal(implode("\n", $content))); + }); + + return $this; + } + + public static function changeConfigValue( + string $filePath, + string $key, + \Closure $closure + ): void { + $phpFile = PhpFile::fromCode(file_get_contents($filePath)); + + dd(VarExporter::export([ + 'hello' + ])); +// composer create-project wintercms/winter example.com "dev-develop" + } + + public function formatClassWithClass(string $class) + { + return '/*(n*/'.$class.'::class'; + } + + public function removeImport($fqns) + { + $imports = is_array($fqns) ? $fqns : func_get_args(); + foreach ($this->phpFiles as $phpFile) { + /** + * @var string $namespaceName + * @var PhpNamespace $namespace + */ + foreach ($phpFile->getNamespaces() as $namespaceName => $namespace) { + foreach ($imports as $importToRemove) { + $uses = $namespace->getUses(); + if (!in_array($importToRemove, $uses)) { + // not already imported; + continue; + } + + $namespace->removeUse($importToRemove); + } + } + } + + return $this; + } +} diff --git a/app/Services/Server/DigitalOceanService.php b/app/Services/Server/DigitalOceanService.php index 199598d..74a5d45 100644 --- a/app/Services/Server/DigitalOceanService.php +++ b/app/Services/Server/DigitalOceanService.php @@ -135,4 +135,9 @@ public function updateDomainNs(string $domain, array $nameservers): array { // TODO: Implement updateDomainNs() method. } + + public function createDomain(string $domain): array + { + // TODO: Implement createDomain() method. + } } diff --git a/app/Services/SshService.php b/app/Services/SshService.php index cecdcc0..1e61c37 100644 --- a/app/Services/SshService.php +++ b/app/Services/SshService.php @@ -6,6 +6,7 @@ use App\Models\Credential; use App\Models\Spork\Script; +use App\Models\User; use Exception; use Illuminate\Support\Str; @@ -88,9 +89,19 @@ public function run(Script $script, string $directory = ''): array /** * @throws Exception */ - public static function factory(string $host, string $username = 'forge', Credential $credential = null): static + public static function factory(string $host, User $user = null): Credential { - if (! $credential) { + $credential = Credential::query()->where(array_merge([ + 'service' => Credential::TYPE_SSH, + 'type' => Credential::TYPE_SSH + ], $user ? ['user_id' => $user->id]: []))->first(); + + if (empty($user) && empty($credential)) { + abort(404, 'user does ot exist'); + } + + + if (empty($credential)) { $randomName = Str::random(16); $generatorService = new SshKeyGeneratorService( @@ -99,11 +110,11 @@ public static function factory(string $host, string $username = 'forge', Credent passKey: $passKey = ''// Str::random(16), ); - $credential = Credential::create([ + return Credential::create([ 'service' => Credential::TYPE_SSH, 'type' => Credential::TYPE_SSH, - 'name' => 'Forge', - 'user_id' => 1, + 'name' => $host.' ssh', + 'user_id' => $user->id, 'settings' => [ 'pub_key' => $generatorService->getPublicKey(), 'pub_key_file' => $publicKeyFile, @@ -114,12 +125,6 @@ public static function factory(string $host, string $username = 'forge', Credent ]); } - return new static( - host: $host, - username: $username, - publicKeyFile: $credential->getPublicKey(), - privateKeyFile: $credential->getPrivateKey(), - passKey: $credential->getPasskey() - ); + return $credential; } } diff --git a/config/app.php b/config/app.php index 1799d10..ae75361 100644 --- a/config/app.php +++ b/config/app.php @@ -169,6 +169,7 @@ App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, + App\Providers\HorizonServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\FortifyServiceProvider::class, App\Providers\JetstreamServiceProvider::class, diff --git a/config/auth.php b/config/auth.php index 3fdb672..f65f8c7 100644 --- a/config/auth.php +++ b/config/auth.php @@ -114,4 +114,5 @@ 'password_timeout' => 10800, + 'admin_emails' => explode(',', env('SPORK_ADMIN_EMAILS','')), ]; diff --git a/config/database.php b/config/database.php index f75f0d9..fe5d6c2 100644 --- a/config/database.php +++ b/config/database.php @@ -40,7 +40,7 @@ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'database' => env("DB_DATABASE"), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], diff --git a/config/filesystems.php b/config/filesystems.php index d307268..6650ee6 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -37,6 +37,12 @@ 'root' => storage_path('app'), 'throw' => false, ], + 'ftp' => [ + 'driver' => 'ftp', + 'host' => env('FTP_HOST'), + 'username' => env('FTP_USERNAME'), + 'password' => env('FTP_PASSWORD'), + ], 'public' => [ 'driver' => 'local', diff --git a/config/mail.php b/config/mail.php index eb9256a..1ea87ce 100644 --- a/config/mail.php +++ b/config/mail.php @@ -124,4 +124,15 @@ ], ], + 'boxes' => [ + + 'imap' => [ + 'transport' => 'imap', + 'host' => env('IMAP_HOST', 'smtp.mailgun.org'), + 'port' => env('IMAP_PORT', 587), + 'encryption' => env('IMAP_ENCRYPTION', 'notls'), + 'username' => env('IMAP_USERNAME'), + 'password' => env('IMAP_PASSWORD'), + ], + ] ]; diff --git a/config/spork.php b/config/spork.php new file mode 100644 index 0000000..fcceb7b --- /dev/null +++ b/config/spork.php @@ -0,0 +1,16 @@ + '', + 'filesystem' => [ + 'default' => env('SPORK_DEFAULT_FILESYSTEM') + ], + 'code' => [ + 'enabled' => true, + 'settings' => [ + // These vendors dont always match 100% with the versions or available interfaces, likely due to missing dev dependencies. + 'blacklist' => ['nesbot', 'doctrine', 'google', 'psy', 'cboden', 'symfony', 'phpunit', 'mockery', 'zendframework'], + 'whitelist' => [], + ] + ] +]; diff --git a/config/websockets.php b/config/websockets.php new file mode 100644 index 0000000..45415d7 --- /dev/null +++ b/config/websockets.php @@ -0,0 +1,141 @@ + [ + 'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001), + ], + + /* + * This package comes with multi tenancy out of the box. Here you can + * configure the different apps that can use the webSockets server. + * + * Optionally you specify capacity so you can limit the maximum + * concurrent connections for a specific app. + * + * Optionally you can disable client events so clients cannot send + * messages to each other via the webSockets. + */ + 'apps' => [ + [ + 'id' => env('PUSHER_APP_ID'), + 'name' => env('APP_NAME'), + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'path' => env('PUSHER_APP_PATH'), + 'capacity' => null, + 'enable_client_messages' => false, + 'enable_statistics' => true, + ], + ], + + /* + * This class is responsible for finding the apps. The default provider + * will use the apps defined in this config file. + * + * You can create a custom provider by implementing the + * `AppProvider` interface. + */ + 'app_provider' => BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider::class, + + /* + * This array contains the hosts of which you want to allow incoming requests. + * Leave this empty if you want to accept requests from all hosts. + */ + 'allowed_origins' => [ + // + ], + + /* + * The maximum request size in kilobytes that is allowed for an incoming WebSocket request. + */ + 'max_request_size_in_kb' => 250, + + /* + * This path will be used to register the necessary routes for the package. + */ + 'path' => 'laravel-websockets', + + /* + * Dashboard Routes Middleware + * + * These middleware will be assigned to every dashboard route, giving you + * the chance to add your own middleware to this list or change any of + * the existing middleware. Or, you can simply stick with this list. + */ + 'middleware' => [ + 'web', + Authorize::class, + ], + + 'statistics' => [ + /* + * This model will be used to store the statistics of the WebSocketsServer. + * The only requirement is that the model should extend + * `WebSocketsStatisticsEntry` provided by this package. + */ + 'model' => \BeyondCode\LaravelWebSockets\Statistics\Models\WebSocketsStatisticsEntry::class, + + /** + * The Statistics Logger will, by default, handle the incoming statistics, store them + * and then release them into the database on each interval defined below. + */ + 'logger' => BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger::class, + + /* + * Here you can specify the interval in seconds at which statistics should be logged. + */ + 'interval_in_seconds' => 60, + + /* + * When the clean-command is executed, all recorded statistics older than + * the number of days specified here will be deleted. + */ + 'delete_statistics_older_than_days' => 60, + + /* + * Use an DNS resolver to make the requests to the statistics logger + * default is to resolve everything to 127.0.0.1. + */ + 'perform_dns_lookup' => false, + ], + + /* + * Define the optional SSL context for your WebSocket connections. + * You can see all available options at: http://php.net/manual/en/context.ssl.php + */ + 'ssl' => [ + /* + * Path to local certificate file on filesystem. It must be a PEM encoded file which + * contains your certificate and private key. It can optionally contain the + * certificate chain of issuers. The private key also may be contained + * in a separate file specified by local_pk. + */ + 'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null), + + /* + * Path to local private key file on filesystem in case of separate files for + * certificate (local_cert) and private key. + */ + 'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null), + + /* + * Passphrase for your local_cert file. + */ + 'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null), + ], + + /* + * Channel Manager + * This class handles how channel persistence is handled. + * By default, persistence is stored in an array by the running webserver. + * The only requirement is that the class should implement + * `ChannelManager` interface provided by this package. + */ + 'channel_manager' => \BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManagers\ArrayChannelManager::class, +]; diff --git a/database/factories/ConditionFactory.php b/database/factories/ConditionFactory.php new file mode 100644 index 0000000..9bcbc60 --- /dev/null +++ b/database/factories/ConditionFactory.php @@ -0,0 +1,23 @@ + + */ +class ConditionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/AccountFactory.php b/database/factories/Finance/AccountFactory.php new file mode 100644 index 0000000..4e6739e --- /dev/null +++ b/database/factories/Finance/AccountFactory.php @@ -0,0 +1,23 @@ + + */ +class AccountFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/BudgetFactory.php b/database/factories/Finance/BudgetFactory.php new file mode 100644 index 0000000..6b2fc76 --- /dev/null +++ b/database/factories/Finance/BudgetFactory.php @@ -0,0 +1,23 @@ + + */ +class BudgetFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/Finance/TransactionFactory.php b/database/factories/Finance/TransactionFactory.php new file mode 100644 index 0000000..0c89faf --- /dev/null +++ b/database/factories/Finance/TransactionFactory.php @@ -0,0 +1,23 @@ + + */ +class TransactionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/MessageFactory.php b/database/factories/MessageFactory.php new file mode 100644 index 0000000..ff5110d --- /dev/null +++ b/database/factories/MessageFactory.php @@ -0,0 +1,23 @@ + + */ +class MessageFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/NavigationFactory.php b/database/factories/NavigationFactory.php new file mode 100644 index 0000000..1c78710 --- /dev/null +++ b/database/factories/NavigationFactory.php @@ -0,0 +1,23 @@ + + */ +class NavigationFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/ShortCodeFactory.php b/database/factories/ShortCodeFactory.php new file mode 100644 index 0000000..0365197 --- /dev/null +++ b/database/factories/ShortCodeFactory.php @@ -0,0 +1,23 @@ + + */ +class ShortCodeFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/factories/ThreadFactory.php b/database/factories/ThreadFactory.php new file mode 100644 index 0000000..1589712 --- /dev/null +++ b/database/factories/ThreadFactory.php @@ -0,0 +1,23 @@ + + */ +class ThreadFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php b/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php new file mode 100644 index 0000000..1b89b4a --- /dev/null +++ b/database/migrations/0000_00_00_000000_create_websockets_statistics_entries_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('app_id'); + $table->integer('peak_connection_count'); + $table->integer('websocket_message_count'); + $table->integer('api_message_count'); + $table->nullableTimestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('websockets_statistics_entries'); + } +} diff --git a/database/migrations/2023_06_08_024343_create_projects_table.php b/database/migrations/2023_06_08_024343_create_projects_table.php index 94c9242..c795949 100644 --- a/database/migrations/2023_06_08_024343_create_projects_table.php +++ b/database/migrations/2023_06_08_024343_create_projects_table.php @@ -38,5 +38,6 @@ public function up(): void public function down(): void { Schema::dropIfExists('projects'); + Schema::dropIfExists('project_resources'); } }; diff --git a/database/migrations/2023_06_09_162056_create_pages_table.php b/database/migrations/2023_06_09_162056_create_pages_table.php index b3557aa..128e87f 100644 --- a/database/migrations/2023_06_09_162056_create_pages_table.php +++ b/database/migrations/2023_06_09_162056_create_pages_table.php @@ -19,6 +19,7 @@ public function up(): void $table->string('slug')->nullable(); $table->string('route'); $table->json('middleware')->nullable(); + $table->json('settings')->nullable(); // 1 sentence $table->string('subtitle')->nullable(); $table->text('excerpt')->nullable(); diff --git a/database/migrations/2023_09_06_181801_add_columns_to_people_table.php b/database/migrations/2023_09_06_181801_add_columns_to_people_table.php index f6767df..fac463b 100644 --- a/database/migrations/2023_09_06_181801_add_columns_to_people_table.php +++ b/database/migrations/2023_09_06_181801_add_columns_to_people_table.php @@ -24,6 +24,7 @@ public function up(): void $table->json('education')->nullable()->after('emails'); $table->string('estimated_income')->nullable()->after('emails'); $table->string('estimated_home_value')->nullable()->after('emails'); + $table->string('photo_url', 2048)->nullable()->after('estimated_home_value'); }); } diff --git a/database/migrations/2023_10_01_004656_create_budgets_table.php b/database/migrations/2023_10_01_004656_create_budgets_table.php new file mode 100644 index 0000000..964ce5c --- /dev/null +++ b/database/migrations/2023_10_01_004656_create_budgets_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignIdFor(\App\Models\User::class); + $table->string('name'); + $table->double('amount'); + $table->string('frequency'); // Year, month, week, + $table->string('interval'); + $table->dateTime('started_at'); + $table->integer('count')->nullable(); + $table->dateTime('breached_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('budgets'); + } +}; diff --git a/database/migrations/2023_10_01_004659_create_accounts_table.php b/database/migrations/2023_10_01_004659_create_accounts_table.php new file mode 100644 index 0000000..b7ae1bc --- /dev/null +++ b/database/migrations/2023_10_01_004659_create_accounts_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignIdFor(\App\Models\Credential::class); + $table->string('name'); + $table->string('mask')->nullable(); + // Checking, savings, deposit + $table->string('type'); + $table->string('account_id')->index(); + $table->double('balance'); + $table->double('available'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('accounts'); + } +}; diff --git a/database/migrations/2023_10_01_004707_create_transactions_table.php b/database/migrations/2023_10_01_004707_create_transactions_table.php new file mode 100644 index 0000000..c8d508a --- /dev/null +++ b/database/migrations/2023_10_01_004707_create_transactions_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('name')->nullable()->index(); + $table->double('amount', 13, 2)->nullable(); + $table->string('account_id')->nullable()->index(); + $table->date('date')->nullable(); + $table->boolean('pending')->default(false); + $table->integer('category_id')->unsigned()->nullable(); + $table->string('transaction_id')->nullable()->index(); + $table->string('transaction_type')->nullable(); + $table->string('pending_transaction_id')->nullable(); + $table->json('data')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transactions'); + } +}; diff --git a/database/migrations/2023_10_01_004742_create_conditions_table.php b/database/migrations/2023_10_01_004742_create_conditions_table.php new file mode 100644 index 0000000..c7e0833 --- /dev/null +++ b/database/migrations/2023_10_01_004742_create_conditions_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('parameter')->nullable(); + $table->string('comparator')->nullable(); + $table->string('value')->nullable(); + + $table->morphs('conditionable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('conditions'); + } +}; diff --git a/database/migrations/2023_10_07_023041_create_messages_table.php b/database/migrations/2023_10_07_023041_create_messages_table.php new file mode 100644 index 0000000..2d6ac09 --- /dev/null +++ b/database/migrations/2023_10_07_023041_create_messages_table.php @@ -0,0 +1,47 @@ +id(); + $table->foreignIdFor(\App\Models\Person::class, 'from_person'); + + $table->foreignIdFor(\App\Models\Thread::class)->nullable(); + + $table->string('type'); + $table->string('event_id')->unique(); + + $table->timestamp('originated_at'); + + // Maybe it's an image + $table->string('thumbnail_url', 2048)->nullable(); + + $table->boolean('is_decrypted'); + + $table->text('message')->nullable(); + $table->text('html_message')->nullable(); + + // Encryption information to decrypt later? + // Email settings? What if every email had a thread by the sender, and all messages were subsiqent emails? + $table->json('settings')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('messages'); + } +}; diff --git a/database/migrations/2023_10_07_023054_create_threads_table.php b/database/migrations/2023_10_07_023054_create_threads_table.php new file mode 100644 index 0000000..35d507f --- /dev/null +++ b/database/migrations/2023_10_07_023054_create_threads_table.php @@ -0,0 +1,45 @@ +id(); + $table->string('thread_id')->unique(); + + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('rules')->nullable(); + $table->string('topic')->nullable(); + $table->json('settings')->nullable(); + $table->timestamp('origin_server_ts'); + $table->timestamps(); + }); + + Schema::create('thread_participants', function (Blueprint $table) { + $table->id(); + $table->foreignIdFor(\App\Models\Person::class); + $table->foreignIdFor(\App\Models\Thread::class); + $table->dateTime('joined_at'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('threads'); + Schema::dropIfExists('thread_participants'); + } +}; diff --git a/database/migrations/2023_10_15_205749_create_navigations_table.php b/database/migrations/2023_10_15_205749_create_navigations_table.php new file mode 100644 index 0000000..5b39213 --- /dev/null +++ b/database/migrations/2023_10_15_205749_create_navigations_table.php @@ -0,0 +1,102 @@ +id(); + $table->foreignIdFor(\App\Models\Domain::class)->nullable(); + $table->foreignId('parent_id')->nullable(); + $table->string('name'); + $table->string('icon')->nullable(); + $table->string('href', 2048); + $table->integer('order')->default(0); + $table->boolean('authentication_required'); + $table->json('settings')->nullable(); + $table->string('title')->nullable(); + $table->string('description')->nullable(); + $table->string('pretty_url', 2048)->nullable(); + $table->string('ugly_url', 2048)->nullable(); + $table->timestamps(); + }); + + \App\Models\Navigation::create([ + 'name' => 'Dashboard', + 'icon' => 'HomeIcon', + 'href' => '/-', + 'order' => 0, + 'authentication_required' => true, + ]); + \App\Models\Navigation::create([ + 'name' => 'Files', + 'icon' => 'FolderIcon', + 'href' => '/-/file-manager', + 'order' => 5, + 'authentication_required' => true, + ]); + /** @var \App\Models\Navigation $crudNav */ + $crudNav = \App\Models\Navigation::create([ + 'name' => 'CRUD', + 'icon' => 'CircleStackIcon', + 'href' => '/-/manage', + 'order' => 6, + 'authentication_required' => true, + ]); + + $models = \App\Services\Code::instancesOf(\App\Models\Crud::class); + + $crudClasses = array_values(array_filter( + $models->getClasses(), + fn($class) => in_array(\App\Models\Crud::class, class_implements($class)) + )); + + foreach ($crudClasses as $index => $class) { + \App\Models\Navigation::create([ + 'name' => \Illuminate\Support\Str::headline((new $class)->getTable()), + 'href' => '/-/manage/'. \Illuminate\Support\Str::slug( + \Illuminate\Support\Str::headline((new $class)->getTable()) + ), + 'icon' => \Illuminate\Support\Str::studly(\Illuminate\Support\Str::headline(class_basename($class))).'Icon', + 'order' => $index, + 'authentication_required' => true, + 'parent_id' => $crudNav->id, + 'settings' => [ + 'title' => \Illuminate\Support\Str::headline(class_basename($class)), + 'singular' => \Illuminate\Support\Str::studly(class_basename($class)), + 'api_url' => route(((new $class)->getTable()).'.store') + ] + ]); + } + + \App\Models\Navigation::create([ + 'name' => 'Settings', + 'icon' => 'Cog6ToothIcon', + 'href' => '/-/settings', + 'order' => 10, + 'authentication_required' => true, + ]); + + \App\Models\Navigation::create([ + 'name' => 'Login', + 'href' => '/login', + 'order' => 0, + 'authentication_required' => false, + ]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('navigations'); + } +}; diff --git a/database/migrations/2023_11_12_000501_create_short_codes_table.php b/database/migrations/2023_11_12_000501_create_short_codes_table.php new file mode 100644 index 0000000..b81bdea --- /dev/null +++ b/database/migrations/2023_11_12_000501_create_short_codes_table.php @@ -0,0 +1,34 @@ +id()->startingValue(58101822); + $table->foreignIdFor(\App\Models\User::class); + $table->string('short_code', 255)->unique()->index(); + $table->string('long_url', 4096); + $table->boolean('is_enabled'); + // like http status + $table->integer('status'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('short_codes'); + } +}; diff --git a/database/seeders/AccountSeeder.php b/database/seeders/AccountSeeder.php new file mode 100644 index 0000000..9c021c3 --- /dev/null +++ b/database/seeders/AccountSeeder.php @@ -0,0 +1,17 @@ + /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.0-cli php8.0-dev \ - php8.0-pgsql php8.0-sqlite3 php8.0-gd php8.0-imagick \ - php8.0-curl php8.0-memcached \ - php8.0-imap php8.0-mysql php8.0-mbstring \ - php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \ - php8.0-intl php8.0-readline php8.0-pcov \ - php8.0-msgpack php8.0-igbinary php8.0-ldap \ - php8.0-redis php8.0-swoole php8.0-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN update-alternatives --set php /usr/bin/php8.0 - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail - -COPY start-container /usr/local/bin/start-container -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini -RUN chmod +x /usr/local/bin/start-container - -EXPOSE 8000 - -ENTRYPOINT ["start-container"] diff --git a/docker/8.0/php.ini b/docker/8.0/php.ini deleted file mode 100644 index 39dcbca..0000000 --- a/docker/8.0/php.ini +++ /dev/null @@ -1,7 +0,0 @@ -[PHP] -post_max_size = 100M -upload_max_filesize = 100M -variables_order = EGPCS - -[opcache] -opcache.enable_cli=1 diff --git a/docker/8.0/start-container b/docker/8.0/start-container deleted file mode 100644 index b864399..0000000 --- a/docker/8.0/start-container +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -if [ ! -z "$WWWUSER" ]; then - usermod -u $WWWUSER sail -fi - -if [ ! -d /.composer ]; then - mkdir /.composer -fi - -chmod -R ugo+rw /.composer - -if [ $# -gt 0 ]; then - exec gosu $WWWUSER "$@" -else - exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf -fi diff --git a/docker/8.0/supervisord.conf b/docker/8.0/supervisord.conf deleted file mode 100644 index 9d28479..0000000 --- a/docker/8.0/supervisord.conf +++ /dev/null @@ -1,14 +0,0 @@ -[supervisord] -nodaemon=true -user=root -logfile=/var/log/supervisor/supervisord.log -pidfile=/var/run/supervisord.pid - -[program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail -environment=LARAVEL_SAIL="1" -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/8.1/Dockerfile b/docker/8.1/Dockerfile deleted file mode 100644 index 2875071..0000000 --- a/docker/8.1/Dockerfile +++ /dev/null @@ -1,58 +0,0 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.1-cli php8.1-dev \ - php8.1-pgsql php8.1-sqlite3 php8.1-gd php8.1-imagick \ - php8.1-curl \ - php8.1-imap php8.1-mysql php8.1-mbstring \ - php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \ - php8.1-intl php8.1-readline \ - php8.1-ldap \ - php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \ - php8.1-memcached php8.1-pcov php8.1-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail - -COPY start-container /usr/local/bin/start-container -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini -RUN chmod +x /usr/local/bin/start-container - -EXPOSE 8000 - -ENTRYPOINT ["start-container"] diff --git a/docker/8.1/supervisord.conf b/docker/8.1/supervisord.conf deleted file mode 100644 index 9d28479..0000000 --- a/docker/8.1/supervisord.conf +++ /dev/null @@ -1,14 +0,0 @@ -[supervisord] -nodaemon=true -user=root -logfile=/var/log/supervisor/supervisord.log -pidfile=/var/run/supervisord.pid - -[program:php] -command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80 -user=sail -environment=LARAVEL_SAIL="1" -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/8.2/Dockerfile b/docker/8.2/Dockerfile index dec3495..d62bd75 100644 --- a/docker/8.2/Dockerfile +++ b/docker/8.2/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug php8.2-ssh2 \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn openssh-server \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY start-container /usr/local/bin/start-container COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile new file mode 100644 index 0000000..968b5cc --- /dev/null +++ b/docker/base/Dockerfile @@ -0,0 +1,49 @@ +FROM ubuntu:22.04 + +# Thanks to the Laravel team for Laravel Sail, which this is all based on. +LABEL maintainer="Austin Kregel" +ARG WWWGROUP +ARG NODE_VERSION=18 +ARG POSTGRES_VERSION=15 + +WORKDIR /var/www/html + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ=UTC + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update \ + && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ + && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ + && apt-get update \ + && apt-get install -y php8.2-cli php8.2-dev \ + php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ + php8.2-curl \ + php8.2-imap php8.2-mysql php8.2-mbstring \ + php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ + php8.2-intl php8.2-readline \ + php8.2-ldap php8.2-ssh2 \ + php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ + php8.2-memcached php8.2-pcov php8.2-xdebug php8.2-ssh2 \ + && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ + && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ + && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && apt-get update \ + && apt-get install -y yarn openssh-server \ + && apt-get install -y mysql-client \ + && apt-get install -y postgresql-client-$POSTGRES_VERSION \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 + +RUN groupadd --force -g $WWWGROUP sail +RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail diff --git a/docker/base/build.sh b/docker/base/build.sh new file mode 100755 index 0000000..958e9da --- /dev/null +++ b/docker/base/build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -x +set -e + +PHP_VERSION=8.2 + +TAG=$PHP_VERSION-$(git rev-parse HEAD | head -c 7) + +#docker login -u $DOCKER_USER -p $DOCKER_PASS + +export WWWUSER=${WWWUSER:-$UID} +export WWWGROUP=${WWWGROUP:-$(id -g)} + +docker build --build-arg WWWUSER=$WWWUSER --build-arg WWWGROUP=$WWWGROUP -t austinkregel/base:${TAG} . + +docker tag austinkregel/base:${TAG} austinkregel/base:latest + +docker push austinkregel/base:${TAG} +docker push austinkregel/base:latest diff --git a/docker/crontab/Dockerfile b/docker/crontab/Dockerfile index e14dcf7..a1f14f0 100644 --- a/docker/crontab/Dockerfile +++ b/docker/crontab/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini diff --git a/docker/horizon/Dockerfile b/docker/horizon/Dockerfile index 3b2aa1b..e3a60c4 100644 --- a/docker/horizon/Dockerfile +++ b/docker/horizon/Dockerfile @@ -1,52 +1,4 @@ -FROM ubuntu:22.04 - -LABEL maintainer="Taylor Otwell" - -ARG WWWGROUP -ARG NODE_VERSION=18 -ARG POSTGRES_VERSION=15 - -WORKDIR /var/www/html - -ENV DEBIAN_FRONTEND noninteractive -ENV TZ=UTC - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update \ - && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin \ - && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \ - && apt-get update \ - && apt-get install -y php8.2-cli php8.2-dev \ - php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \ - php8.2-curl \ - php8.2-imap php8.2-mysql php8.2-mbstring \ - php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \ - php8.2-intl php8.2-readline \ - php8.2-ldap php8.2-ssh2 \ - php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \ - php8.2-memcached php8.2-pcov php8.2-xdebug \ - && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \ - && curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm \ - && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ - && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \ - && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && apt-get update \ - && apt-get install -y yarn \ - && apt-get install -y mysql-client \ - && apt-get install -y postgresql-client-$POSTGRES_VERSION \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 - -RUN groupadd --force -g $WWWGROUP sail -RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail +FROM austinkregel/base:latest COPY start-horizon /usr/local/bin/start-horizon COPY horizon-supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/docker/matrix-bot/Dockerfile b/docker/matrix-bot/Dockerfile new file mode 100644 index 0000000..e36c5aa --- /dev/null +++ b/docker/matrix-bot/Dockerfile @@ -0,0 +1,6 @@ +FROM node:18-bullseye + +RUN apt update && apt upgrade -y + + +CMD cd /var/www/html && node /var/www/html/docker/matrix-bot/index.js diff --git a/docker/matrix-bot/bot.json b/docker/matrix-bot/bot.json new file mode 100644 index 0000000..40c6d48 --- /dev/null +++ b/docker/matrix-bot/bot.json @@ -0,0 +1,12 @@ +{ + "syncToken": "s733228509_2_873396_723185098_370116421_93051217_173605192_82627453_0_4605,e29228_r22084_a18603_y119_t21761_f59", + "filter": null, + "appserviceUsers": { + "0a767d8967eb640d7eb1648d57a8feed2b75c75f52a5736e406bc1aa1b8c4c7badc13ab413140c13432276f90b765796f44787f01620e9fbe611ef4816c69724": { + "userId": "@austinkregel:beeper.com", + "registered": true + } + }, + "appserviceTransactions": {}, + "kvStore": {} +} \ No newline at end of file diff --git a/docker/matrix-bot/db/_default/bot-sdk.json b/docker/matrix-bot/db/_default/bot-sdk.json new file mode 100644 index 0000000..bdeee5c --- /dev/null +++ b/docker/matrix-bot/db/_default/bot-sdk.json @@ -0,0 +1,4427 @@ +{ + "rooms": { + "05831a4661e8b7029c04ecc286303b5039c3e19484daf4188858f510d5d548dff398fe9d643b55485fc1e79397616da8ebdd7989b2cce30d8046e5167c9d8ef9": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "e97ccd77ac7fb99a139750d3d62d2c92fe679849873e7425aa4af47f364667d2fc350c9e93f26e2154703c0f3452214837da0295b1df118eb2c9bc23b8b246a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "2bdc17d30c4b83cdf62440a95547be4859262d2b3ccaa38e5aa3fb7faf4221b9608ccf01fcc566ba45ead79048414f3aa124b38c8cc29a22451199fd8cfc1481": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "18b2eced520d8c513680488575d686fff25cb91dab6d5b1716218019b5a4cce9b0c190b5ea452f740adc64586791dda7cd64262c0027fd5d305eb098cc8b17ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba64ad2e5048e4bbfe879c0950ebcde87f154094a7a97f179b096f84bd1c57fbdfeeb141b712ded374e3f1ea62c072f08c467b8ee8dd41f9a5c91eb632318e88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba5232186e4a7b396d4b744b55f99decadee2560b9ea2aea72f7561f50ab791b54aab795bff939f391dde414de049a11b10ee7d1766f90e19a0aa02921d60003": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "466ab9ad10e0dc7fdd14e2baa73865eff87b55d33587df8226fb1e26d05c7fbe36a4203d3ab45e44c7c552813f97a776370151392ac8c17c185301505792019f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "495ae1020e3f0def9d172a4103f6f415b6a43c7b81c65ed3d6bbdc2502143cc0b581201122b74d2e955b446ad9c7d767cbeb360d0fe1582a65ad8f5aaf56b0db": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d112711c07ec931a1dd2972734d2c924a04a4baddab8b4821493ec41c1400d2b118db1c7e23c22fdf2bd2d9b83103e0512da7bb38e110d3f0e4282ef9315d386": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d416c086d5a811ddc7f5cf9c109ae4bfe453435944224c8705b461c730d1b7449735678907252cf94956729a008c841636d9bdd6840c712b32b47d5a0d0f717": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a517be88ceba0322de055cfb838f4122756ac42a3c65784c4389c290caaa0a895d4b8a9336c3f790dc0744ce2d6a26e3b65af7ecd63ac665942910a8a6fb2c9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e67d23a3f664a404d25b1fec0c47d5dda863af1c43adc6838b3e7e8d7947521a4d22fef5198dee98fff00149df40aed7b83429b551ff232f3e6848322845b9a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "133b24766be6dc9014e7e3e6de2a7f30f6ac2d09ca387adeaa39b047ebb2ff571d5dd70b6dcb230734654e5cd56f956f7407a09824333276705a8e699b538d6a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8491cf8751911ea618a95eb3ce4c4c62388b7df3dc05a2f815d3102a4ec3d8e6e5e84445e6af2306b6f3b51cfaf46f6f9cba1960fd627fa064e4e5b27a2f3a26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2b2fc9b69a5a8b11fb210f373df01a49ed1dfe511c88f1b551a17630f901f23c1d9322bc4de490b47d08bcc4ac0946bf9b2367b9a125d510a34e24814715e142": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bf55c8f6e5df8b4f30c53392bad7405d02ba37fa9af6aff12cd3e0cc47f4417879f5617eb91f64d611f2aeab8ee324558d1949831e19693697df917525ba0cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "09ccdd640c7b48e7a9e763b80ad2c60c7e9de112f848f99c971a125ad17570f8786d2a7dfc88c7da557d2e13b309834289ab42dd7f398767c5b7de493627b1a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d4f15115f8d55884ad962d1036ba6ba170ebab5a090ccee4e896b63bc70600942e8cca9202611ca1dd541a5bb185dba3d26fabfe95eada6fa655eee7ba29fb6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "182a525292a71b3da68c20fcd7170dc139921f9f1b897731c79a668194f351bbf6cab6a84dda7e2a4e66fbd2b5121c98271dfa49ab9908b5eae37e3b842a8fcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a5366667d4cf301848eb370d59323feb93e4b6c2e406d706950b69a1495d7f1e0b8e62729ce06de89cb25162a74ffad5f3fdfa58fdb003231fd9bc38005e2df7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3bfde078d31be7381b06c0bae4a1896c0cad8b97a80c4b5d5631cfecaf1a642b16e2f3ac4cef2b42654a719989d5037de17555e732591593fdfbe38b284348f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c9a41e814bfbbefc3cc9cdb7151a0ab3216275ff2a42bf75fa5f9f5efc01366b79f61e42c95fa2fb047d9c5ad7894389aa926ddaff04001cbb72b2e0a7c7f5a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34f5e181cc810111080d26db282a3f682ccf04d1f5224ab2b0e7ff0fb216138c45f3ec80b7cedc31d2742b31339dca6ad980677f0015a4892bea7a264b484d51": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c5544421fe666d77c5dfc17b4cdd7ac6b51d589587379308826c9ed2e2f25d80607b98f7d7c69469b334fbb52d4599bd835e5538e9cc72ec2a7e63b918c5564a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61e523380ad896b928f11d347e1be83ccd731b404373f68b54ff08c777e9289a8a48d684da221b203f384fddbcdda77a5680e810b9ffac4524ba6a8c6faead06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13579d7711a960f66563f8698da2323400b8ac5a5301680b8cf39f626973d3481e7ce2d6949ea6aafdfda15c8753bb1670cafef618713700f6f0acf152746376": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34de4fcdf0ecc56e2da3fbfad858504b89a0d14bad8719dc52fc6cae56875631592360596e57604c6ca47e2d66d01b749db41e9e5bad7ab88e824bfcf0380e84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1797a1a7cba96fd05978ef270f296e1b95617b7e5ef84d29f86f5d4c535872bfff8de9cd25345741203a225c5e7734ded0ddee86f234786af1d4d3d307f553f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "b82635002db15997d6302ddfa0c0691cfef4c4a97ca680bfff67893b2ad80abaa3c4b8e90358f05e594e8edddbb91e4b273cfc6d9a8bc2f8781101b5c448b3b6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "056bd4207f051bdbe445709debd85030dd0687e9f9787a50e7aa9bea13032c96db28eb6e91bcc957f49e065cf442a96dd9708164fd6482d4441257595438fe97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "97284673d68a6d3d4f06bbf0abdc4d7597c94a20cd30ed8d10d9a43372241da2c3b880a32ec8b49e4d8152bdc7f1ee953809aa72d89a9ed1f25f42902133343b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "692fa8345988bfceb63d925cd7191aff34ea825a98f5494706ec9d798ff70fbf1ac882c77fa5fe8d2fba31cc329494fbac4b516010f241e3c1c0a28679292c43": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7ca244af035542b87a35b8445242be291579839a14e9499ebac8347cca6934bf3df780b280377d421dd7d41123cf7d68c2172802a8dfe988ddb3fbfd8647e3f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b53b36895ad0bace449df62cf006c9d31428bc67fd560b3130f9dd83929d29be8d84560e1e8aee4d651e35c1b00ddf5960f40f2328595c6a55ab6b6ee20be2a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "efece134af2ee271d8e2b15db94c93af0310cc9db9baad68136fe99c1f91a7efa7dfecc04678aad20f29f7ccb212be8bcfb4ac92b96a942305e50942db050871": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a42d0fdd275b9c31ab7c2b20fcfb7bd08b70944542a74785fec675030225d43dc99ee403da1e5fba1db88b10e37d5f29ef8241eb911e899bf90d73f2b5b02759": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "81b6085881e3bbc50b1fcfae555243431d4d0c9f67b3ab49f40b3bcbddfff05035cc34f05ead4e597faa2279786f9060a7b146ea2f2b3a5fa6be64f4a734e7ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f76668e9160e74a5876d555ce9031e52e3f33635b3f3ee94d82a684e41ca6685b9194f732fa671348a76b820e2fdbf773c55e408b29cec00326cde6bfbf19e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "496f85ad58c51ec57d4ed4b8abb6dac6f47c58a5a316788c0f9e31e47a95381d6a4e915cbd38599ce39f60314b9b67b40268aa7c934caf747fefbe5d2c7820ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e29469adf2917532184f887d2b73b44c1d858fdac2ed28ef05e9651aaa6a1c344f6805e69356a352d211496a634003b50579cdc4f5e087c35258f82b819ae62b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55a4e6216bd47399baef1fef6a77bfd9b01dfe9fcc0a803805d32b4a1910bc27394d0bf4bfd6ee3c2b3f78a06f253294c1d59da1eff6f2bfdfe6af297c3ad35d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae592f18ce1025f530a5a27a906788e95fd21a19ae16bfac1ec6855c3f80403a95764bc7cf2f4c2de96cd1f049576972017b7fb0727d8eb5c659fd8fc28b396e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e23068d83c3ec619fe7520bf3ff1da1b149e63600ef3dfdc5ef696b894152ca2ed42b9ba477f960006285ac58aa135d1a155710e571979c7817d67d04120f50b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "af3c5b90f34fae4d6a4b8d7ac95f6757e4cec575b259520341fd4d7fdce41d84b331a7e1eea90c690837bbdb7d5eb435e93f1e21524574022f0c235b1cab3122": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b9028fd819586717a4aced09bbca1fa7e34fd0bb4862a16b7ecbd63139c7926d241c5738bc080b30526cfeecaa79e2855fec50c73e9d00073dc86328379060a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "421ee22ae9db6f43c52cbf224816d5455a65aece315464c27dc92c16b4bf606089b78396dbedc1472081b5c18908c144150b313b54de3ae96174a91cf01f852e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0b05c3aae81e58abb1c06a1d96fa378c05ac382d67adf724f868789147f06da26ae9f92bd4a8152eb6764868f446a973ec1763c1f8d42ca11d727d41fa48b960": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f5266c049370c45ea0d6b4be081006aac1faebd39a5bbb1e6bc3ad81d2efcbd8baecfdd698af40173e5756deb968a136781a8419b8e1b47939516cb03d5ed031": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0ec63beb6e901d82179ece53164ad4be1fc047e0010623399b23aa7177856fd4659f0a7caa9d23baaebf3b99cb00b02e6bb604c685cd1d55ae9f6f6f3c95b02f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cacee0adae2ede4c6dfa512fdd5bdfffb003c7764ebc4f09bfd2e176bd2827f3569145c92bbdc09b3ca49a6ee143ac247eac05bcdbc0cc2b0e5f2782d30e4584": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e68fe711bf2df4a5259339fc743e48ae8dd03dc647f1593d7d1298b63742c376c3b06de47855494545b66c15522b81039a474b3ce9430e8d0445a7ea7b1dedeb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dfb49e8fec28c28ee632c977876e5d3d0f9242a579486ab2ce60a87e0bbd60e804adb5644a9594ebc184d980ae953783da9349c5bea887a00b81bdf6f4b56467": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e42739d6a4f2abb92cd535e8e76f3f7a6de02d5bd08aebda3f86b3b969708dd43d3c7077e2a79f10c1a9211c845c1e5f654a57ae7d2a6ef7b23863cdc10e99a8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "addd3d4ff7ce833869cfea5fef4870974c1f441d6dc9982a8a268c948c56959544672c5196f9bd0fec5eb8e4ab5cb9db61d68a62c5ca870635a4a1ae517b65b3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13e39b25328e9e59a125a4a42006b520baca91878b907be7403e0b8393e75e7ddcc3d329e5f6c52144a90413da3279c1c57c36dcc5471cbd4978e565cc0000de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "51604075ecbee5b206d50237cf2b60c91dd0d569cafcc7a6a8644c24d874567bb3cf30ff4f0b92dfe2a2a3309ada8b8a052f49f5c490e5524270af52fc8714b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1022a96f46cfc110172a1adb6f93d17325ee3523f7bffcb3f0e197d057038e382ced1347d0e1757cf63e5a81735b64923d0df6abffbd608cdf549bfe43e7c275": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e64f63c2094cdb8cee6445f0ab0e36f8c08a7f684248a7c668fe40bef02bd450bd0a45f5d76393d98a421959c10f027c951c104da994766470512134e86a6379": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "786d40778b508ac41655b3be23845fdd038af7981875c7afac1576fb0788d0f6aaae3889e349a3d5eb86ab3506450346a71e587e788c0decb7245cd49fa66931": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bb64b02b48641a6e9756760377af26f299ad4a3a31ab6b5e0f98fa9117a5b6a487d879fa88841da9c1735907f6b71e1fd8f93cf6fe0f1492af5b461513f5f84a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27adc285ede3b8e6159aae281cf20996cb07175bcdda1df15185247294df60e034b6c528ae71a243104f3714cf601945415863ccb7c670d6d21037cc45249667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "baf7b4866959e7a1c863683564012315231970fefbf3421d33e79734071be2046b0fa4924f0aa2d38e95b567f8d95414405bbd45a474751376bcb58e778dc7d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ec56d806bd46e3c6b2f79c64bb72cec732f3930084c9ee093e6b4dd367ea219821615d0e3610fdbaa029bd58b10cc7793a8bfe32fdf7a18e5f817374087e3f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c969fdb113b2a036854ca073aab1a2f5b2529858250718c8fe86b41c4a684e14dfaf663eaa9f990376365aaa946b1ad9094408c7e6cfecabdb82ed1d2bb29741": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b35b3d136ff2d108b234ec47adae6c3781b8d6a39b5f4eb1894a935a5eb0d5d36de7050d5bce33b44c0e672d28e71f9a50fae664c413c53eb97b267aa12d18cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ddf2beecf8fef85bc3d3ee69c53efefac6002ed091298bcc5eb3c63e40e92611670027024127f6cc3b86ff316f2ea15529b5584dd9fdc944382f5e06b2f188a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d91fc3376929a34f07e8b3861208d26409bd18832c10450c2f295d559a2ef074bed25a0313aced78cf7256414ec09503d5af930931573ee4b60b6ba03c63cd2a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df68c1c0f1940d1125de30c96a61aed7f41e7219d3eacef709c636f269f8325a5cf48125aac9d8aac4088e447249e2f7351f159ea81d6e4fce0441b56dfdd7bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "85618624e9861c61abbe321c977d88a930d422000e938b07b4ad95224ba0b42d6f718d521665e3c19a2cce71538c3df4d7b3297cd231225a6a24ac82c64876f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "defd14bdc193bfbed74828fc19c945dd33290fbb94b149720146f8a0637f05c82b4f37e449bf51da0d199e6c4b60551eeb6c4bebc8f85d3371ae1d1a97797546": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "11fb5b91c44907bdf6e6d5f410fd1cf1cb091f812ed91d504f34933b649acebf76ae656a71cf91ffcf5944818489c8bc9ebedd9c5818f01e07789ffa2c65711c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6040eae4439be923fbf6d797242d2041945bd37615132bf2e65425289e845eddfeed34ed14bba846caffaacd7e845b0a6292112b63fb9239efe4f4eb7eeb0a85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f5f013c3fb6e2961cee8455fb4b27f52348022952f1e4e1feccf26132ab4a7fe61a5ca8d227bce882130ab977289bc3fcbb194a70f968e2a11bbe9ae61594d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08ad64d440e3f78edf64a26da33e01447447f782d8181570fcfeaf91bc37fa8d4f5d2736a72927b06e67389bdb25f82631e2bd9ef65e473f1d11e0298e600dee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "196365ded1b87516710a4188b438ac3c950db42930edb8dd7c603b4826fecd5a90b6f51c93a6cd65ed6bb7ceb79b452575a71642db8b80cb5c1605881603da2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0c9d84101e5d75fe0760ea45b92e14cf371af94a0540732cf7c1e4d3077c81054dbb2407592f2bcad435c8da964ae7e1c788c967104959e02a9432ef7f784fb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "762b646466021ba6faa81528834cbf42159634e58212c414b7af564d39eb64e3bcd3918d54abcb7f363c449e48ff242e08be02cd4d83b3d0158aca7a01e932f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d36ffd427844ce30f42bb7e493ee81a30614837e3010442b01dc59061824fb8441a8068f0a53ad7c2f5dff2dfee9df463413900f90142f93d0a6391cbaab0875": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2eb01c6cc20abadd84070eb371c363ea5fe41c487a27cbfcc1c184431737da6ebcbb0fb071c786afb24de88da44e853a37934a38de5fafa576ea4788072a3e7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9efe50a858b26cbdc672c6f0e0d1ae19110fdf00008c202918d356996abed1226901f20053544b66c65f4468f15e0d0940020fa61cafad9d1b3e93153c541d2c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0104f873c22dad7a31c936cf1d51799a3f9121db67f621e24ba07f8cb04b799fcf04519051dd76b81ab8fa5d46c4be5e7b48652a70ca3428c68c70ebb8ac784d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61dee54ea434cd75287db3fed8856d7df279242d598ee523b2e4073080652ebfc635f84322d5412b787de4adc7025b1293b053caef99497b60d8970046ad4092": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5c34f1f21c4a85ba321b2f56b49b549f0e3ebc4a0cbd93636c83d962756b44610ca8f0637e27ca4472c5d66be19c9ed186548e3c0b394193ecf2cccf95a2311a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7ee1770a8b48ac35b53dc1ecf139f9e1d111293549c9d65ab21a6fc401966493ac0017457e35e85ac1f01decdd24eb09e55bc2b75a7cf62d3fa0c7699f155354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c83a24c7ab4519be64a7255c1b7678f7ba569636967b7cb0fa96819bfb4f037521d63c2952a313b2b6ac02b45d3738e4f48e0236b8a82d429bb356987fc06521": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b681ce3d38c3f54568549e3420e235ee02b508e8c2893b24d7916e7e1c769277ed3388513b6bf533131b9c0731e7eba3bf9959db4faef28442cbabae4686653c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "881b15d0c8bf61018ea4a13fad64fa9511647a1c59ac1973b0209eea903856183b605fc6c619bc78c0d99320a87f13c60cf6b2e833b83d4efc2a90d2657f2e47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7c04e49a1ff8c8bb187f848b114a7ad354fcd247ff832f4b8bb072efcb0a243b1030004f4ab2837588aafc7b71a369968e08c684889ae196a1a885762793abe5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d1e7cb40ea789b9472b2d1e787f07f74fb0b6cf663cb865ecf7ab3582deca1225009ef78bc10767ecc113550e0919185a894cb08259a1e2e65bacb6bd079949d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e07cfad390ba4895f8ac71bc9af9eb88cf9e7d079fdf6f33fe47f2e5d4728df21c56a4b2c62dbf283872f7e4cda0dda5a90b8c6bec85bb491b70ebf179eb4d35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3067ede94b4dfb143e2418f9fb5600e5ed32be5b0c60458e244482a67cf116cf85515fe2ddb28514043689711b6e8dd9c134b229527005478ef3bc59fd2d480": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c04772b2d094ca758de7f83e90ba2f111799f32be65252c3fab6fc279c19707d43965f5a725e8731da37990fa8d2d6448de45f0f98938cd2263259da6ad87f33": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e0255b2df521b5804b489174feae084f31cdf644b1d79ade7b88cce5b4279b6baed011fd3249fa8e0f152ebdb9e7f502cd3889cd5f9d185f7cac84d08081ddd5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c68cfd9b1b778cd889969303f53fbbc235fcd9ace1f0bd1497cc991491fa7717ac50ca8d160592a447b65a20011739abd2e19df1b98a1f191b2b08c143e0f962": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7aeff6be9f470fa8ed2da0ecffc6856e8ede6b1003da241843903ad331a35d6d7a652d61d883eab7ed227f63e39d997a95911911106f12d9d510adf5d581e718": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "786e8a2adf886f45be017d7293716427c0bc58dd593447cb7f7a6937334fd8349f1d0b42815c755198992a3f288c4d9e21593059ad5fa841ea6b6cd62381b8f3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "549b637f5a884e79a3ba18b51f65c7e29c86cb801f82ce992a13b9d0d61014dc792b75dbf4c7605acac0b12cacbcd2c14086aef01f83400551b5964a0dd6537e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "402333598f3dd2e366c596b2be621ee67a3dfb7a7615202643a0e21ddd971aa50e73ed667981fa37ac05b5352e76288ec44f2c88fca0a04dad4d3e755d32f306": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b831265ea7fc002282d6e8fa15e5ce4830913372e313f830016e385333496e445d26dac245005cfd8227276e450c4e4e0786b9eb9f5f783ce5baa7ea4aba88ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b152a423a816aa57d018d2401f0ce617ea66a5cf1f51d84779461b1b71e65dcd1c8d583ab7043a45d5b237eb11049060ba403f3874c6d217afa9ebf387c00394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e3b1c1534c8e8ee8a323bc4c7bb0987a316eedd5437fdd245e75dbbf942f5c5dfc92dab40aba23ba83e5d52d5d44da5c062aba32f6ed85d0b8676f73b0f8bd6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "69904e2cd16b3e4b0e09f6f10da9ec3ad351049c0477ce46e48693453d4d85728d0bf2efad35663e1bb94385090969da7cada958466dfc5138c29d9631ab4e39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e1b8800753e302d1344167d10a11f47ec47ae89955def7723f1148601b1c2c691867c09a31195e2ea0c5c60e7b82590c15e25329a9019a7569a367369e52b31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "377468c0afa3cae3c35e1053087dda735f51217a528dafdd871b8f97c82985a79c701fb32283f4d201fdf4edead47887cf0fe1937841952470a34440ceeb04f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9176c5f04982ebf067e4f42cac989f318f999dc08ae25623038a2ebdd96364e4a5dcefa0ccd45d740df7a453662e1a47eafe793d4560cbc24ee16283a10625f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "67c1f0cc6a92ecc79766225e151eb2add18c2a2862ee0a74aea9badc5323bbdad51658c98d7d816a3a489ff47406f2839ecd7789135c0e638f87308b9093700f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58b4a0d63413767469b84fc3bfcb0b9c28192be7c7c1a7246b416ab2bbdfa3ce4178e71963cb097a35f9507718f85cc562da1b5aa932bff41e40bf668ee44183": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1802ef600525763f7b9bc7348da5ac6ca3fa5e5dea5b8f8e3719a87b2c9c2719f8b500af531c7a6522a509e4c508497cae81f2c0640f31db8799956ff6d1b7ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "249edd8dd4222f8dfe6a4b8da800d622382a69ab99b9fbc5f259adbbe26ebdff0481b1eb4f481bef25f935ad0514defb38f61d21693e2d711918b7d047619f76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aedf7da20e3563edfeec535ab3700b40bfa69d0df9eb2c04a4f772e4cefd9e7376e654dd071f5a587a8e64633b560434bb3b99161b95b93d24609cc072fc087b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d1ee13b68b999798f236ea9e03ff52738d5f5e840bb2b69acf8c47141a4508c092826a90620fb3ddb4874699b2794fd485dbc968d85a549bb34bffe1bd4f526d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7f8e51845dfead3de87290ab81c9494509ed6a6ce6af4ae5bfb3839482bad38f87657ef72a0cc5e0ed1362553f2e5114173ab677e89ea2dc8497c797ef08ea76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e5d1cee9481d1cc0c7bada7f70e3e9eeb04c4d511b8335b84afc53d7e60783ed28101bf25bf7d0732d7c3483c029eb497ccee34d6c5b2f05783afc1a802b99d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "020219f3e7e8b17fe85d78f6fde0f7ef94e0382c257e6628de6731568383f9904cd475294c130f26736c86bff0951d4ee8c6d13f75a51a3f003a51606c279324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "edda9381c36fc9aa21b45384ef80425d5a0195d83dd7e7204e1e09d47a00200af5f35083df82227dd953cc7c32512313aa32c1f6995e267055ab88826714c95f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a2919ac9457455be04ea56b0dd6e2bb284c06d816a490085b11ffe2e29eced4a1c232d8536fa5cae3c31be1846e240a7fdd4513043daaa652400caf35d1004e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5f1e75032b91c9df7c20c3a2b71108d087e6cd3e06d08acf534a0efe9e90a491f25bb9e9ed8238c806f2d584210fc0d9e501391fc2bbe87bd916070955e93df0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6da1c159111a95356689d64bc9a112640f86431a51f9da752777e99933c1020cfb36f15df4eb45757a78f18835981e3ec5613af3fb13edb26b653e96c3fa54f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f750e5d40fae0181e51d675f85594ccd43e8efe64f0f7f789e03adbd2d55541ef1b61bbef5c79a891e78001edd8703f3c25c1b8dbf81a92b6923df44c21183d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df3d50da1c536fc423d93e9dc9dbf3269ee7f542c6873a5cdb387642560019bca981134c47a9e7a8f853f9d24015789518efb9977622319ea9ceb9627bf130a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "a5189b854aa1843a3e6092ce0c713672acc6eb71b61e67ee8f9469b4db6ea55876d466d1109e753e581f648bc2d981fbada026044a3973580fa691d788eac557": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d435c1c1861e1c58e4e77c7f761ce4bed5e603b0779505cf124275b613170873c4a0a89790158173826c2422af1c0f1a66e8e9bbe66c06f903ad2ed6a58ecffe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53a824060dd912e54a8991424e514ccc75196260734533480cc0673494ad9a8cfe95d8c0f68affda4ae0f5175812942ea28aaf491e109fb7bfa0d1c26198468a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f1af94bf8fa012153134d98b9340b9a942e8b9a42fe9dac4d11eefadc5bedb56f294f681b7afafa8fcb5092341c846aae349319ef190248074d460b7551bfcac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35f38ec05292a217d9fb04b9d32ef4e167acc61ebd0076a4a5d6fc7103ec732a18dd42acd35735ff5ff9b114298efba1194afc58f10ecfa3ec937abe6c79ed2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f55071cb20d2971553b28328347400c779a23225a5926c664874629c9b946b12280893f3c56f36783d234964e28cf86bc8ed2a899ba7843319375cb6ec66dc13": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9b631a52ff60c82dd4b7ae297d69f5f416a09d852e66ae3ecd79d6716fd1827a06b679e006160e6d1cd9d3a9875c140ef92b65f3a76d49c55cc834f063a4cd45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ca0e68c299a6b56801d32f8ab5f17222796a7055de9fcbfab471976d12ffb9a1bd27e4541deb31b353594f18878b67c1acc91042f3bc2ff30f7710f36064f04": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05a972f01473cca0537f44af3a8923c6fb16c12c139d5bf4f5136cc04376888e1e8453efe1a82d0aef37bba85d762114b140266996fad28b353e13310db3c4e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cd3c28463e07bf80ae415c2233b4dbf19ee3d3032955b587ef16d5fecaf2d4915ea8cb0e03f952578bd1f7c6db5b28cd5675656fd353dd85316c27eb690783e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ee4155454dba79f1cbbd28f9bef6ffe5ce6f58a64ff23d7fefab53fde4b5871172b5041dd75df7b94e1c7ece5899225efdfdedfed7c7b1b1d06f364a02dc7245": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "59ddfc649940f2a43c51c709a0f49d23ccd861c93e4884ef056d5bf81668174930c8d96266557458bd71c0fe77c01c280fdd4a1a17b6bf9b7ea84902f2693d46": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7355b4eb2ea37782bbb78cce5cd32d82d359315505df85cbc64f383b5afd0cb8a66b55128620fcc737819fdc6d134168b47306385de972c4d3838b0c7473c4b2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b4c74e5a02b53b956fa9fef7997de3424ee71cf2a9d5e2ebb9e791d8c81a1255d30c768327530fa42602d395a4e9fddb76dddd1b39be528c75ec46974a1751de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "693ace4fe147433069ad9604abee733fd748a8b4939fb97bd57e45a0a8181f3c58fb02e15e782fa7269721d5e0f16936175ae50cb5731210a1aac0164bfe0693": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f46b32681ce440e41bbb6e5b336e44ee618cdb52714f92255d054f43f5e59fd251221aaa58e8eb173c3d5dfdfea9c968c54bea5b950ddb223e6c4930c4a36f06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dbe25919d4ee7edfb6cdcd5dd832d514413b5ba6e054c633ba388c28410c460f44fcb9bc624187fdcfcacbaeeb635323ab6a6937299f6c0087a3927e0bd573f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5af38882dd31ef1ed8c4baa02dff4cd85b0de5df2bfbb6c235f289c63d05a20c7f9cbd22b2b36368118dc5cc148c1724b2a6d43e5944bf17dbd62748b8ba9361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23af53f28d5d8ee26758bd4df06ea1901b934bad679888ab3291cd66fb4eeaf11aaf56b48f37c25f8634595e45ef6d4c3d42a42a89ed9652fdabd9972fe9351c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "200c56e7a94ea0315e8de814b6b64545347be54fa74fa334cea1a3d46caa8de4bede6af8b230339a427b15b4802e246ab050cdf56698b1ec2a3f2f5052273ec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "82c523a181bb1a00c9fcd1f3981b89c676bbe097655e09ff632edcb6d323b023a06a8a036be7963974990c2e16763f48222d0b63237988d349becaa7767b8267": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36779db1b7ae51b30525f7ff8b08a34065806f45fd7382d6c41972dc93ad8ca3d9e8ccc0ad2fb0412adc55f34c73aa6280dbf4e92011628a565917518396778e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a8d7bf5cb39bc3d3e606dec6f3d8ed9160b6f8c0ca8407436ebf84aea5eff4fd91f9d8a2caf8236a35eabc462f47dbb71c4fb939c88542cd1462ad1efc932095": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa8680b2f586d462112c940c30ae6bd0a9cdef1b58b29b4a0894230d26c7b128f87ffb90e9b17037eac8bf462191b5e17c9b42295b9a4bf4e051e0598362bbca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "107bc55f2ba273e067e289864c1177891ad5e32d9bd4c0c31e81cd063b3dffdb03342dccc00cb14bf4e2a55859377775d757248022ba12444705c66760a9b07b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8b5015fc4f1590b70538ba00379444edb69a284bb8edae5cf0fb1e0493ad71a6071b2f2e433cfd5b8a803e95fc82b02116878848c0f7d48e75499f27d9e43d54": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "026e2e20f4a574795319cebff18419770b4a9096dd09b05cf25a24c7da96f8b8b3123538fa2e359739bfd23cda84b31a415ea5e4ac8af86e37764e74cb08d4d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e488d0250dbf371ac09d6c650adfb287cb77beaa30ebb09b668c8497d5c8ba13b93918c98366cdc852b17a70c0106d3cf1253718994d9dbf744d0696617e50e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c839cf0467738496412279ce62d06618b6ab4f64c0c3bf68d1edf8f25bb0fe4bc0c4a6f9549a5b9b8b4a8e75c0f0b084f9dab9bb7ebae3b673335a2df53855c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a2724a2eebb8cf63bd5ca13c27663f851f83dd9f2ae5a852235457889aede5d6ef81f3504ef6db5ddfda99fbe23aad45920f6101a276dc406ce705170735f901": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a0814d4b15484ff4963d08bbcb6bbdc51c01237066b642b82f12539aad878ccf6cc28e6f47fc51a1b6cc1cd0a010d6b31f57a029816d55164a5f6b7d422f7b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "48e99dade08827f31966c63746585a2978701375bc4436eb3b2eb300f151e33b12a6a301df798dc94bf261788a2fac1bbb66643d9f0700cc696107568dfb1fdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed57e098093862b68382f7660a8efdd68fd5381318a3923827280a5f1fb8058b092a1863eaee43ab17d9395e92135ac80bd5352b9c398fe6909cf43b874af637": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5104569c96f5520f5b67480825a9cd8942745b01781ab546b8ed51f37d0e4e7b302c66fb2cb916c0b68488734b9db1fea7b5ae65951e819ee487fdf8688991d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6ee3d2c93fca233aa76b400af5a45445e56be3166f979127da275e26b0f6658082c5e5a956995b010884763a0d25d8d926be383059ab70ca1c10a2f0db1de251": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3741fcd86d108102310e14afd9496578d27bd0645456b9a432b22def9561e911fd332b5e933ff60ce7741753c93e13e3637344bdde622c3eb769867fa5960ea1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "45972c822c9ea16650238616961296f674e01e3dff3d8a25f78a5e3173bb97594f10d69af44ae00d07c0025f211277bbee966f27904f99499dd9662c8cd51df3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0f2a720048077a79bb1744b784970ebd95655acb2a02d117132151cb09c8de4aa9826cb1a0a81cc1e587a9a2216e6f0af22e2bb8c4d9f9710022bae849604f24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ff1d55e417b6deb1b4c07b331e89f8d0ae1c133e99044f5a6d28362e73005a565a048ee8c7ff4aa7e3fbcabc1705ed3348ae5284e68264f85c827bace35e933f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0662874fdc78cf03d637dc4dbf7a64197ffb1c7e4e8f42532a16138a1e01a0ee5a4c3f1b7a7a7be8f23243666a77dce2229b046e8228b8e22792e751cc8cde1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f0e2b6225216f168a3c84b0f6c66518bfc4b83f05355e6858c6ae3f56c297c3d51f383470f66d2a1032ae454b6fe592a2f98d59e62b836f4aa25354a1a76cdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5d7fba5afed744f84732b2bccf91f41cae412aae61c9d98df51dda4bbe67534319990b7072a1cc8d94d87d3db8809f272d4221f536180df3046ecb23d033379e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06636309cf438fba1b75681d1461901ddcfa58723b212be052859e1178a14b88cca94542caa80239c3f70f2a6014097b57405cfbd13c1efaf0dc8bb8e25b7f47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed4bf5a013732c719654fc723127fd285c634a5f69d1046d7801f734aa2478fd8bfddd12393695a37308c32badd81bc081f537abdc51a9488951b90e07c01d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6543f12ff64a72069b4b9dbc2be17ed6f18b3245f36096703617582f31a13487895843e125309e7a152dca0845e3a17bd8ebcae580e348dc3c070f030f454e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e271d92a5348185fe37c455d180b27950e84aadea862d07e0ec028374777ed078e58d26c3caec7c7a06f38ff0cf7d5c3ff1593713b92e315a8d5d2a81406823d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d7724b60ad1bde1bfadedd0c715adbb151ee373ce73a17b5d8f32842bb3c5d5d35788978a7b3f37987d39d82146ed9925d215fd772d49040196c901c32cb9607": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dd73dfc9be803ccec0b3ad1b44ee9600c6c1743c7633935c68bf2256d1f2e52a4aa1d7a92442260e35f69b3328cb0127b9c8ec47ac35ccf563463240382598f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f8593911fede951694db369a97ec5d826ea328a8c4ae6d263683a250a857ec69c66640a65bf6fd7292dd502b672c95cae691eb00582cb3a20d35f1ee80ea705": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8363cb6a3613d3d71d40ac8c1f7d3a77215343d53ad9efb6e515119599519f6e9a29d596e2c27acab939d890ff4741758dcbf8149d5f69df377776c2e95c7f8e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cbb345f2fa5085a9748dd44e1f6ba99f22645869b0d8974e51efb93dd71b631efa1b363f1470d025c789d7a497b1730b4beb7bb4b0e05017e16ac25096efaecf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c68837bb3672f248f23d5eec95730b372fbd0e0f573708e5f5fbd3b6c89b9e03f847df917f27823d21f8352ab50299debba557e895d4e767332036c99d954bde": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6389827f180728a23eb3cae34cf5a013ba660ddc9a0c424b09512b2087900544b7c27625ceff31763230e7da2d51904ad97d2d9c5cbfd378bb0608e179a9d892": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6101f7fdabf5d3ce4f61dc4254b738285fc002af7e94537f8157d6cbf8cb1efa7c66e65cdaaacdda00c5157d0df958bc9ea21213ba519aefa9661affc30ca980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2fb443333f53b5e5750583bd9f3cb0fa02f7e61003d55406a91a36ba868e2cdf730ee0fa59ff9563b5ce59eecf4534fe4e56cfd0090f94bb7ddfe6758db73093": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ad5dec05769c3afc027cd83fda489debfa62089767b425a3a1018ab3d17e1aae07bd95270a2ffcc7025cb2585e16825ccb95dc1b18bdb82e7c7c244c05282a7d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "65abd50950561eebbc11fc6a9796bf8d153f340b520c3c64d0bd0fe96fb7f90e2277f0e726626703ce82fc985c2e162f339c3c49a473cf7227988ee76a24d4fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "97ed6dc5345c419effc0485eed510d78944c946edad3d8f34a0cf235f7726431cbe26f6ae24e1329a21d92e4f238682e48c6dc93b2e209abeaa497cfc7a18fa3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2d44cbb4e2cf11014f6cb96565e2ae573a3e5cbc4ee866235bfdaabd7d54d73a3e5bdeaf41255622857332c146288f0491f7606d1fb95d638b9140902f8fd7d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e6e004f3ebb4c0af344174ab29f9fbbc3c67d6e055e3667eef3642d29401ad22952399bd40e3e3b15f60d636bb286d53499f68ac3ad608bbc066452c4d20f7a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f07b11c84bd0937eab011a3e3739d3230d22081520060f4761f34f16f7b49593701c2d08d33ae904937574baa033f35cfcf9b718d3b51391dd977ee08fda2926": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c27266fb4f2f953024bdc4209d3b2930c39f278b7c59272ed41af72cc1df619f8827e5fdc21549d2c593532e9663fb87851eca3158b2f614120632a75b34fe24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bb6487e49eb80de189a243cabd34daea113fb6bdd8466f68f19b4e942387e4c72eba38d27a0dad64645b563b6fdc17b69fb6e2425d0771209899097871adc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c943282372270c5fcc956940c4ee67af7833619ab5f94fcbbbdc45897cd9a6ee4c0b17e56246f7029ac168093eb09967bd47f169a887835428435abc667bc26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e3c2d05996716a5d5a4fb85b8ee774eac82fc0fed90f6b3a671240f9f81fd0c15c836be9fa0be4362805ef2949e63a449bd2f011810873316aa8e747793ad523": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "add8b36a38aa693d013faacb1e480cce55b418da4fbee3c3b7252f7db4c045a2e968435ffa249eea61142c065896c87184009793856df330c8dc3f418a60cf40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ace0ab6dcd196464e6d203b37a67633bb96cb5a38ce57a48c2d42ccd3f9d5eb76fb17814d4deceb9ae63e497d12156afd619c9493a998bb789dc51aba9ed247": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a37f3f631305721744eec25008721435bb5c1daf186d36cb0809022f4f58e9000f7aea2cac9e3a0895b7ff21fba34d4060bb97d4f146d7d9a881a94e73929400": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0225ecc1134082c71caf262c167258f6baa059a7978a07e233259421d1fc47280618fe6d82d07ddfc4fdda0811ff0ff73136dfc8e7b1ff8550b53b5d25397eec": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "517eb56bea5f795af30e4da57a9bed9fc2cee7e880394492c222e604ac835a4995f80d6122ca62d051bd1a1a01b47ce860aa733682186e3cbf0e6f62b1152d7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4ce16e5f493fd8ef046852b0fa43c755a0726b468cb99de7b805c4e45de9dff41ff0b2fb3634a6ee1a5fef7efbeb3c9a0c47ca5af960a26a9465f0e42431d80": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "85f245aa3d35a6e3a6393add5dba54faad8f96dd0ea48ccf211c5727ec26c629a739e795f81db920519d1181027d0c13791e91801b56b83519b634b3a93c84c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e58361a9a3f4d70eab5af1d1c1d49ae71c5de639b055b49c29412c9d5999a563e849be590f89a87f905f25f1ce6e09a53e24a755caabf3c9478b8755a805906": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "421c5cb2d8c2edfa05cdc29f774ba4e5b64dce463de28b42e40c1a9d185f8fd7d422e9fb2fbc2cec98faf70e58349465eb1aec294a996227dbd20526bfff755e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "16befafa5069a9c38e70d67aa759c7e336bf54ce7cd3c228253e48dabe9406a0419b714ea19e0bd941cd394ea447f9eb8f7ca6404105dde9f533b47b62339c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a386bcf70a3c9116f470d79102ebf7b6e1eb0c285ddb50edece56f71f12b8780788388fd4e3a3d4508d1f7037016a12b4e96421a23a7026f730c9ad4ebaf53ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1179511b825da1859f02964831f34746418b45bf6ac63e5f6f773aa901bd7c0c3f6c1d4dc64dd308ea7b93e913b0fe44a1508dd92745e540430083fd6f5cb018": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ab8601717198c2b8fd16eb6de4b64655201fca79f9b229dcd9f99091cde7d9015775ab778e98559d4d8f7ab7924c999413db4cc516e740390e174b49f4b187d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "104c81819fb2722752467d0a50eb2268f9f6ca3a25aa0e97cffc642c59fed2eacf5994dbc1430b77a8ac1f3c90cf57595cc056aff0e9b153e265ecdac037a7f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d9b47ca626657ad5cb5b66aac5566e90452e175baf26b66f6c2e54294760f45c0393e145486d5655394e9c92e07f3ffe8cdd5fabd964166f487f550312f2e12a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "843dc8c958813654a32a73361d5f14d8327b909c7031de2a849a8f4f59d95a33b44031c6e3212ba036c0303da5d69ce56a92b925e6f149445c5a7af71e7f3d19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9815fef495e10b15a809b100e1e6e0d28346b3bbd892956964b09d2a4d9affcaf6b853d1bf91d36f50a9a43f3151f569439fd2a23513aea794580e79a491ea90": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d871e4ee5d0010f7a17c1c1b8f4d39a56c443d3814c7b51d608e8df578f15a2cc5f8c371628aebc2dbd66b50499aa92de6b4c0d461e42404e79e1feb79e3983": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ce31dc31847b04923c09724e463426aeb681c00250c1a3b9b4ff9b680d61186c55cdc6358276126508ae0d907d8e116d5d32d8c529561defc130a9d1f1e52b16": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8c4e5bb5c47bb06d529978a311e0910fbcda2646b6d28537652a65dfb571aea14221e41a16f8cccecec23f747af3f2e6922a1d153b0aafba0a7363417d5474e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f99db2d77eaa5cfb51716231d97bf56b7283dc0ecdf8b69ca566f53aa29b18a9e337f01653ff3fb8c87806d8f90882aa33fdc5e43f26af927941ac5b053f5309": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58f13aeb1980b4cf0bc36b3119f8cd67901a023600c7c645bd71ced374aa7c3e3a2e6d96522a6a3d679ad2afeea0307dc82ddf89693be9a3028d94b22a027002": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cf86c40646897ce5fb516545783c901bfa34b67b9f01eff786f58ff4d0ffb79dcba7ea1771946e35555d26607beb285cab685fd65f64b76d51b239c9d34d1400": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "cdb90cbe8a90d44b381157a84ab814dd76ac3bcd0380bbc84022a4fe69ea3ee1306fdb4a92390282f5d36c1763e580a925af14a1a52a860f93266b242cbe12be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f8c07a1c01f5b6e03bbddf0e16b221675ebc54d04118b4d9c995b1b9029c78537d404d0eee6a509626b27e070627bda3a239218722531c7f5edad19aec09c6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "100bd0b845a62e14af455ba67027741a6a876a5fc7c142ec976c9aa280451e91a208e74238ef17ec3aa18e69d0f51420993181deed8c7b89b8a535a5ce104d84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f9b799fd1f4cbaf00a0d2675697dfaab3b8e46b66c25e3b61cc9f7649690d32a1522d526efc0b3f92c669f918219c0d0477993c332cc0b92d2acc4e5754309d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "70bee58742a10082fd9d14d0e6202017848d32549e9ad6d5aa7d3c73db067cc9649920da1052da37e038bf4ef1c63b8f591389fb7775a10cc4231d97be6b1e69": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "232b91a0774285327350d64ce063ee4600cf206d1b7566aa334ee4fd14039862bb358c344c7d9685a6b208269e42306786ddf8bd2371667b8bedbbc37e2dfcb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6fbbe7a64ff0bac7a8ccd91ec50e1c112f9e77e5fe1c313e094ebd9d3a4aae32136ba19941cbd5a9d2cad539744d055caed46f4d625b308f24a359e7e7dcd07": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3b81868c9a823ec39396bc0626d4bd07f92e25237f80f93f2a404d1f23d5b1e6825242bfe066a4d6beed712836a364db542f81710404a1fc8b68356e03661168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f054e9e0876e2326e1a6b9b51dc7768edac09baef125404e47529359f0ead4906ed77a3c0f8df98619351a1dadc166e99f1d1f14e24b0319bc03537867483e29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9c7be6b407b91f7d272781db639e8c94506891717f318cf873cf8641e0b7c852d069afd65d9e36c2361e8f67e3afe3a1331e9b71d1aecf6bfd2318788dcb877": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1077d77e24bcf9a77a2ad28efe921f57d900a2f962f1c1ec7ee58f1d7ff63fa387e34ce2b44b4b51798d3060fe9f77930d6ddf117d4eb371caecf3e3b197c44d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53d88cad7cd84a61c678db6c1864751cc0e259d38230421adb33ae480f36eb9595366e3ab10fd0b0c3d6bf5b4460300d1c8f5a840a7f3bf2509b93e3c1ae4585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "967b8bd598a0f9a36af07411a959c93b47f2fd030ee1ca31faa048d16465c19095e926b4916db8c365c67899f72ea5393b37f9d7810f5bf98528fbc392ff3361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8bf47c9568089aeccc3104d5d096be6c01f57fff37f57271debeaecf61d728ea079208e235d77f3287b0200db1a431176f814338cd8b1993552c396481235090": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9018c5b0522bc8cf4ce580732a3f76714c87a737d6023421a2b48531a4f134570b8a0e49fe9200b34d9d8963df6c0da7457e82b6b7f5a68877c68e16bebdfc84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "86eaaf8826d0aaf713b9776c47d09d34c6433f63162f4075411061c9b84581b2f6159d057da9215812a7f22ef5ebf42389d9e0c0d01bd58318dd8554fbaffa31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "758a40f6b8bd6677f56cc48991159078fe51ef9367c7cf29f75fc3744eb72a7301b849d813abaf7655e8bd6da478b036f5f43d23b01c87cd2a4002501172de40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8e75e43e9c8a281b6201c4a70c561ab7d4477c788693df081b8973fdb1833608144fd31709bd2390f56bfec83f3aca85f640bf02dd031fcef12289cd1157a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31e5fc6d5794f568a14636234995b2fdc4e944f4dfb644408558d9206b43bd1f4032d32e75db67d061bf71932bab1bcaeb3595cf9acfead7749230873e29f201": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a7e6fb62e58be265ebe440b691681019abfe7bed0539c38573c34852c783e70ed9d89b311c768106e06be4ac30f03b9bbdb839ed77a71d4304887d3e0bb6bc76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9a7de2ec68a03c4bdfc456271cf47e6dbe3640bd664433c2aab0f61295dcde91f7e4afe7865298f4412933b119c95f1bb701961cc466d9c03465e0dbf1cf1a25": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a50c60055717fd35a6552574b79c198ba07b933c9fad1d71d24a7f3d1242610cb408c14edff911ef7c02cb7917943ef136f263994f94f33cbe9e48c608d24c6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95ce95bce7dae645e0f34b4c06d856dc50edc23acf519dbe8edb2679a7f3b7faf48ad714b1c371e47a77bf7657a6f398c7143475d44d6eb71ef54cd723b206f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "886aa5d3b5b219e20a1c338dcd2a5882588423a6877dfb1d881ced35a951c71ed77b68b10861f6f53375acad05f6c7f35e79fe08db29381211cd73e03f97a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "57d7851a61cc5d00e940b2a78424047ecd3f960b6ea5c6efc24b791ededfa94a3f8444775231cc049e1584de6973653a77738c1e9a51c1ac23d6abd5c56772d8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2022f14aa2158f0e00a4fa14423aed77a04f8f5a249ae9827f9c452188e5de4727b07da502d6e16093f8bf9012ad775cfd034d1944d3adbb67dacec6bf62ea6e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "43e00f9109f8dae0e896dba6f62dc44d3b60c6fac88665074efe25cb829ca2ece65dbe3ed1688365e744d4c311898fb78afdf4f79c6dfe29ac99d8abbdb0597c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6be43008493ceaef447ecec66fc83a2ca0ddf8d7a3cabdec51bb7de66a16e0967a297985c679ca63a0ead7005a794743130c1fe657fc137378580eb6c5f5b6f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e390d23a16248c86f21755e8ae2f0fd9bde81ab8852ce26b84a088a086e2bf5c0470695c1714e05abcf89b7450572e47dfdc364fefa993902eeba064962e46c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "794e802fad50d4ed108e0e35ecbab9b32efe53886da3dae11c9a764cf99a0db6599e41188f6077968d8e7f20ecf958aceacc32b962bf7908e5b5382f3dc824e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b1e8ef66af2eb9e695a6593d733a0154f1861947ae040b32c88e6b6b760aefb9620785efb10147a2a720b01941504a30a0efc671521246717163b757260b6578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "572d769b8b2b0c6854e0cea2fa9bc1544353df0d4c050ef89595b16c1d9f8454861248f34c5b7af1e0c465a1bc630595f5d64cfd5e3257da1a42368a725493de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35e4a34d2769567dc50fa745d04c0533226680441280fa9252551518edff4612d8984a0e456f7e3a28a9fce8dd9cd096c4b8db208ec896ce9e58cfea10bb1840": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08e13829301245fd54b4a2a82488f68661e87a92d8a79c6070476029dd9ac5df79c1f9a6643e323a8949fafa35ea84e6803c2e950a51a4da98dd6b03d3f01075": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd537d803b8dc6f853886122e313d9e6672e381c4f9372b0016f275d4cd3560fef323e59016275fc43f40b4d2234eeb9f4efe37e49a6abb82eac9c0059795c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "0df380c48cf1c1a41749eaa0570ba16e5d7d2930ae8a565769883222ee5651cc85bb8442197649b8c26fb62b93534a47de4857b321f7d4e3c43063631777e261": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb5aabfd03df4ba48f040e4e706d6eba303ecda4ef1138b3f268b21a5fe696b494aca5ac0003efa5ea974e488dad7e8e80796c0ec883ced292356e7652c39cf7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "442441f146ce1f40809cd79b0fde1b13525f091b968660fa0730a841ad72aa9362a748fc90edd4da201f585f4ed86236f5b1058d694ebcc2dc2aae88260149c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e524ea86e91294977ae3ed4dab8c9d99d8df17f404f3a3a11b3bd935c6324d1e508afc513a17d4e82e0a139f4537ba62e503ceada9f3172464f6e798624746cd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "963a472ee88bba356fb6bdc92617394ce205dc3904fb834298a9234cebb681c21cc454e7179766d97cb794c227df1420852e17684b9ef1b2388234c8ba0bae82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c300c22894e9781259fce4e31ed85077134a3b178506d9bd0e70d5fbf769ef331a728d2dde5ad728d500e5c4d7c0088a48c029b641a7e8914fcb141a197f5578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6dae7a74bdc95a85b7801978e0e7881395536df16a3df226875276b68a3f283231ae9f12fb520fef9191825ac382769bf7448b99306544331951865c33ef602c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a873170b2e4feb0c75e45a490c9b240cd25597f47f14161742e93d9556a4c30fc262d9f501e6bfaab4738ff7dd32bdcc3eb33b2f62dcfcc403bca12b8a4d1a63": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f16cdfedd0bdda362b0a0785df9430ad86db34f14283b6543c75c18ef64518808a3565cdb3735fdda00e93dcf5cbfddcfc76d5fd8b47e8a918894b7ea5ce24d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4710ff06af2dfb2227ca9e195be7e6bae372cb0916b2a5388e6bf635560ea18d68827039b8bb6d928733ed0fed93f3475b32343c5afc6e1cb6384e857785ebae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7207b9cedde4598e0a74187039b433b3dcb2c382a592129a2d5c81628d447bec76bf0451d751f8a9326b6cc039078a156b948d325e30513cf7e237fa328aabcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e1519b3b487052dae57fef1bdb995de1106cf525544f3ceb6f0524e3b9b6d63898e459f3f78f211ddf2812fcad9d9e94b0498ad065536fe62324b18390b1fc5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12645851fe7c3e0ba3721bc1a70c693da011912e4571b71abbdede60e8da0c65c3f11fa878d48558f02f1a9aa2ba60c9ee52a1384c3975d3964d58e577c566e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "eb1751338d792753933809c544e01a4ebc1b0a1e3b91419ef945d5eafd1b25b6f9b0e3466e92831dfe0f2e7560fd6e50f3ec47ce5e50964d59cb4ae6b52998ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c6c8b64ecb9cbf5963522e7323f2adc56b5af634e2edaad40748c8ec466ac0bfe4aee4401d24c4fe6541a3a97a4a33cc5079382002c10034938f194a1cb76622": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62013622bef4f98be9b49e7cf687c41b48477d6b910e53bf8bbe0dd718120d7d166c3aac6c8c4e74d33989c0f84fff7b159a7d0bb7eb1145fc3094ce48447bb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4a186969a558ce541ff8796ae02407de14e62d41d66c927de43462af20c163b77f4320f741cf1895b4158bcd2a4a039b11bc24d1e3c47240a6054b01b8eca039": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "380ac5ac6fb6e6edb820cdcef66538c178dcbab97a87ef963077bb6f467db56ba8ea2262e3a1b893531c37907b162358c38df359bc32125195614ea588f6d6c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6d1e107a2d8d7a03149b2e4b11bd27ff1f5aa58c94a487e6ce5301f9fb2b971147cc5bb2bf3a245726bafd13f38e27b66fa8b26a5e73b862f575e7340e949716": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3faec2ea50ab8fda976742faf0f72ec059fdbc9f696eb6e320fb37db16d52e767448c159d829905c2274a0b10ef64e30197bc98831d2e4284400fc1adc9443d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f034029362eba748fa3b2f9f9696eb7289b782aec3200297354cbbe95f6bce4533884173c2fdd4628ea9f02c860e2b85797bae6983994a5d2a72c3fbbe8c8067": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5e727bef0a8774a3ada6d60263fa4140161dbc051af4a5ece65f07e03e10ef8a09d7a580b0a452951fa64c00eccbdd0da4a58425914d4e761d1698918933de09": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ca7b16d620e4d1622f1717510bbcfc3a8fc46d208c426bb6282b898aac743f8c3f23a6160c78488eb28ef2c483e65e25658af487c9d868858e7a8663c777ea39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "495d94c307f5f8d2ab9dab84764fe1c9cc68de581d25e7479a1f51e4acd0b0df979506af7899ba0f8c58fa8b842bfa0d888c79d5510718ce0a03ab0ecb3e916b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c1bbf2ce9a5a22d58196014885f901d4381fe0987a80fe44e2b932944681c6587d9bfc88128bc6f4af2a15176bed3cad965fa9a5da59fa79f18d894d864685ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fe2c47c59cbae07260b4f12b6425f4892eaee2467019b4a58ee017b9af2306c12211857e5a440a3aa2ca0eaf057e7cd7e12dd96d6feaa70ddff86eadd481a98f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f430c70abd8328428b0aff111c846e35b08f77378dbf475855efe049b368d02be9c152d62b22d482ceee0b1920389d007f82830f1ed206bcf3acdc4a490ce49f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "76ed82f8ee415c9ea44c53824440d76e6da885b92af1f4284bf64de97b0215e2314501d1bbdc6ed339a1d59dd779783e6652eca8147dee091a7c015dd9d24db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ccf4d6f66f3be021f03ba11d84341ca1ecbf641ad1d6628bf8aa7c356d147f4ffab2393301e35b342143fb9066b387ee2f09e1d18fcd6b4d152d9ddc15ab6272": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a410b07d9122e423e527e63d61e336eecd6f027b33b36ee070aea36fcfdf590451f1216f30e1acde4253534be40e6e00af2e372b686b84fb7393f763b7e0aa57": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5c158868b3b3ad985d52d2638cb0b499a048763b73e93633aa5a1205325b92ac3324dee5694c13b25619af6ca89fe69a2b11c519d991c90f65bbd0a1f351efb7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "71d9c17ee13b6d805edc523737ed174920b00418718cafd4dfaa4c81936d444d9a3a9052a0e369a52e0f41beaf176c506a0616c8c27bbd3064189c1ccc76c7e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "18c216e277374e8f9ef85441800abd1f6631904dfe2243addc4f20a46d79a6c99690982d504987a7c0cb4de910d2eeb779cd1385e7a10cdc681a945d45da5807": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21d16bbdc52a3dbea15a5c06d41c68dbbdfbaee11f5ba88eef1e3145ab80bbf14b5d2755fe067c877fc7bb5c50507f38db8484c75636e4b58ef3f12b8bd97c83": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a4b1473ff94516c5eba403cb5c8d21dcb17091ffb560eccd1105fa4f7d6567e67efb4233de04a2b4f4eadfaf538db9fc20b0410a62dbee0d9d567e1d93b6678": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "08edb4039094b4af2c0ad366eaab8bd012057b969258c45aefff820c2f82c6547267915963b98da7816003e56a93efa0ccd53ada16f5c57bcbb6712e68bb3e0f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6acc2589f5907c214b754dadbdbed06b7486f33476263da7fafcf9d7ca93e4f87cac8ba27725da4fdf918ab6634664ca0a1f600c84fa311f8de5517e274336ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e863681afe8b4261fac46e3a83978fb9b7dd5536a25a809b4a9b8f787d7864e2182abe86175551abf1149d3dda5ef0923a10e3629273d140f28d616172dd515b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1823558b8a46b2c76eba22d14819531e0d71dd9c8610b1fb97091f99a14a92c0256b24ebe623307f4ccb70898702c47f733a1f1b515231712b82aaeddd3a3818": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e49bfb24cfeb61c5c9ddbd06f6a03e65e01db16a3a1d94f206683a71f35e03c533c3461f0bbb0087d9ecc3623eeaaff39ac9c54e8a8c1e0759c5fb3ce10004e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "837544154bc1020ee8abf1cc7263127dc8c59ac93a7d7d5d01b23903ae19e00c87892991856de22094c966762961216ecb463a015a12928cb820b6e5f2038213": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cc638aa21245ff76013a001a5a2dc1230fa8f44855a6a908021a59d431debb675f7d564a9ca394390018746f1138aff87ca56a9cd4a9ac48700e253a2254a337": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "691fa62d560b8cd1e3e84770dfc584415b9cf96161d9bb08321ca601dc33fb6e80b716734c6ccae05aae57d158d90668ed99ad75ff7d5ae705ac0f9164ce202a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a6044c22c8fecb6d854ad33f159948ae8d8b93c338549842ac3b70b47859ab6ddf472a9fa44fed1556a44c759dab82b3bae426b9c25a5fed0d0590792d1a01ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5b0a02d28856e1bb4c5adae56511520a29020085142db55aed91a82fe953443e9ebd00216788f7e73919f4ff12a8823c17d6d50bbdb52d448d6c469af84a25d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96e65e141186cc225c85de55dca947e8dcd7c6cade524a58d82f07429fb3b47cbd8eb927afaa67b322b59621a83897c58bb5401091f440c320db5eff26d02c98": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cbe4a3e3e2f90f36afcdcaa79295396aa29673163c1388efd0aec2643bfb1665328c1206eb5ce0d2e32573073cbfd9da625712304c3af021c65578501d9e707c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac6867e7173c6d3bdbb0f5aa5d776be1c8df0700d0f95fa0a53618475d878affe54488795eb4bbb89b28f4bb6fc84d73dea3d49c97774d1cf943bc17f9bf68cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd03bf0639b9c9799e7260160904b526b81b156756280c60aed58ca4dc06fe2d78a0b9d9ad8d92d0cc66516165f97fc0035d54fd3b12f974a93b245d57ac4d42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36f4158574f61844db9d3805420de2aad60a00af65b4d11dd8e46a86224bc23cd7382c1f4b122e67e1c722b816efd2b56d2ddbce631f07f1fd75592155875360": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d97c768079963380ccf2cee6172bd8e67198b990e7d9334691dbdd50c1b551fd4f3131788708b74f671b8502b8dbadf275e225c858347ed6972cb7c07d4557f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "24e38a2714855d96642374361b6e26c10d75f6a6a584a896a940130196d340accad9bfa15e078002d0f45c56fb04e74952008040e164e9c83a7aaabf9ec3e624": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "323363a76fea01b2a58ae7a903f9bca910f6609025dd700d6170af3db29beddf9f0ee83397e4218b645378487d5e6660ad294d525b884d1c0d68a4bbede10037": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e135bb4d0258b2e49c6eff83b3a086e98dc2754bed80eaadcefe24be338b606901721c956973d89e7ff2b33eb689e640f8f5b3963dca7c9f941b2f01c049cbb3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c8b24757a5b6677d436ccb84de75a26ba6e2c0202a9c9e65876da0128496c84d3bfb874df86f4f44da0da5d4e9c25d49bac16c423046f5330566bb86c96d938": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae93a11e7cd4c212acdfc132a0215a6eff50d3730c10758cfd104e507bfd6aadb31805bc132c6a679c82898344557e891f2215c79979140e8b1b4f5bf8e15405": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b61b8110f7f91fc8188e16a635220760e2962f2a8208fa8835dcda6b4d6c8b94c33ed056aefe9315306381a580edf6ee15a3eea13c94fe4152cddff165bd274": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7aafac8fd757755039a5609fa4970ba757750c0d6c02c1d43f3f8decf7334c4f37cc8f060ea70469e476626a6d0680ccb057e38a7e70714a4f0113ac7077f641": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73bb82cd6fb394580fbc8be5b5351d63d1d6dc33a22ff7caab373c0a1bf0e83b6af9015707e3b256c402e1151b3be4e8c5583152081dc0f024aa6069540e20a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "306ff292009141950dd3b40310b3820554c2a48ada0623c52e2a72a99d4f7f87e79b099c9aa6fdfd69a2f60e35c310c705f7da6c6319d4b79df978d385c24774": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "50ce67e2c17f319dfcc1963524e27b4145d08bc1f452831aae3ea17e87fcb036dc37f6a9c2115f4ce26725956b454242669767e473f2b71158758e50a3f3534e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e50a323df1d8739bc82a3477523ee6401ca6d7d1a40d6cb98dd0a5401db9396caaa0d3f51e662f9042b41b7b9cb34de6bed078cde2228fad4ba9b5182115e486": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2c18cba49c0b0b8912f70d4adc009f79c6f58361be3ac71a8b72eeadf7ab9f81d08eb902b0246b70ae6084b125cbc5d2a76e5de035633778eba7b14d91c6e2ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f264b06cce72c456f3056e1616a5fb8df718da19489ad189515ac35738ad25fe2db0a00d21b17830153c84a2c5757c24b7f09e388053edd499e7b415193c3256": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "893b38e917623de807a14ffea5461e5848c1e6285d4c68ea093f164bb0384a5f822c318757378adddfe9807f597a15a28cdfa09562f5586ee762b9132c0538df": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c14904e06884b2db9438ae749d5dd94ff111d2c31699b5a8b78a960b522dd933b962e5f77edcb3eef4d4d10a04dd35c637bde814d6d2b68bfd0426742b9b55a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d698e328a74b01059f45b53ab05d827b9fb99b60a86e73d3f13b2b38554da8326247439060b56e4010c031b6e7a9f5e59d7d9f2c49b6113ffd26c1338842e97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "758ea3402319c5b7a2b1277a5098beb1577a9f37d914294ba6382b59fd75d77da5d7ace9a8b0fe24be0faf12d791a8a4648a6e09a561488992fdeffff9306597": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "246a37cb4fd8221608c61115adae8d351c7a775a7b1e0d2b56d26fd9080552995190c1ecf76a2d7d4a856768e4097d76b5acdbb7322d73ae83f79c9c0763fb75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "394646a9d4a8a9872fbb9ff64fc7f91fea7582c28725aba238a5fb484f93c78b6f72398f271a3714a8065f1a068131a014d0a28c6aa3fc786859a7f0a139f7e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "1c36dad803624753017e82d938d6ade3df699de1e1f771d8338de2f67f665632d13e5c6ee14054a6b816ebc32e3620335c3a7c35125683a57a9146a35ee092a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "34bc1af3e8b0a5fd7acba54f64ebe466a11f3ca60fdde3fdf085ff1c5ed3daf4e141e531ab4404ecf26ddc6d84198a6db28cf1c4781c588e3fa9f20a7614d97f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "000c5f433d783385389a2f2ad5676368aeef6e4d8d595a638194de69cccc8d1229da9fa6f06200951cb852a054dfca57ca5d07b7b86f55b597399ed127c91057": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e27860e016bf4c99a9b4e34a7ab59ca95a15f53d9c7972501592d3e00e88fe69bc4e180a0b32df442e74e6c1523028cdc6ad870e573ba6f35c4a169a30b20429": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31251a3267c51a3810ce133a8129d0e556139c87c5e1376d1847315f7978e75119e6c556291bdfc8b06362689b5d5d19720cd17ad759a34a6babdde7b6bb8dae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "082ecce216cf14368ad13217df552b02e4fbe8c2622532ac8b624bffc6177836436cbac2c5aa51511d530088ee29e9a29dccd4fc8afd8f0287806a4eec6976bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c529185cc13d7300e876257191531e1ddab6ce0f3c1aad120e2405bdb98452b973b9f2287280200b1957095975e89da6cc01d4e4ba7acd35e54f25430f6500d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "54088850c94a877c4c65ebaaf9f612044f853af3733bde3d5a5c93604e5c1923e72586a2d3d0ac020fdbe4e7f0b59c7c56cb69dae1452ff5f911305ad7ea4d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "650e4e5f7a9fe8ec2987c96dd0b0096a48688cf886939d1058be956929f68f361e4971ef0a305acc62698099ee8f70362759058c907b5bff79c225f4e7b8b35b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8f2ee1e3977a7cc6614003a8b8938d5821502f9d86de843c0cd93fc560c31ac2a613b642d34cb51d21a005e76cfa74fe0d122c1bd5dd717ad50c7fffe46a8292": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "99d82da6a7ae25c1e017bb5abedfe62c6df8d4ea98c7c13198cd56901bd004add150cd3958a23c7c7dc6dae157314b965553fe195c2e352a23b94731ad168d21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "22b470616e8873ed9d61ee2e6b3fb1a3a6b419fee7410c27844d14528ab27a21992bdf5deb5b8808adece5e1bfdd4ee26e0d866a214d8ee86366c68bbdbadd10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cdd5ae2c815e14b07cff597ed2ca83cb738d8a31e05e8e39c40ca744a2b00f6b023784c3fa971af0584c75fb7b54c695e87c852f26dac9e96d29296e3f50d851": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dba48ec3daa45deb93b3c04904f55a4f6f448d874530f3dabf89f05345e2e38b48d2e7f5145f8ac1bb1109353ef4cf30c2d5927571b43e0daa0536767e186b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "84eb615f3a31c3f6d2f91f7c9213f25a4901095e8099212dcaeac130b1700810c85bdc481f647f01abbf0e31250d17ba5df54abcb60d2db1b899e29324adfd29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd17ddfc77c1e84d093be463eece14ebad46d037d5198b882eb6669a4131649fcaba2cfd36ada7d3631ffe302d7e9e9115a597ca510138ff5ff9d80789640035": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d92b3f9b6437ebe53ba7f8d9e04dca05d5899b4424bf57afb1f242c4f0287811c48dda4b2c4514a903ce5786028db8bfa0debb4b19f88f31c983c94d7aab056c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "99733f515fb6b1961abc8df3ff7e7492fff0919ff1e6eceea0ef9d2fae5e9d51d1ad696656d688bee3113260fc66afc1d64ccaea5044d0eb27cf20f99e8cbbbb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "056267655711181befb17e31262bc5c8a0eebef65518e0f5b12d89cbdbe1e34b6d5e04a73af187afa2ac7486a6e7c969ebd0fb2de0b5b8e99d6cf154b7ebd180": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9eccf05ca77d49c8c2edcb4b943510ba9ab87c2fc25337beac39c70916e174a2be844bcc35393ecb5044ebfe7fdfa4bebf99427afdac67b3c292a82b2650e28": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f04787f2aabaf134c4d14dfbea25f15e25eb448e33c15e937e0e911b2a8f60b5b73baf928f008dca82ae2621452eb57a15bb9dfe40956ee67b723c6a2a49c7f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "15985c55f710aab7c513b81f87adf29409baf623188af4ecda04f3f96b8e66bbbdaa6370a4d28f5fc9c481951e0e06f03322f2f509f3c4f7e4173bb35377a411": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "01b546b3d09d263cffeacc21c06e83438caf0f67f846c2555d45002c4f41614d89b5c54c44602294f61a49162c4f702b3e51386b46a8245409305bb985020adf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "130d3ef4d46201a383cf18359044b80198fc82c5d9ed88b7c51eff595029e84959f836bc3b483b22c2484b01547321efca123ed77fb8495be229a13f098baf3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f6b1779fe63c39573e816139c0fee93c3a3967c2592689e6a67d673850e98393e1b761a46948562cce4b8e9f6354ce28e45e13709e1a69c3d1a57d6d29e48459": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "99683e55cf6c23b8c170fd449ab7e5d11ddf6ed8f407f8668f685ae98403bc3edc20d03ffa3aa74ae59a6a151fbb902a75b9dbfbca35ca52db8db18cb84436ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a3d98eae5d73e9ee31e8086692db20903884b4b4cdf319e9c880e077fba7bec7c322902dfe0a00d4b538a65ce28ed44d58c03a09d8c5ce89bdcee9fa873b42c": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "3f2886a92f1f53d3d83aec30e60f7b78124e202b3913a73760048eb9b5f554266c391a2606b2a4a4369b32f47971a3f7d69f2de21248b020509e4e074593d97e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4be8389462e540869ae0e45c672f423f3d6ff539232df267042fd6f6461ca324f8876027015c82af5652907ad138dfdf2d3ee6aa3709241ecdacc3ff74ec577": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "03b7d7ad4c419d274523a2ec2cc704b306ee3b48af41efb58b337d77fec5f672e59e91d0ddd1200cfb01e7b8f6d35ef5749432fd68b2e913541d0a24b3b49db4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4183acdaae68e788d970234f6a6797f0726b23430adc53bf6cd828ad4c780b8ec1bebfa91d097d374f423ef3a7772845ec1c54c9bc218149f0c0ecfa2727723": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fbc38a7d1867d929ddaf58aec86c3560d843b8856cc8286a8b6795c0705fad90fbb628de4b49fd211f77f12a5846014e7af08a225cf674c295a1393c3965eb10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "901a48f923b0a503fe91690cf36069323d0914a66aad88e56efc3fec296651bad8d82cba6f370e1f0c694de8421ab11898eb1fe1c7fd2a3a499a25a9b7470432": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1cdc6881b0708953f3dd4cfba0a9751f77fd3b3a70fa37b2111c80a604b1c60bb63ede10605c80b7373afb70bfc568d4859daec7cf493a9993ac10e4e37def8f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "018a88d72b9f171526fb8dc93aedc5f5b181450ab83cda34c941b8ab0bac09389f4608eafbafbc25292228bf822140c72a4d305da671d3c0d68e42d9b1b62446": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3e0cd83b8d68d40834b6500e4723d11b3c83a8b4da23c555448c6caf7f6c4203696b63d0a7acfa85e35d6817df26b10c230e2436a70c3ae7c75cd69d2acf672c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bba0c585addaabbf93ff0387703d47aacf16246a5c962d32a7ec179d80159b40c223e0ff587426cfa61cf18010168e3253790f7d2e2f363c54f3dfd8a96afc91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "195b1a709958076e9b54c5f4e9a3ed00fa3ad2d88f0aa2541fe5dfc731df039a0eded0d92cd8e6466a2245321d053dd51df2ea11f9521c25b60f4d3d60788908": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "83bcfa471b51cebcaeb0905f10a6c1275f43e6cdaa8747890bb57d5934c54e4b8d7d5f23f000ba50e83261f319f53358774f47ad2b76663cc103f2267e7e3aa8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55560adca3696faa3cda732b07028d8d80f936bff93a6bae235aa33c166f25e7b7368394628ce6375965dc98bb31423ae981e864e9c521c4ab19120004b9a1e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21563084d826953a7f1e254a6712011fb5340328db8189200c4fc3248728c8124ed3086ffcbe7de1a757b81ac65c9c9243a7244b1820891eb09467656bd3d1fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "322fa527c0d7a72295511493225298b95ad78ce48464e239c59c9b656197378c697ce69a1415599189dfce0d36b8c1b546a1c7ae650dd227c84d88a019f2dedb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3b32357afb9816b013c170fdac77f5f4a5b0563d7f3ef53fb8b6b030fa59d1cd6a56b0cabd637d77706ed9ef20a4a884aa240b06551b59262e762100916252ab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "57259cfc78322cb5dd7a4e413021b9dfe00b0c6e43071aef3c63c717c37f327d1254f6266556b8e7cdd27386e0515ca375063b922c15b6d74153f347c4d53821": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "54736d8b4ca55900201ae46da8b6188d67279e0dcb746e0d3541f45aee5058cbf126905e1b7ff73566657e1d81fe48ca18264f1ae6fcc87bf37eb22f4e7e9fbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "604fdb823eb09cfcfec79135c60e62f678631cdf3874a84bfa3446667f1b7c26a777c438f8d5e6ec3cea0391f1e8f508050fbae028c15afb628ed25de04b4a3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c2d9ac6a996a4f8f718feb0147762f73905346c662ec4f7631502050bbde1dbdd5e49252982b50d28245b137991964289277eee20d8f41c9831b8e0aa560b9f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c12bd0d18739a34465462dc5858ad32443bb88a1d1062a6eb6d42eca15a2ef4859637ecc3f4f4a5dd50e742c5e16414bd065762d550a16e92c1fc6105676e12f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9b34444d864dace4a7c39a95cee7728cc5dd89558a40259ccec1163949c6e3ac96257b0aec082dff98056b307f88dcccdbf46e73438665ed95a6f5aa6cca3364": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f3fdbcaff51067549db62350a3eaa337bc851589e310cee9b5ff9b52b17490a5ea1850f243133e4fe10cf3aea5ea40d7b37612bcee79fd94a290c7f093838e35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2357d1a35af6ca344a6e8d5d303755a936ab705f21bd2e791c679fc3d7a7e7d87d8d1e4664e745f2d29dfd4201bf579fb4904901f290253748ff53d3d6ab08e9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "211ec36b620e27312d6b2f5f12a272d07d3ee87f77a9cf73363b05a555a5e18ea696fb30bc83f692edccadf87a6d67d7c0663e9ff2eedb3108293962053f8a27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e0e3d030425b4b7f610f495b7f591963fab437b519be7bb090841a8715e46ab676178c6b99f7b3db85fc5a974c21decddd8e203e97887fb8177b20e64f12194e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d1b2558d94a429edccd40081b9ca4af97f8e18c75cb2ba051fe3c9fafa11dd96c921473ecbc649e0577865a5ca8aca95eeb7c9a26e9836836e9802c2bb351f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05a5e665235690cb9c12225fe49a2895e515c4557726df43f334a3711a98da193e133f1a7809ea3a1d9c71ea6a2f7e53e01d1d4f84c255f317884e476a9027c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "099fa70f7e669531fb8fa9f4fa8dc5e0015eb818f26c42b48f0dc11ba35d4405cc76506ec8232f873a0270f4dc3dc1da4fc762db296a471bae6f7cd538a35ac7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ea642b6df140d94e114f290d1bec2765939dbbde056739f1cccc69a07e234710aef7ad48b42471486a47041bffc1ebdbb4a8cbcf021a32447b1ad877187fa0ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e67744a5831dca59d219c598a417daf7b561d155e761b932a144f39b6ac5a698d8f8187cb3b3efbc85cd134098d63cd8349c11343dbb3a80a3fc4e0afcf9c1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b7a1487e5609ec81b5dc18fb0e81cb32efa350dec675c322b097367b6f524d724fa8ff468551d0185c48ba41e13cfbd7adfe79ce0d75648bf0796c136df61e77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "16948dbf5bac62799f2a33cf243451d0ff221a257da2fe64a7b177552bbfe4488ec9a3307e0469221ea0acb745a0e04b932f1aa85e2fd8c9129d7136348f6558": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d79f22199461ff6dd4f7d1ab969b96e1d5227497e0f881a864e83a0e01b411d98933259d2c23e3f3fecd5d8c54bf0abcb57ee4c6dc30e265f005bc79fc76be97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31027093faacaa186dccfa6a2be8665c6f44b91f44ddd2e7d8f6852d9321e392ac309654005423fd1e09440d4342b530f31892086744cff9b927b261b25e8db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a4f203aa78a2562d8d7c2c42b74083b7c9280a4096f8720fbbd23383c8db57d469edf944a341a7581bb9bbdbe1a609644e0baccf78e932019b4d08c700a65598": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "749adffa29dc8efb3761e7f2ad46ecbd4b0982dbb7209ad50c7f577153dfa6e565b3fc288fa7da1178c2f75be3d008da96f39acc6b00a3a6933871be35dd12fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "841646343fe6611518e0bc9326bb05ed5808a0c6a417b454c845940a0875b336d0362e92a7c6a32f352de2112c02c1c7b72a926312be2476f0fd3c03ffb21ea7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "81c74e2409f1e0cb8a856de68b024e9f71cfe5918d33be0bbd30a9ba5cd89acd695c5b5826c6381a171fe971e9157b8ce8dd2807e584ccdf5c58dcb5e82499a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c5abac333f0243eb853e3a04d14615c8d0c5b3dfac51d8f8034a8cb1b2b26f296ec52e918520b0ebb4fcc94dbc48e8da8f3d8f94d1730086818377e861ae2c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "211bf624d40728bd7c16d85024e9f09a96018e41fbe3cdd48d42cf0886c01834f2b9b4b394a5f8d931f413f174ea5ca8e6fe926ed99ad2e65542a5ebc7231a91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e82a4a00de8b85bc066820ba7b5a01f977a853d7000f37c507201ec8951dbd887ae29c4260bb99aebbf701681b5dc36b62285c72537b8e1423cf0d997838c55d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b4ae01582c2cf8399a9a9f606a5a3b4569607756a3e2bf89319408edb756f31e4b913aa1fdbbdafcc4926c7f576d485ada0b88d120f0183106f17c571e46e7d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d505a914ea44fe7a3c5825cedef1b703850a67c7495ba7cae82c02bdc2f216d02e216d3af2d0e62064eebe0f1479d817485081a88e8a4db6b55239ba9b4fa911": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c725fe608a03c69bf46b7b220837c0e8b1b39b2d9f34f3bd645ed5a9c3f657350980c5c5c8f44658c4977a445281034f5a76974007e5ed643ecd5a9ed921ddcf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1dc157c3d19915f943de01e828980f8f0a369425b8e1948cfd71d73eacf0c233a908fb8fe606425eda6c93167ce807c56dcf51428f7f9deeaa96b7d6d3b2edfb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "63e1ccbe0b73751efbf00f94e1ef70fd24522fbaddcc38301d0d239e415b68300d1ac8aab688cf454a2f62f3180de46f272d27556ff3eec55fe597d93dbdd61d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "da74814b097a3686eb75996f705bda120338ea3b129b01df46fa9f11671948aa2f3fb571ed1fb3325ac226965d6c3c59fad9cddfe46cee8d7f866a011933b1e1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b5c430a0bc26a06d7ad4dc14e6dbbfedab32fa99f2ec9ece5c600baa3f5af3aa6d29b57fa88776b97eb46b16b53dcf36a885c6e6a694495489e0cf05c539a5f4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bc80bf396c55e7815925dc89f9e2a20f7c474e910b693df4304e51c45651b7eb9d284ac456fecf5f12d83be71d406eac89c10755cd1cd514a1dc8ce8c2b92f1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b7aa6a6fe3a8119c0025a780dfc7726a19c61f8a52e4cf595e02c4e98b6d938512ba372ea07b398edc552379632b24914e4aa08fd82699ea8536ee8ca6e281af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2057a1a2c1977dfaad474b6040478f11ab9814bbb1770f5fff0a12ee454d0e683c3f4abdda4a0e3aca8df8bc333dd826acef8073130a187621dfcfbb27e4f74a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "51be56baea4884864d8852e6d50ce5b5c6f781305181f7ea107914010fe22f3c413c41fdaf75c06c12209c08f9a4d844da441fff4be99914da7d33b947228f39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "662945627f44ca432a8eed24923c60d77d2b6120d7b1500d15f53f3fc4b3bf491d8dfd886f10f055ee652e92a3c15182dbb5b618879caf2c16f414a456b69852": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4fdb84c0dfad6dc57338656abb4074f858daddcb0c02471bc356506f5535d76befa379a4205296912ddb06954dc28a3ec5d8083f68d6fcbad1ba523d24472f56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cd44dba1c9023279952cb1fc3cfc30f646c7f41e57a7ec1dade13ece84a141fe7d5784cc466923fc16dfa1ddff9aeb2ee15babd92e412977c83fcb5746403258": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "343dbeec555a1d6d89e3f7df9b65a149c30a3b5d6297ee02528753ad4036029c886902267811b7f6e75384504e96bf890f3d6d30b6181447e18d49d88ff894f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c8aec875be207f3584088f497b2ae4462898ed45ab6a6b05011742443f733e7cdb04fb72c3941393a9c1014b84a8ab18d4b877a879a9004699f644aa946320e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d6f43bf73633e1cd1effbc89f52f2c819b0dd83a55dceb88639889bc4685afe7a751944c829f411a78a2631584099018a246bdf5bcdf7378ccef0e4a34c9208f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9604fd29e55593c86e9edc3a40663bf9ddc287edf977ae01555ee307b4ea4812bf4950f020cadacaf7294108d67d0aa9f16723a97d00a005e81dcc14737303a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f15bbf2f03952802551f0c0a8a0840da967aa48a105ecbf97cace01d5d6c6c602ba1e25cc370a23a70b47724a6d58834ca5378c8edefde3fbcfdf355c9d02d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1b025f421f0cbd530e7c87ec1508c5a0b305f214e11e659c66c98e117af0386310c177771751746811bc0d567cd2adc04ecedb88dd15961015843c87df8c806b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73bca36d845a050352c46560fe1ba2460a5c6a362cd0a6f18316827e6e0b35c382044a23266eba4c03ff984af2654dcbcb151026e6becc3ff3411fccba8919d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12ff3f0f90bdf2a96db13b4aee3848fc29e1f8e68498d69d002504991de28387fe127e3a6ff374e780e5cc2a2fbbd1b86acc4b6945d5c57f474a86eba4a62e82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf92224f7e21728485703fcae7d47a7bcc00b9cbbb5246057c1eff1ba5f4928538bc48975fe2e949cd3ee501308804186137ec16d2fe57536bea1d854c5eabee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "473e453b74fd315a528026fec5f4c4128b9fc8704c691e4c507361f91cb01edade0e5e755fd5a09f742e007740903a229052dccc5b145e436d8f5cfc982581ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6acccaa23b403ed5f2d20d22d0483e37f1ae638ebb6a61b993d4b83cadd3b20a9b70f2b00dfc2bc6e98b12c8b40d8fb365d9acd35f99cb3baf962bd2695684f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "cffbb099638c976ed945790d4b1ab75c8b3a2b63ac9282dd72a769f4ff7635ecffb9f8b2321174e3872a969977bf7ab96a93cd00e16bd7124a8935c0e0993e12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "458cfe2eeadbcbd0e7406baa8226cb5cf0270836dd776824586cbfff0ba75444c5f26a15fece8cee730b6cc3f7a4c0304d28a4c18bee123482dfacc039bc4f1a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "590f5be92eb758681d38c05d55abe7ffd0c264214b0ab859627c7531db76cce60e92d78a8e1befa0019a0fcbddf406a14f955c31eb62ba13e021684ec2663b97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b913559261d52d8d75f1e489e9b048c4d5cbae2c0161c93519ed3e89089456af8342849fe385ea0dc37553c7d345de20fa634fc0a1f49b7c2aab6f073992e9c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7af814a3c14b64a627cea7d5d47c6b95a493ff864c1d5f212d753afce8c65a154241d5099ba464e763afd85c5ba41f4991de6cc8a9287013163ddc1c537e8f85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e6c3465013e79bfffc5c49a60e8b8522cecef302d3fee3ba2160d720eb9dc1e1f6c0afe130ac89e71eeec0f8e8194e0b1e2802eec12d271155fe58019ad41c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "58e967fb9bf0884cdc9edde3d7bf62fbdc04dd9da44a18f2f69b4df5f7adb9ae73a1471536436371d3951c9a5e789e491cc2fee4deff5f9008a9a6d1d6572dce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5a3ba7a5430a6a0016160be2559f0b75f027d39c8a7ae3b943c00c5b3431c5d17f3a24f9b4592bac0e684e703a3e0fb0b71fed7a8d4b5a065ffdffd86655ffaa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "453c04614e68bf5a2bed2f6dea4f14fad84c0780bff5bc58d50a1c3af8c271a4b2934e6012855ca37fa7651152535fc839011838526096357b7d71d2859ad8c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "830c1fb45ffa72eae18967232632d3d7b686a1eacff389d02e90070bab7c08cfd0b8266c826a116dcaca25e80876a22c164091767a32df9bf930bd3d137e6053": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5a6a7e6c7bf247c1dc2bddfe383b9eec0a588d612243e1ffd552329f5797c80c24dcdd2648d25ca4902b2c6c1fe69a86474643f44d5ecd7badba278e7657f2be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1005b57f519a61a630c52e7188284f51b246901953960ca53cb068b8da81a201e22ad2d69fb8f0c6c067ba1ff0d79edfcf32e1b3e9f09d2ac3e0d585ad8af368": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c6b77a2bb2b8e0637c86d6c418df081da84ca0fc822ee774fb7228b77452fd6b68481614ffb449e71e576cb17131de4517a225f2b5339476ab341bb3e8ed1c20": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fc8517523e35e900dfb9b796c232970f41224c321d63191f842a045d9fc3159853d1e41cfa27ebd4ac4d95cd8249425c228e0b3997308ac9c4bb9a177da7857b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "15bb0a9b54bd2ff1d836cc6e2a5e67dd6078a287ec8f3914019ae2dda8007db1779b79904bd0c0e0dae978e982ae64e9d4810809512fc0ab2a3c70213fea3757": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "db881eee51149bd070ae8ded32ea187d5bb86b8c104ea624cefbedc07b90ac72b0a70c6580c78de5ed3aaaaa3a1030d91b3728ae6ece6538ec48f9fb53b076b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3886f16f5c66a251d2de3c43b8dc7a465017ecbabf26738b3443e7686729af0d93e4f7f6c3ccac27ee473ed59e2a01519c901771880b4cd1af462c034f0c70fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fd6cbea9404b36aa6f379febdd3c4d604f6bc4196772c99182599989f59e2704b369cacd9395648ca7b77f585b30fea19787dd6df5b312fd6932ae3f6cb7a4fa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e1d981c2fde5fb79e8ea947cbca0b4c81e17afb4c1c50ee472eb340a907d47ac9ac4f9253d341268e243af1462980e781fc2270fd5dd121f0523b7eff161fdf4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7134a575253f60082c0165d417fa8fb2d8e5fe4d04a7b66dbdff28dac63b5878ce55fa91d3e5029ebba33b1e143ed50ef05c4925a4621b656aeee701b25760d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6998db06ea75019d254361f106898caad1339a7d37b8d7974e929b8c694524573040d152e25b0d37645a9d806437a51a1d1d268802ec74afbd2a35e2dbc82e79": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c1ac9f345e047292207ffe8457f518a80a9c6c4d7165b1eeffd532a73c6468573ca76430c6b96a4edb97018741c391162e212c1fe0aec04b67548604f4f46b2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "db8364285268213ba71c0fa3d4e2dc694e035a5ff1fb5cda2da9584756d611ed6a323ff5ec31dc8684cf95915470e4675177fbc6a2ee28820ae440de5c734bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aadb58bb67a6152a831a3fe7a99d188c19a2ed284a95c6fc91f32c31c85d2846634f54f9b962cf48f6e07a46179f5290169dd6517943fe3a33b36f623651b15f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aabb99c7881e18770cd0c8563ee3b508f1f43694411e79542ef81738724eef30732857246fc128f3ba46a20473d7830270000290624da57ab3c4f99983b2e03e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "02c7135bd4574bad743cea5c7049799182ccbcdc52a9aacd106b8dda30de32c375eeaa8f04e86cd034aca441d429ee7bc692c479076a29d71b0cc90adbc4241b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d59c5d546083168128662facfb1d994bc8e2dec7f189d290a5e0dbfc54e392f4fedd63a16f1dadf0712cb801d4ccf312134a4be0459357578921c4fccd920dc3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ad546dcec41867d73a85a8af73c1b9dfa24d33aac9c9c7f046011786ab2d61bcf732bc5f08d349df9f0328499798183b0984edddc5c352d15f1bf396ad26ffff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d21b42606e1b33b67bd6724b25bc4a416c1cb424de045a5dac941163f478e3ec5bfdcc7881a7f83e63c845c6ce8a37cac0cb170a00ee95be5a1f2ffeb1f8772e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9ab01d18d9ef315fd6349a4d3e0e339b0ced6786953bfe1f784c560732a162bc54e196bb5f6066a910f9274591e3f666cbccda1daf4459010d08da2477d9e1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d00eefe299ca6c20fd87dc6c2f56e784a92207bd1e6af1c47f40bca8e77becf6bea1380387132fbae2f68ab6a40529574a9576056c65c9bf003f4e3f2ff66f7b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c24717f12986554742149cacdc180668236348db277562fed7e6f2c7351aa22424680306d93432c40d47e5cc1dd730ccbac3725bd7467d163c27dcab7a401f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "33f4c5be69306db2e01e7ff9f1b3d3ea3ca9d265fb69d3fdc14881526916e169d396eee59428dcbea484215bcefc2e8c24979a46a8f4840b3b4fe86ad54c1c1e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aa65db77187250cdf548c16c5ff020724152ce9ebc62a3e465b21bba45dda3b044cc87023a62d9dbcaa261fcef4e95831578848869b0868f4300255adf6d2979": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a71fbad16c8913af1b4b9a79fe06e39aaf0631439ff41338a0a98a19193c4b463da2bd72a7d453e204a345dae3f10028f8c3f9a94a3c95a4950667aa81c10ca7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "65dade6591384b04951252b94441c14b98d5fb357a3ddfe88204e7386f0857b9781ecce296edd6a0ff71ef997c9d6492dca8ce18532c935e049dbbb863c947c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32277f4eb03e76dfcec7c36a963c4ba23ba9b56f41cbca47778f2f2c545d83fc48b4d8f270cb138675d5425e536e2f6bd554723c7f8e1543f5e0c4fdc9831758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae9d8387176ddea111c01fbbcef95b80c33425bc8d10fe4466b074d3424b4c6e0c103c3ada7bfc7035bbdd06bf376f4934cac24dd576ac1544fa9826a5caa9d7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "569eed1456c018547afe04bea4b9c1b4b831063fbf7f01bc2e95b28554ca699432e79500e4bebf1d3b0b0de0639a923b9dae716ce8d280e99bb2dce1a7b47867": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f14ca132129407e66421d3c0e9640f93ab40fcc4b17f2e32a8caaa54d7d1ad63e2375d167fb2238dc6ae9e8e521dc1178c67571a222da2d5a53cc110596b280d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "70a5fc47fa8c11a2342db76015f70f9b74d6b7ca13fdf8c5ebcc1ddcf7ab9899d340f691eceffbfde4112d1815f94c35f0f5227ba227e03e7abcb0bf131b3f4f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "89c83550df1d0559fff7eca2d5678bd2ee947324cff94d9de9193b276d431176ec5063fa5dca842c2f8ef32fb44a7ec60da6d77c6defc8e7daaa70dccbf70de3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27bc684b8e2ee4793ba4464c86c391185ae4836e84c9be201e6b0320b3561ae0158fe2cc7312bebf878730628fc639f4170806ea5c2a14395d7aa777fed54a40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6c63a717c2eae6541c296a162c2eab21f7781ddb83568053943f0177f7fc337afd2a975373dd6afb439d934847177e9e34a651767fa18e8ba983ab1d7ab792ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bfd5e8817543d145d47bfc44c769d063d0b9f568e28ad69f2ea891c2a40a90041a61cfeb7d67b80cfef32dde8a061683cb26898b6ebc49d44fc65b881e6819cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "36bd043851b893b12c0db0b73d23f8fa8d8c8d940d7a5690cc9744853fdfda9bb1d1d97120798921cad47039fd32da0c097208cc6553db7ccb04d5a8fe417eab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96d31cc0d9178ca5b14dd6c114d97c814540d950d7efdd3780bae23698b57dd4c246a70d6a6ac69bbdd245a07d61cc210a1293844ffc7190fe9ff4e312e6e6bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "debab7b6cc9d0b2f97299a7bf11a3fb82dc82c1323c525f9be9e141f28929fb668e1b46a4221ed59a2edcd26bd215ee26113328a277136fa765334ea2776e217": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "062ab2152e724dbc7f7a6f98c0e69af1c4618671192bea0fa86b14c93525f8fc0444da34c28368e6f987bf7d1a0822d9b68f7084b7d1650167d2a3ec5d3724e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa08a25d721203b3f0ce709563ef0bf07a7ad312e1e482f568277b7b27101e2837d63241afc68e439de3860854ae3fe95aaaf24b8a4b40d48fac4ae5eb778d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2f8f48eb1c29858221e17d86274a665eb7ecccaaa9b3fdcf0ff6785de8ac62c3ecb6c048a590647fb878da87f550231f24e625a0f2a3b9e44b450b1443fc2930": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac3d8fb909aaf9c59464cac15db964ca67c63dd1fc507aa657b736f0daeb08f3c83b69ea632eb5175b22b66da8b7e77c311269e41d45df69a3e6da9d24e3ab19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6ad6e6e41f2287d21e8d77f2ae792e97e3ce529b9a8935b43c51b8146059cf7e6e9116d3a138e16bf442e41bacea4ea976a8f40f1d1bffede2c6365c739efb5a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b6f33343c809333ee73d05ce2211569a3754c6e0244e578fe6dc3a5bd823241db9652655df9046f05c7d35b900c7e45d88632c827e8c3b7b834bcf912d7a2bce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "155f08cecfdf3175590a2a21e06a403bdb98b32598e99bc9281972c62a98b5cd80b8c8547c3f6ebf560c57c40e9803da137ceda56bc7213af65f56a91937e923": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f2bada4c3df8136ac0a8b7165fa0cfc44318050da5eaf5b22a21c8a38a3cc3851fdc3c0364d2a4dd85fd933b1297992ad6bce1032d39a08819f88e9ddb7fb6a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e395dd61f8d49a3acc99b77ce837bca6d876dcc566426196e684ba39d1bcfcf616f1dd4e47318802c5ff95235c8d85bf945693b216255686ec30fd4b3e563bbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b40097cb9eca79d394816369d281c33519833b66e8637efc7b5c2d806ebb888385de893d141267aaab808781b6c0d33c104b96d6d90311c747962c5b155b3fec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "762460eca6b0177994a812332bbc5e5224a9bcb0616411e40806fb37fd4b06f423fd2c8bd0734485a9bd059facc76b3fa542278bcb91769082214958513af010": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ab0085b50373a3b6568e0f83f763a923f69704e6387c627ae00c62f7c81a4bf0900ae262e69c4f06615219f587322f044e967b7bd93e0880b4e41ae0698d0f30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2369a5ff7c0fdc5e6c1a1bd5f42bcad6ceac5cc564651e7bd855a58186468ea1fb0beb0e85b238d8436f4fdaebdf54a21e91a38116cb023a7ebf661d2531eb61": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "21a08424a50e89cde3b12b896467bf1cfaaee6f32dff5143f3fc508c86d9c840639b550a4a005b676fdbc47ac09b958a9d45bcc427916fb86abd01190881f59d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "553ceb3b5f4055e81bc97d7ce0f7fe72bdcbcce56707277b46b3ff9ee2cd78488531bd5f90e621bbfdc3251d8f15facaa22a673e35156a80811b27a6ffb5c9ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9f6fd1bf814bf78db36452a956fcea980019af0836a5f8595f38c0da6b39577bfaeee2af57e1a1fef2fe869636377b495c6db5f93746bf948de20d9889a41297": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0c4c71e39f18f592d590c4f1d127c38c2e8bec19298fb2485553918fdb36c49b5bef35aced2b36b4d989a448aa1d70592ed8ad7df6f7f3823aa2dc18a8074ecd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cac6444713b4be7f9c60cbfcd028f609dc8e7fbd4313a509763fa8189d95e7cb5cc40cc54f6be10889c74558c447908110e29b99f9cdc9e7948de630f67cfbf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb6945c4699c8b50e343178e171cfb1db92b7f67367c88b40fa3938f64403dda357b70ddfeee397bd41de2858f00b29489707f74719a6a07a092af2b810bddf6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d95cb60428fae95821e67441e9eda1bcb5ced1e1953c0bb0d327b2d347ae3e5df825a741a36bed5f306de9addf6bab5e0af50d7753466600f9956b426af38318": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf53235b697210647048ebbb91a441a2ab2d38eed78a37e9b818dc02287c2a7cce79830e1abf9a2ca6800e5ad68f6cfad9d4ebbd90a0147e36f536cbcad164d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "77d817e2ec74d018ae7393950a420ce3394293f4074c4181af9e414cbffd064059ecf05918b5f757b33be97520b40ae69320831c88071acd2a031597b98bd30c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "96b0088acfd24dc20c5952b926ab1ec48ee154b9e08d715a40ca02154ae8ff642defac1307cc3592ee6975b1714f47b300f887138d77a48a132eff0e7da05008": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "775747b3d32fc5bd1c948a0095c3bf97ff3a5a4bdb65052ad2cc733ee05e28d33de4cc30a1c6b77377977bc93fb4f1d63846ce19cc5517bac2d6a51e4a8789c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b2c3ca35ad9d1e8caac63bc2026750f22ec10af97c76c506fedaada103391c15db847a597a3f128ea5b9c05b6dfd6c9973b3133e33cd31d9f8aa1d4d5fea23cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4746b29ed9965d61d44f98e957d9ab5145e16a4a5f8cc12def57e47154bd37864ddceb688427072cd791d92185b8b5661084e796e5e185182759062d5ff44899": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "810d9902813fcdc05bbd5316a3b20892f3b941e0880df4e67547706269acc8a1fd511d2b9b4e677121d702b4b8f46cbda359859b123ba7d8d03ec0536b098c7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "398f9142dba738af03496863e624f49b92d2402fa6dd8261b4eb440b5a1b03b5b4defb5ea642a51bf52950db514aabefa7c00ae9e23ccbe1cf33698fcb25382b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "922c2c984fe7ec0054d47ccf75b9e7e1d378c2447df48566d84e995e5df23eb5a18d6a35ac2f4d2930cae95c3d4342e830a87eefbcdea43d40e0ad71beaef4b1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5059dcdd370006356f177c093f2d537ecd338c463f04f28c2fd7b11a2035cbec809da8eba43abd7008c1b87fa35686cbec181084e6a2c80abcfcc263b92913cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "836260f13d4a5fba3f2ff6953ccfac8f9531314248d2c9ef6a96e1edc3a0b64dea2f4431564fb783847f297daa87eb490610109ed01004d36141047e2c406994": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "f9a450e2d31300e51afdaa5e9a84d8943ee38c11ceef2799fd6b2f1094a571a6a2deb29a669163e78eeac52f01dfeb6e67f047e98e664c3b67513e22bbfb9653": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "98826483f3722a122d47f7ac3763afba4636dd83641f253bc995cf559a4191891eef955c0eb3dff54362c87331f5664039bec1780ff31be9f1cc6b60653db383": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "777a58f2da25e27b5c3d4db6d35b6dc2faab61e1dd405292c86d79fed28c24d50639b2af4133679126bcee445fe438ad6dc1f242316e5f5ad7b2e41896b0a6e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2da670e3ffc0145af8c6ac3345214246197921e8184bb654be9709d5aa05575b3026ecf1b7bfa7ab19f405ece8609944fc9c9e29c45bd1c481ad029063467165": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cccdda395b0d9850b99c2d738ae533b88d96546368323ed331d9d431762525097ecc827962795bd55ad5170f09957494f53a2fe72317eb20f037ef5b61dfade3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "35b8b3036cf5fc3695078e9021cf1857ac1589ac03e0867141259849fa45c0e622a0ba50f6999cae98de4fb297b650d928fa07065859870dec9d048d2088d168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4bbec59f5677e7a9622a6a2eae696a448330da121dc7f906e638bc9bf1af137479e0e17f5bb99566d21bd180a6bc448824e35a9fe8cbb745dd6769a7d0d16e6c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9caaec6774d71b5cbfaa42e6168871bdaf6cb55f0d2d58c140a7d18965a1dd9c3a19cfb013334b31c25089a0ffba26821ad2644cc5e12d154fd55f6804811017": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f630b5d2af2272d27d1814da01b75574f87171f9f0a6f2d3fb5f67fde5f1002ad4354ca0e97e54615c7259d3c1c331404d9d7fea1a40df1c8bea9178aa68d90c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "18244106b9d159ddfce47904b47578630906b1a4bfda1d11fbef48f7ac2156065a9133dd2c94762d87a57b214c6bda890c5f9cd5bdbb2cca4db3c135e385f67a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5284598183cee11372f3a1adfa937bc7a6adce597a5139168b1cb8042fb9127267f65703310fe2a37a1c48a78b6a27518c845274458ecaa6e16e707c2bde23ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "89ed2e02d6a1b7499a3f0a59f51cfea3ebbd07a97c82b0d5fba0a4c3a7e28f8435bb129cbc222f107d671188e40e5a88d0fb000a7106feddcc2d6496f7b1859f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0d3d4791a837606c1d9b9dcf1daeee5353c708eedd864e795fd140860ac35b653a510b12f6494514987a5180e29480c3631d3abb1c4e8348af55eb8a6d880ae9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "29b44fa836aabe9894773cc43b6561c9b6bdad3b1d1bddcfeba2a5d43b65672248f38ef5349d49c83a5c9e96d7411ca740dd720bd86b43c0b341440a9e50982d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e4fada7b89a6fe67942f6e22efe3c0780ef238172e36d7e898d96faf8c2012addd74e828f94602b60ab3e89b0b6282c9a9fa6eadf00537cc043415c4c1e253ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "844a6db30ac812a4ea72fe570631d159ab88d3ffb7b15089dae44d11656004a1bacfebdaa12a5ced2ce58823d8ce1629fd053b84d385ab1128000c5f023fc1d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1fea11e4002b8906e6b895ae5b093161f1fc841c4ab8021fea65fb0abee32d16987c1bcbba4523595da9f153363beafdcab8400dd39ff39206ead55fa1e41bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e10ff3341f1bd8e110044a7b557e58c5acd97ef5a1055aaa24234a3752818bb7dc7fbd696a1dd071b1fbd20517ff86f126131e017fc87fc14359adaaa5802e3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ea859e38f157319930f3bef1f9b7674babaff64bd4c8428e991c014f395d3b922885344573e56e1e7cef9da2e1aa8de5bf304600d12c387bc48282ce36619fd6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "873bad8122c84c45e76b0f25c34fb4ffe59e6c70f16d8b8c52877a277ad6facd11f444c02c4ee7925b1f767fea498a69a25288f22bc54dbde60e07d609766c78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "222e316953c9e6353e778ac10f0cfe99a08df37ef377ad3f205b2fa84cc8f852efba446ac9bd2caf59596bc30a2e1d374bf413962edee29e3b37f53534e1b8aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32e8e2f1d82ac61d3a9231ce3553cb9da46dce85974921e7fb9027aaecdeb455d3db4e0757d3f2903a625c28ef040cb45ee6c61a5a1952b26cc9b63ef37dc15c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d22424cee655249fc81566012499b15abd5788df76aa4ca55dbc69c7e93d2ca85e5e1e7189a2eeff8c626da244b0c7f5ff60b6fa9dfb8773a10de5ebfce813d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac3d2c050f024aae1b7569fba174c4eae57536bc5fbba1236ca558727724d25a6831167a1af6053d385251e9d3c3104243672ab6d9acfa96c3f24edd86456978": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4a3628ffc4edd2a64b5ec0e7878f6f4162b99076c722e590dddee1924ffebdbbb63d2b10bf701ffc2885a86cc9fd66622288f39ca439c90ac5aeff793e7ad09b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "55d0a5ab70e05e8f12e573f3c35facd342c5456c8c792d59b962e767e7afe0115dfff2952cb0080aa1f38498a6852033c88fbcb2bdfab219f477c67b13c7e412": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "782fdcaf9aaad28fd572e1d70e116f0fef5a1b3f8550aba80c83b1f0ad77c5204a9eff5f3594dbcc1903fb37b47c2a04d0ad29d994e5eedab0b59a66859c0944": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b5bccd5e107993c1d646029090e18ea11f833c72e30eff8289a13b7557454deed09d45d5ea31715dcfde2b9daa2debbf7cf233abe7283e62a044bda3bdc3923b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "92476c2d8c6d484bc67dea7b353d39edf80d12aa06522c70d033db3f15ba46fe008948b9d4d0e98a35526ffad17830dec08657e229a59e2f5cc0d4cc69cef612": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d156add6f77e17db9b1966604284787b5f47b3c3ab0690ca51bd7f9847ac2a8542c38f368576c36abbc2b1d7f67de059837410c30dee6155ccb58784413e9a55": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d779846e8b138759ede809f39f0acac203f491819644e6a9f7046ecd6f14e498145e094565e3213003a177d3561360a3c2bf42549015f5ab94fad84c6b6f9a8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7a739860532fdbdca3f22909f5680ff34152d60c31a2d7dad7a6b6f566867138767e901e99ff59a6a249a28caec159b56bd5a1b465dc4e27962d771f3c315bb1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dbd4cf285d270c4b16e06a93abfc0562ef612bbd3050d160f5bdf9e7aa67b469a86903a35ac942ffe3e1e630d7d642d606d952ba079af2c296f702ba08ab880e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d5cb2f9fc0c212fe73e2cf551b44d2f595d22586ba6c49b70a125c19759abb911457fabb71fd5a538c77427f9d9025fb771cebf919c21906a5b8647426f03ff7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "906ac5e2091b7661e081233ced1dbeeeac4c13034aaaf9d9c6d5b4a3c50206734493a64f9ca34ec7b93506455a7b23e89c0dcf38ef63aa998926efb43ab52d22": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c85fa4895fa8448ade159b02e90d83fe4cea12955c38f0ed167bf5b434b4dffe73b6c4301a6fd6129a4135281c569d2b2d41e23c53419c26d0afbf7c64fcb271": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0e5f103d06a856dd53c3f83aa5191f6e589738596b367d024eacba1f5a31fae184af98b9fc265ff179d4b18a782b9a1f3eb452b186eb6cefe19453e2eff88602": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d07ede850cca297d8d40f7ca7c21c3dc6c57f1e7a0f37f1d61bc9251a373cfe8e23032147dc4575c4a97addb043802fcdd6b8a1a5a60c2bc88e90377bc9b2409": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf51cb7a11156dd05e949b6661107b681689289da5498924028738dc08da0e014660a3339dd94a373228588e0196782d6abef06a2fdf98b36c2e33c1bca752af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1e086cbc9fe403b65451f7eaed36a842008092110cb2bdf9ba2c910128616818154bccc245aafeededd84dabd6b8bd40c605444dfc359a24fdb490976fd6443a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "77a402403912ff52446db8f553d94a9c452255548ca579b7e8ef678f20d5ec0b08eb983145ad2072974ce4c66f0983ba9b94f9d7da65a585d2331fc305a6e585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c5bf838032cff4148adae4f31258eddf58c30837d2037b2e139f947b4891336d1f6f97ae0cc5262c9ec6b5619dd60b726a284942f44ce3b3fee3dc1c1052dbd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f95a292dbaf7d04f92f09d3254b000f80ee69ab60f579e50b52f7c8b8b7a9448cdbc35d40486e5ce1f110f9bbd21e89a15ca4ab506e5272eca06dcc53a017e91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "843525e8a43f43a95c66d43daf2ce31cc444791fb1dfe40eb4cf9c430a1b9ba606bb875a803910495e387ab95184057fa6ededaa2437a33f6cbb4257f44e880f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "193a36c6b2eaf268dc6988daaa2d43acf856339d6f1cbfc415968d6bb50a69d38f6476c93d872c1e4106b7cd7c4588b9bfe76b9aaec67ef0d342ecc855d1961b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "935691b47a70ef39f6aca6f09aca4963d82c2a9744dca87eacbe74517244d9a0a10fba00a40305fb0a6582cdc0c4318522ecd3cacb4e730d693ba9b4178089bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "802429937373f966927d19c75556f332136e57ca94a60ba47e0ebb892881d5924eb04c2bac8786473faeed0a6f204cd30d1c9ef642d5a4d784aa27b8c4cb67f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "32e416e55cf1dd2f0a1d3ef886a2292685f24fdf8d3c92dae832ab1f15978852d6bd25cfaeb9cd0111a0852bba97901640c4c283326ffb1d543890e5f980d3a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "03b2479210c31b8e646b5c440339e279174af0f7d114644f51f85e1e33dc603f55ffa70c128e6e6bc6af2e071199ec7db4877db537fc23267a0721545835949a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ef9790f0879e3531593ef7ce115ebac92bac7c4692fb72b17920efd0257425f44410d84ec50e7e4df2aebc9334f565a4dbdb3ae516add1b4a741f568a1fa1e37": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "43cd8b2c03e172bff0b6e960728053b0493726ff618d16c61c206734e738a624817514baa800edb75c0a16d08e7c6b4aedb64c6a96b391fd0cc914547ee6675b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c53e8fef5ee64eb4836b0e7e3f3b7aad09e39ec4ef3c2ae7ec57854d87cba084dbb38bd25d92d97ceba9d584e87f2735360e1f3cbf391ab0b95d13e755b0f88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ba944c7bf730f575fc98c75e709c46b762f3b0e6f7f1a2542719b7a0165518c5a5cad8279ab312d01fff08ac0d4ca74ea1ebd3ce6b36cc5111e8e13ff61e176d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1cdbffcec86419318f45aaad7904b9afd167f6a03e57cbfd35498b03abbfc33a30b4df52afbf89b75cb2b27c600c88f08442f61c214270eaa2bfe553c3d097fe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c225d58e645f5d455c832a655780dfdf0daabc2d4e41454b88a7dc78ec578d924c48577e89ea82a682dcb93ca9698e5846f340b0b9080f3f900aac5278518fc6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c0a38374241c3a71e1d8f7746bf8562e2b129b6a5b46fd533d0800f2a13d74b4a7b18ecbe4e83993c26c02efcfb6742570ecc6ea59181cd19a5fa21a7bbde06e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "171c6f5f641768df9516ab5fc8a76460cef538883f5b79c063e87da5c0fdff657b16e0fb210ea23de01f4674419598a298e8903c28ccca7de2c3c48089c7f2aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b3eeb002a2450efd632f5fc60028b227f297fe55144b349e724b74ff813775f07fbda7532fbd46aa6176b84359347f03bebd36fec8fa8d0c95d4c3b37eea3da9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "91025839edb9abda690961fc9ad4955235df9a752396fb708d5baf8e0cc8157ad98252318fbb5ba4ac5b32c00b1f101d971e94021deb59222422d11dd253c59c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "12c3c2d6ce2554c2ee8760a650b1b8b17f773c39e636a3b3969c7ae65724ef33edbd6fc5ffb165daaf29c724cbac90da62bdc1bdb7dbff57f377d1fbfa9f1186": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fa563cca944a0216c8431f50af3cd10a12cecd7bc87963d8293cc17b22f35943c9ddba25ba15faadc2768df6e1a0a17831d34da587346cb9c3e472b22db1931a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bd764d17f9c5642900c5e7cbc28709f7b2b70adccb0200bd27ccfcc7488ee153615be53364f602535659ded0750cf55b4ed8591f9a24e6ea321d39246dd1a5bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a7238cfd12d24b8bfc96e8e50929f1268d6aede5fa2a377b5ac113c6d9f124331120fff92b14e03bf5ed5faad176d90d2123a057c0b416ad9303782364f326a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "373ca776a60c32970d2f3bf1c0e66c250644ca231272765bb10efabcb51eb4b780b4606ab2d33deffd7ee31445907b6447d583d3f3ac97e33ea27f4d1ced1cff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06f39b0f6d2cbd4cdb600fb5d8ccc491c75dde2291f4e8981c78d192391445bcba5bcf3eb484a4737df3a04ad25a94672e8e4a24f494111c863cf50ed2543343": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3ed86b84f8ad78014addefed6939af0f5136b630498dfc660bea5eeaf424c00a30049f96e54d9490d918e06722a8f4001067024fa5d04d07a601b85f5af8a12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2be39289c6d04ae74a937b84a0309f60f923839e1a6ca0c516e3f73f9decaf37981c578b65d74f00df627023de58fd3aa8bc4d0a4c64eb8e1d7c91c8599920d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95bcb73e328e85599421e923282ef3f3fb7a9924f324a256ca17a0e6b19623ebaa2f075394d93dd5627b5bcb9f5399c63db3c434b362b0db551b36dc68dff8af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "319b639c59f2c9a6b9bb6ebef481dcde7e19becde7903bbe004cebc9635b5978f3bdb048bc8c60fb85647f542af8b247c26cbc5310ee7ca39cd3bada8aa3ea8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9c75c30697115e141677e3f597d7ea539424121b7d8513378880e6d22818a244fce7023abbdcadad4ffca24d673385187eda891544495fdcecf6c701363b396f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "419f1951238f325f78c46ac87b615fe45cfc7f7ef82690abf42ef8925c52e44c8f50cb4a6c9971846134d8d96264e52590079a4646db13eb58a49ce56e9a8781": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "19fadc3130c851463f504609ee074ddf7613ed4231a045c059d3e17427eb8585df1a02cb688be4a19fa43ab0e0332f6994d02442e9f1cb659b9d9f21da9c8bf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1d801fc1ec58ca71b5816c5f1252a34ab1ea7b08d4038f7a3286fd49b8582ef9a0d45a1d7f03168948465b349a7e486e61748f596cf751262c9549e36b39714e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fb7a75b757d4a011d2da83f80be6baa530058778ae0654885e83df7762ed99928ee53384cf1d7670a6726f6a5fabcc39036537d25297f8f2e266fa7592c4c0f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "60c50b682df47893d0b4f4363d56a57045dd170843e2455d3289892ec3021eebde1c7e510e1e123161b69359dba5d6dc5504819f141cddead8b685c0d05c05b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f69820440f8278bb91881b123769b0d631b565b841afdb3cf33e24af4ce9924bd5e9f0f65308c18a0b52596324b9327fa357b48d7c937d6ddefe3a9a4040f1b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "00c924c6f2d5273e8a691d95c5a041705d9b9a1f9c6ddf9e20c142bf9c8fc6403ad3ab83f0021944f8c68c3ef2bca23b4da8efed828d322d1bf72fb394dd783e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "adca17d8c2ae58ef3c1a5b88477e49ccc5b77f40ff72e6ba08a48a9bfe7ece30c683b6fe40c4f4ff0f106f5cd5f7bccc137cbe5bb36f4cca31cb06a0c37dd7d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3610963ff7f726d802c11d99c8cd54183a7e07743489cd8f8527eeb3fec75cc6270939fb8fb6d90bee90b665161d201f4acc5533e62e09f35309b51ffab017fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "13513de36fee173592fa10d1999ca0d09d19a33f28d731a815e179539d9da91e6a1fb4065db8c64248e3665d1c3103fef96952986e5020c35fced0a2cc5d3ddc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d83c99d79926d9c3f53d82c9b7fc2981885dd6af4be0e1db8cd560178ab3bdadd0832f7af0db5e77e6d9508bfc304b88d0f37789c96d5be9ba04bf4f2d048013": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dc4dc85dca94f32920b43f3372125dfb0ebc481e8eb66c483857991d3c76d6e38f655bc1b672a3a9f0e8671ae1bc82edaf839c9792edd0789c5d0b29d3f25697": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a538b7eb64492c385e85928eea3e7e13bd6298eca05ae30daa15bf426f0dd71f2285e3cd282a1de8ae31ae41db507c585845cc734ee85f265fe69721cc689156": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3f7307ffa135ef00a2cadb91aa56753329e1610c95314195fcdfb756fb764e0be7ba1d2c15e4bdd301f47eedf01d78081da4660102accd50e979a525ae531ce1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ae7d1399975a79d8c4ef7a28134b201e5502586f457641a42e6bf03ebb2bddfea2e2f4c2579bf703dbb5b4c320028b00657bddcde74b78de9365466bedbaff47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "682953d133c9737b1e671269b8f15f3581acf62b8a5091de8a4f85b9f36972faa6c79e318551e64cad32c405fadb4b51da4c8b8357c61132501c6b62fece9de6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d8089aa960b3a3328f5dd409531bb1df087da8ab5b8dee7ffffc2129c6133993e87961de7cc2c0dbbf74b1a0276bf6f04c50d9acb2f435ec59d041b865bd122d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3d355f1f53c05582d82d81dfe078c8bd86725a215a0b147b4e0274db9aef1a99beeba984fb8bbb05bca1b9797298ab9da408d4a6e60076c348638ce282dc3660": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "fe7697125be297685df4ea834757ddc0dd927a3480917c5f8c89ebd1d9d257fc39cc82b2705bd80602b7188aefc21ecd602dfe8cccd18a49bc5802bce3dc883a": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "55f582f3dc0c8284c97b30332017bdc65e4cce963bf3d0c8a4a8b4b181799111332705695fa4a06fe2b7c4dcec5e5db13fb5f63410cd54ba585eab8e44854891": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b2130985b1ca82ed55b20c1e572403a801d5e6a07d0f7a7f8ac9a3760c7e8a82792072befbaf4606ecb4538d1854d0e5d25feeaccb0ce8f6b310750fc171b1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e718ed8d6abcaeefeaaf35c12a7ce511707486562207cd440bdf97e99fc0e742b74599cf12d6b063264f234b2e1122f5ef0a546829826cce23bbbb9069ae3b49": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6c90b7896a6a1048ee20d061923630f5f9b3e679fb77a5722bfee45942982706497bd4d1d9a7c42b1fe28d2c5458fc6e56deeb1af77878f188e104357f047262": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "320c5ff0bfec8a156bc950cfbe22b94b868d52f4a3ad6ea986ec9de2b726fe332a0b7cb192839e468d58da716af805feeb24fdb96cce615da2c0c8c0afcb0354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b2f47e46796f52779d66fdafc348d5e729668cfdbda76d819fb2fab826920fad631bbb94a698230f120acc27be7724fd8323639e42d1291f068c0b18b06bd76d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0f0c47377fda3efd71b35464b7eb95109d9d7dcec82fc7432260b48cdbbfe7b8865aefca4b516defe5043c88765e7de5adbded75d2c325f088afd4f93d5146c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8ae1dc1563a89f766f6ae8219866a16ce7195af04cb7396ce031cc1ae17440fbef32180fe0534538acd00c2a0e14a6451d4afd45592589da0db061e92617b620": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb7da81c1d2c1683e28bfef10530c3b654005ece55b97a29edde7ff9eebf1c2ac72f5d959e56c0ee98e08b39b950ef5e75634f7dd9f134a492a6a8dbc4559279": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8d1e86f6b5c953ddfce74727a720076d814f9226a5077d0ac0c32437fd849a1fe041e867cd5575414fb006517901689408e85a2fb2d00b6adf58a5c61c31b6e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7389044166ff6c57706b76f8487264e94aa6684713753a13426e336eb38b293826806ecf4a6082397e040492933bd5b153c88c4d421a5184f841b35872b78483": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "df3137e618f0b3c2b935ab5d74344c40a7e6bbbcf4f22496d10764fd03bc560b8457a26b7bc6f035f8704cbc5973cc662e0599300f170f37a21a94d78312ecf5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e089dce1cb7a584f8621fdff964c3315d000fc9daa183a4a2fc64efd00a47665d6e7828a17ca43ae7fc7d313cb8a277a6ef5dd47d9bdead5100815c33b95ff5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "98dd81fce93d3964420d0e3527dca338fae0250e10149e1414fd857a21d74d79575d7cae9a24ed9f973088438b7610e959824ca51b0e1c4f12623b37d2cedb05": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62e578d52c804d5d2436aeb8f13ab383ae54fcbb78306cc46a2a94af7e1b317d8817611d83eb01e19e8f950446b1fde6d61a244be2f8ab3ad609eafcb10c9680": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8fef4ab8274e73edebea339fe63286ba989a6213fb9381544866b9994d4a18553629d8d477d435eeae10d7b63d40cc351251beb79d06efe46587a9cb88cea2af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7f3ffdea9a1e410c1b1d9e8cb6e2f5dfcc9d1ef1c1b38d5bb6626b7e52372f0631713dbc75c5e39ab811c2b092d614398a790946e7d85eb30caa5dcbfd4c3fe3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "061a81492aea44c02f9914538aca7adc01648e95658f171839ff031a790a1fc9a2ae76053489f069ce85a1e8b49cd4ef07e8202affc15d44293fb47e3659b3e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "675cb27ecf487a18bbedd3bf0d68c38beef0df6d3fec1edf92d3448d8c2b96597438311658d1965e65aea8273f7baad2e4d9ab534d7f4d18c3e29d8cd99757a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d2b09b2a69862ab021abdfc4ddf2a96f2270d5044298bc3d0f487fe5835160570b011717dd905e78aa5109ff36cc89aa75c351d523e58462ef962d155c2a2589": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "330b65e4064b29d7c31dca09f62698fb81540f74f02d58bfd2ba97155f2a047da97f9a42a2282dddd41f62a5399dd5a366a48cdeae3ebd2262a64229823c312d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a0ca4cbcb30c542e29ae8dc8a7bfdeee8d710b5fb63f50bc22236f54e3ab1c93cd4cf35fe280a561baf5b0feb844d9ca7f4e3aa71b50032c1fa6cb48ed2c935b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b653aa85c08a81e3a8b253fcbba1f7765a6997c96e20acfc5b3dbbcb404f6f8c35e470267d39f99c5c291b1634f49ac991f381e4304997c1607616ef7ff11b34": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "717c176ef45882ca493d74fa23976eb1556119644e9c25c8718bbba12713f1812efda61e8f1e57ccecc19a00d5a1c17ac517e947c089cdbc3e06104c5284b881": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3ab8101686f3726ecac502137ccad95c433285cbe57c56966d96b284ab7b87bbba4c51e29565f6264c37f6af45f14a91b77341dd05862ce4bb1325624f0a6514": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f58bb03bc1e9c11bf5aeeab3b2cd0e87557980a306cdbef64ef9e5d2644107ac0b4ac0ba9e556e3ae1895c7834a57ae0a9d19d1d66c11c4e70c3c81b6ba4e194": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e237554e4d352fb86c397c9426990655d36dfd7f45ad773e086d633e36ff9b1eb6a55cbcad5a7a8362513263c935f8ad318b61fee3ea752fcc424902bea77980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c523b961acf5084e88ca628f58f51c135811c41a1802a5f98f2c0ef89f5b6bf61a4fb2e1ec7f7f66696b20a51ba6ea639e76137f55da49cba1753db7877a54bf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7945a92d2128148bc9bc660c06b03e18aadc4cf961d0039ce7c796ba26dfe304b3aeeadce81c1e034dfb05c63cd0a508df857a2e09cff8326272d34148528c0c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "62638d8755bbd3568fc8ef8c21e5c196653e98c21a355fcf3195da0e3651ad620c9df4fcef0f1555a95adf031de7a466be064f9324bc8aa9de013d1d2fdab76b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a630ec5cd0bab0764d567c592c7b105828305c34ad3b8fe940379712e9234a20616d7098da48a6d782ae1fba3f57568950c5518002f5a8f469ee1594b05f6148": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "af75f3d8e176f9acb8eb08072022c44b6d592d6e40237a42dcf1e9f7068e248ebc088b151cf5c519451d42af82f28dfd7c81a7c6d709f499ac0bc92681ed66ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f01cc666e1c432cd38230e9d74b15633f599ac13bc959a5345cdd600d0d6f4f0d532f74e47a0c40580432cad3a258aa61df6b43e60b322e678134dbb0f756a32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a530d96a3c7c9526801d3c9312cb8103b330f67c58fbfc7cb23808b93aff378a391cf6a27341b1c53b72d03c322257dbe0dd51d8d0aa8200311cb4c6d92906b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "531f4838ccccdeafa0c98eee6e8e9075bde8dc1894c7f803878cf856adda6a31a978391868d1f84e35d27645c3d548e7cbe3fba0e8d91fdebfa59b915615a79d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ec211bcf1bffe068d042e9c481441f64cee03ef8070001c25a90ca6c0893a9482189955005093a43c07cc2f20aabe18810481fe5b9c764974fa54000ef3f6665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "309b469eb74e85cc58a50c92bce14707cbaeedafe87db618e6a875024074cb58ab1119c9d6c94a807a2537554479f01de0387062756f87bbab8efc7398827f35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b8353ca928feb7199d084b8d497fa62a9381738de8c7e084b11711989276835ebebe529427ec89c23f2067505fae59a95b5b2e7e2dec2727704547e37981fbc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "efd99f1de43c441811a87e7a24bbc595af458170bb0a69f0f26144bf3b1794e84f9c720712837e9914a4eef05d8e97a45b0902c2304e58166922307e249c4777": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "109b57766aafcbc1074c843b4e3dfef9eec0fe7a91f4dac373e1bf1a7ad4f2669973c0114ee8b367eb0a92bbb5ed66aeff32fe58f0466cd95c3cc6081a45db36": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b6aff81dac79cec35745c9b51289b00265c929e17cc31b5ac147a4b6efe74302f95abda8ba331cfd7418976380047aaa795ee94f9eeed9cf20be8a6141c95ccb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "95cdb3612c37f37f338bfd296e8a85ffaa054e6588d7bde9d5c0c4d64a5a3a4e95204630761ae571a2e4b92cb1c848b01ea590aee71bfc8e5ac9a7281bd1865a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "915c88a927c639623a1288b12430b17b4ddb159bb8e8b82b60cf1b7e3df0bdb7ac67e5546871360531f53aea6d640a651705aa248407a6443ff7566ed610b1e5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3da89c393b79d5d1b2f976073b06760352558138378441da361076ba3b2679acb2712aa97f6e1326d18b5a44d4933735437d1136944e975616b6990e69930ea0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e9e532c8df5beb3adb2130d07202e6f98509391e1f55b6c3f30866c1f598665523372e048df59a4e04a456fb3a120793f63286d48c52a0475c15c3acec205b62": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ca31755a2eee8f21e895a4b48076bde3ed27cda3134b799a01ee061fbc5dbfa5f0cde3753a4206e87fcdb3a8e4b73c479947518dacaa913daeca3cf0abf41e18": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53205636e143322ae2b7e4ff83317eccf24089f12e5a27967d0d40d25f55f3e4559cbad364495c87712f9d28bbbe28a6e0db373a84903613fd0000aa8e68e722": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "50f24c8545766e39e7c10c931ce4b01cc63a90595ec653dcbebf5077b3e62f585277d00b1ad99c74a2c656cfaeec855318b363dcaf1bee8d188f829aa5aeeb74": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a562b113f449520327a8f64647be83e879105522af101574637f35ba30da0021a0c10baa52c9fb367a695e1f3953d2a7621fc3110c5066788552c8205ee74ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "74a3024aef1382b8aee19727df430013bcdc33d3c4c14621650a57f1f5f9a4966c8fc8eb30713425e9cfa9e21ee4c1e9ac0d2f3399431f8c37b6251aac627d9f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3a53af4410cec68b7db8e16b26d2280992d179681b1b7d4ae0c3f3621ad372c71608098f1ebae638695bc11ddc7d88987d76ea5ac209cf999f5fe0aa360be910": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a54f6dcdd3922b5efa4d3b34fbec83062a7d586f3d18babe8f3e2bd090b97c99a5a1aa87af833e1476ad2514f595cbde1af1afe90ae7074096cc59006fe6b1d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c8956cb95ff054df7d3674d5cc8a1ef3e6d0a6f4cc45e210d69e1e3bc3da46216d7b1e56bfc96197f26d9e2a2c0063b9bbdf337ebf48ff0e14b7e730879c359d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1c7a1ca97215648830e2fe68fb9e194ee6c33397385d0e8dcee3af55b2bc6fa456050c52ebe3746ef666f42ca1a048e62bcb1d2bb277e36b57d60fa8bc4f12e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dd6d3670d656b53018a65bfbe9f6deec954077ad0810cc8a3eef78948dd5a8cd6fe48233a77b5df44a27fcc34b9760ee902ff73922186485cd157f2ab57ef6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "07e8e6fbbc8cec40302d163907d2378f9c50737974d699d43ff15ad902eed8c3d9c2ad397dfc5796b063c1b42c6a9c2048136e0a33fad1b1ffc0f6eb57c6a1b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "289f46f85ab67d8ac95a7abf22d920a4e946e4b0501fa017369f571971425bf4c4172374eaacb696f2f12631fbe3b2b079b2dce469e90a610804c4ac8b9f0468": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "583fd76f558da604f4300d9ade2a735f7e6cdad6c56cab1f13ec99f41a592f9f9d174ff98aa9678203e01ce98054c82841d4afe0835ba8bc1fa4a94c55e1a393": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ee963a079feb9c3dc9f6e9d39b95888516e05f874f82dae39936738677fc349d395ff170a50914c66cd20a47ada094495e637554483a0de84c45ee31736df0ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8c25c5753d9b670470a1951a8efc777e42ab6a84ee910d515b9b627aeb388a1089fadd60fb53445d7fc2c20fcf8b150429f4431c39e45d8d6f9d328edd5e796f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d69a716049f4a479d340eb3c2e9da12374efd9342116f3dc021454b1385f43749f28c2050c382e529308d9956e4f43fe63feceab5822a550be2ed182430ce510": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2b704dc2de3baac11d8b24fccc299091a532c4fbd5580cb1dfd17de2a6e34118af97b735835b9a10d33c55242a3126b2a024e696ca39f6ded2e1976e3f86cd3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "59b3b392e1ec9fd58061ca21056a716c47132abc870d6b3dd7f25b95a64c0a34de19a1f64617e68dadd9097ccd7d095422c134a424ced380425e2750c24cbc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "602df81df1cf734a958ef211d9e79929d1489524918458514b148458933bf21cae44c0f4dfb75b3a99a37fcfc3cb32e97f90bc7b215fd809c5aa6ca924f07b42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a18baa6052162c73e1267465b26ac54d8a2c456c856d26d37e184fd4f018fe6e2dfd6bd7645e4c64c875d986c4bee3489906590802a4198c0502063ff3da4831": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e8ae7129fad1c7e992bd444727bb100779962c16c54c84778d903fc11e6ad32fc4d5be9a67cab79b28232c920625791fd695c9aef40da85e5723a73e6b925758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9da62500215fa996d9f9671225f3dfbe9c71a23fbdc86c5b09f759e79e6494e174ac094efb13010057d782a891d5f89c7db6c330a0f79ad01aac2a549bbedf86": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1b5f4cc791d6c5085256c94c70d8226fdd7449cdec3ecd63eb45353030deef50e530d65c8343143bde62e6cd0ec5e1c7cc88c939022ffe7a405b260228e0544a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "072a7be5b193bdc2e4ed892b93fd2c6cd50dbf37a18caccce709221693c4530ae80602b75b7670dd2938cea6a8af4b0d144a5df577d9dc4762ca882bbbe1d5c4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d00a0144df585c85599216ea6d1fde8420a412ed526307586f489b063a0fcdfccef90a2dec2e99bbfab2363a0d8d7e4d44f8d3f73b070a102699821a8c5ea667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "bf832852c2d9e472ac9d67d5162fff1a2389223931737727ac8c5af89918a0325de8ace432ab680d2973853d582f03937a7938169e67cfcc682a62d6898303a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4d4c9cf2da542c6de9182fa751d23e8e8e008db9283deddf240b05eddb5b413ef22489de884a52f590d0afd91856f5b03c858ef71fb6325bfe50562c4efe5ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5d07973499aa7868d074ccd009d99e27b41a79b8d69d6b991df64e8e08c17caa5e5b785d3ee83609c3c57360a9ceb4ac216345e9affaf608ea75e73c23564255": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8a7274c4a6655a79a62b9bb20ddcc51b18364dcd08e06973593aecd82f891354b350d92cd02732b5a606f2baaff62118ba49f7cb9e3d6617e444f5dbb86a0139": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ec1a69c7f8c5c6ee12e60533cbf0ae4d87ec2325029ce64f80c34bb7f892c3ccd446e422511ee701dac827358838027ebfdd806fa4947ca06ba3a97498c11e78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7d7edfa70907ba376ce59eb59e5ac047627b9b322c39b662a7d40e3c31c6290a3d7b130b095f983195b2608809d20784a8355c03582f3673a0fac1b84c8ab033": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d68d16bc99e19f7aaa47364baab1893308cd83bfdc9d0943baca91d2cd7ac463913536e1c08edb5e78572c6c0a358c56462be2a5d929af84a03acc5424f8da41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "837fa39dc9a9b6459d1018ad70d0647269deebc31bc5c8491aaa70a1e85f1588d7c48d47d95f12369a2dade24108459204e2f9e8cb41ead3cf0b8c5715dd89bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ff44ddc64ba056af211a6ba17601c9d0cdf45220a3af646815c00c2b76355d634b07f83b4648d0a14b516a15c7915a1023f0e67af9171b0fbec1b0f4797c0ff6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8b006037edd1961d9fbf205ae9473f464a07b3753cd1d7ef5bf0dd924b805855021723ba4c6e62d6b47efb91442fe60a04699fb305c7e8de06f31936781faaec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "289a2d0969f108eb3362a9c47b08ef0dde251aa97e050315a73372fb56d136dd054f0e705cf9c9135d60fb3b9b7c0efe30ab9e18f2ba57f513a38531970ef669": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d7e3c519dc132901f4832f3960a0ff47d7e909e0f97082d528f0791e42bb027ce46bcdad23d2b1ecda1e5bddaa4f012a560c3265ba5b9ee9e4cabe61ec033d38": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2906d0aadc5dcf373b10c722fa0843624874cb39d25c81543ab39f21a96c72c4b4a048791e80500695a8a0b84cdfd4084baf2db85c7835d7ecfe1f6640c3d628": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "dcb282387e4c7836c3610106b19cefc8821d5c6ce77c84532bdbd50406a10535353b3acd4296d96d5f509fd26a62f749b363f8d775b1e367bc83cb0954405733": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0e6d607ba50d812a669a922bd78be14aab2b24141a3e15390c0706cde32aea4909a0476dcab81adfac82d94ad45e7466f2ed288c7a9a8a79d47b92ad65d9d6f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "42f0af60cd9743454e3c3436f0caf10c4930de6d1544817426f72b77ce8acfa85cec49e9a4e733bd33d185211423f61c95d09ec0810a67f1f70357e04400974e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6b069b487e0e068627940e3b89846a5a9d9a301df3d953fd6bebd6f2a32a67c5b1637e2fe1ebb8d90171ccc3ebf6e29d202f15fb878316c85e67de3599acca68": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "27426d414c5056c4ba4d95e27418bdd2e8812ba8a1665a4fd262175e5861ff8deacbd8caac208387c404ff3d3e513f6c8cfc731da6fe393ae19cc01475907518": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31ca1f01fc29c49297fdcb4abbef1a50d5eedfc7e6b5a5fc4347bdbc49d8a6d3bf7f9041ef9485c9053b027cc19210adc96492ba9739c06c707fcb7c5640eec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "73110e871faec309dc31ffb901c9e765422aa42318e508b38f87cc20e06479100f9c597f17c26a19f2cc3f262e2bcd83b4d50d11dd8a6821be67cf701882faa0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c99232ae9ccb87544fb8b394c1848833d25228325e050a4cbf4ba62c7205071759dd0dc0a346aa07642395d625c2706c23d5acbf51bd36a638ced516d2dc3070": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a658b9e7c0081b0d478c6285cc353fce6eb4063b9e8ee8a03b558c1b0273f9d914a78ec8a567f801ed04c86075dd9e1503963a50f6d9ebd5e82d158e86a85a3c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c3f0070524bd9e319382c79d3d0549015ec60bc9d8291af0dac2c160e1bffda950fd0410807ac6b110f60198d80d0206fc8296721a512a027b2071bf59a33c1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f46a83e36262d8878157354db8eaadf6ad20ca4a83852e3f01220fa55ba1772e0bb54f983ba9e29be688ece96a82e04188b74ef3e1736b13b9f0bef105221ecb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3cb8c54eec3a5fd9ee6a09126632772e64c3a33a3f38607ebeb8f1c4248ec1ac7320868312d30821ba0eb83f21dd69d9624c289d1fe1d5732300a0fb0899c563": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7b239494d6f27fdde3cb48e0db7735dfde183237faa1723b3f9b51b3a8b25d8bda562164d53ebc29ddf1a3409e003568f797176ae0b89bdc5d16b5ac8d290ab9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "100e899c58747a79262183a60e9b8dd326406e848b423f25fe96e27e245ddcd103ec8c44646ef6ffa80cd2dce7cdc27a94909ae8c015554105cd051d9ca875a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ee75354c2e9376ecc44a54b8d1999fa24932f4326d4ecf783a32e976f5b53048d9a964f0cb10a56eeaad3e9ad04d551190660ce43170da5a129b93b45670f94f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "8e19d883c26bbd6e9618b111428ad354fb3250fc929a4289c6cdafbd5cf1e93d890d014798adb473e3121f42e53bb2e8cbf96ba636f47b64aaf2892c998ee307": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1004a09b684a07e88f9cc1808ac87cfd736196842865ce3047ec4536c9a42c111b741396e7c50510a77e2dfa47d043455f1311876b248cc1449d7962ff0b1c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ed5bb42a3fd7a402ede71ff056fc026e7c943d51ddbebfc2738227027078a9de40662ff927204c33ac537cc6c52739e69d1ad311da790b07b83145dbcde89b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d85374b0f9ac7d6ffac5d6d3df002a57f7e66df7221d0b549f224d9f8ce27a5499b3b921af54b8357fc92bb3bbefa805529ee03b5097660ee9c77441d0cb710f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "656e6cd137b60fb198069f2d595772fac6105f450306a1906af7ed210b08b06d0362246426dd97ce6db0530100adec8dff4c5e84400928b8063d02a97f86de60": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1ade4bbcc089312792a4a4df4d67c5f8bb15041c955d231ab42726655a4e0bbd0e6b455b702764e372073d65ff42f444a6a470adcd63b4f260f933e2f66601b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0154b2aa62c19471fe3ae5c7db33ea4890c4fcecd12fb34fcf8b7a49c172d699cbd5f02d247f8223dbefa66a8eeb7efed212f26ecca590651077748754e73a4b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "05459b50da19a1edb81b1b3adcd82f8d822dc9ec9b89d71824755bc7a8acda6ef480cf083cefe4b85f79bca3aba6de8f2faa4df25ada6837e914e82371064e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "1717a8a964a01793fc3273d9b6b6c330333b409443448ba78847f88351685ca5acf7518440871a446be50f1d473647da3fed3f15824ebb44fc1bb40b08a74324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7e53e59df2588566269810acd45f8d134da7ad33d503f743537c6d250a5e2ae900d99af63c29b7f609eb878363ca5c6043c5e78b7d68d28cd6c2b78eab8fa8de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "840570a48eb94446a1ae1dbe9652c85ee5668357bf811dff85b7f9e440d00829dc0cb9da7417af53fa96258df31372ff46309f88d085cd36e4a02ccd3468bbb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c4ce9fda813f9e5b200bfc218ff543ddc5b11d181a6cb15e48c0c0750a912950a13ae531de6b11e7bfcf4827d41acb09c9643218b95e598b002705d3382e47f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "acd798a9ef690867c4c2791ec46b29f97e21c08a0114db5aa3d9648a9fc012326fe2770e479e2c2a320c6134f298bd89cc38c5c7943e527eb987e717aa8688f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d92c8fd96b0e80e7538e04ce3996d903a09f304149154b555c22d61e497bd03e23e0784c36a7b42c8a1bd493d3e74725a37e081d3138249d47d056169f65521b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "e46f761569a2fb39c8504b776049b4fa8b2635541af3a92f613fd6ed2b1a9a2bb99882b2930c815d8a7c6025fc69a7586aa6b784a500484a1103b4f566d5505d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "41caa3d6aa755e7dfbdd17ed56a8b3c421fbd0b5eff229d116c3ed9dca9cd67ea4f97f91f9299aafa66d32d3dfdb9dbeb69a45415e7b79a501bb30d48ae938bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "61c5eb75f3cb707b5e58d8e2bf2305fc1f8eaa026e7f91fa0cd267b65dc612ecc0d61ceb68a90c1629eb3d52ef4cf6e87cd7877460af95adbe4c12947df16eb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23594a4b59e8163113949d557dc38ff5ca77e094cd411ddb161eff13de1e1e2b273664bf2ab6d906638a4a1b40889e36a69e8debffa6a1db677a5245f0c6b3ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "d5634c854db1a78559879a37dde5dbd69395dd611a5599494b2afcca8aff28c19024e55534a8caaccd9327d376d0f83e2aeb9b55f0479fc0ed832110c9eca27e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9a3aeb283ce6c8631c24dc654433584fc1b17c93026b59d6e53a38bf69407068a343b378704519cae93b4f438d12cb893bf0c7aef1ad283e507b7de7399c80d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6caa7e9073e75462323452b225dca0187183c10e45ab574b5998956d46ac27fde42dafaae500f51d953c378c361c0fe6028c282440ffaff36890ad178c7e1073": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "31b0111f0dbc2062715ec955621c7d31aef183fd7c91b849368a33cafa468b063f9236f56b7f98eec30f09cae6be45e3b3584b4a59fb12603478ade5a1cf1485": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6e019c56c96168f01b847fcf909c6896350cacb9d650cbdf21be533501d985bf9361838dfeb85792634e783122740de672fbad51c464b97f8bbd3c8eba47a992": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "239a3154c7649aeb76fa45b8d9542bdf8d74c6611ae01c738d178012c59bba051d27716295bed967e8d88737b5e41469a7e18f5ba2a8fc5deb20014e2f4c8a30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4259bdc66bf7508c953e556b27623aa11ceb02bde1295b712fc7794507b1d2fd17bb07b4aa45d7fd5aeddc912c931808fb37c774123e78c8f66f93c55d79eca8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2209d4b0566978fb9bcb5c920fa6ab6361e8e309f28dd278f9c39911814cec9912d102d3dfbe52c8efb287652b415c8568ee2306a7d3789b5b6706d320a3cc75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "53881eb577217a1d34d34d3b7a13295029d369c23adfc8aebd6cb9c1885963312744fb90a2ead3219c33e78649734b3553eb0dc30afbbdff746d8f8543f61c21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f47ccf7581b9bac00e18597ecb9d398940298cecc04a0e41d9cf9bc10b039a73ae71fa645a77fceb043facc618d64a80d753b02951ffd2190db75df300c6922d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6dfa2902e974364b8ba10670c44175aee4739f798d28d6c051c0d97d2a792569c8652973c029ad76480129728cfd25ccfea43ca07510d3de8368a50230c76e2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "54cb3f6c3de92c0a5f05f6b6e41d71bd5b507946f1bfd6dd7c3771306bf67915dde11df3abe91250d95d254cea417302bb325adb3f03b8b2736ca9d9694470c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "9e0f0313485866043c36a5c67641aada063e7f1b534ec359082cdfd035b52c76ad678572c482d18c43b86a6213392daa63dc97d763fa8c03761c3b4821de58bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "ac49af0719a2bfc544e7d57963032d4a6000858b4651bc306753fe9978387fd13d333c5f122e9b1a1e608987f8461005b305e9b05fc157b0f608b0979d474c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "eabaaec1dafa57f41d528e2900bc408b9739798d052f21b512c07e66fc6941f0508a7ce1c49660a283692796c42b8fef2f1fe3f8d2d9e66d1a1da989120ab6f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "04c4efdd3bdd36ee24011d08983ced0aabb3997d68e56ace300ed2ce3cf5d73048e386fdf8c64e563a48dd360d7bee278803a9fec1ddefddb89e9f7a79a42c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f1f14d156368fd3eccf12f12892ebd108694e206dcdf048361a0c583b0d71b025e3e3aa44049649d4c49ef0d062b4ae4cbc6962d7ffebb78de446a769f5d432a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c7c04aad2dbf135f464fc2b8d1c796ead1b3adf454447f4a48c2e334cf4cb1b071cfc14d7e81749bd3b66b009b262385ac6e2f6102a69182faed90b2955c4665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c771eb3ec683443c6da413ef7e140a36c8becb94c7585d9b9220e8f1740f0176ca668fda8f6a92ef2033ae16443d702e5c3bd049b292ad4a6514e54c14283b41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a05d361c587308116f5f6f32391cc420c847983d227b271e71158b50027e359e15086049c792c0e00e73e5bbd34a9eafa22f2fbb081c8b781dc794bb83f8219d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "f7966ffff624938736e997d7afe02c793174c27064664420ce4d452293ff856e33fe656266ae13e10e2999db9e3d2b1c671737409baf7b3667e3e177bd51828f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3df393fbdae2d23b4d90deac3aa549a115d3cc93023e829fddc3b615816ccd383c5e547789480eb61ab794e1aac3eda7961af6bea17a050124c4498d25e30ec0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ea321f9c6767d453547171fbf1f5a052fb8b7d3c87573868756d50e4e26ca851277787a8c3a725cb2c2aeb304867acdb773220ba1709ee28eb033d8e9053895": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "3c560790071e698f46dd3f5527489e9220fcb020760f619fdd826d0e56e25cba2448bfdcdd5dae1cd89111feb9bdfba3eb04af580f4e74d37e2da43d31408390": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "74795dc5eb3eb3946e4e31f603bef7083195e33ce5fcebd4b80dc2a4fee8681b3a8403cda4b33db4ecac00f30120a215cd6d2567f738119ab466b996defa16da": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "849812ff06edb977f89ffacf8ebe1a25cdb8c14445cc1ad113e3cd87a0aedd5dca3de8691e9382b8c2f3816eb07fdb59fb9be064f083175966fdf6d3a2e65b37": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "9bdc5bfbcad58c699033d75eb81110c09edfeae8080a8fd447e446147e4c29271c54a663cf1f1d8c025d10f3758d0be0c6e2f7c8c54251e9cb491dd429387dc0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "93535bf3139d0aed129eab3d5a158cb5326f4e3578672a0492a3de0dd61d6c03a7bd2112e72ae1e97ae367f43a85ec51a14418deab555f051ff737fb0e218284": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "809cb83085263833477b4d6c94f7aa081dd02cd05d21d70f1fb6b516b0e1a19fcd3b9dcd448e000b0e47ebfd81146d4199092a27554e2a5b7652e8941c12d3c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5b23a99de57645578857c137cdb8733fe5a6954aa0a0857a1b91f407596d5df53a588251045a0d19e052a47695dfbb623010979fad4dfbeed693a1a396f72682": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "b59ef97e1136412690f19664e5f755139324b7207e2c9c6842d60a4fd3bd5935ce97b4d394f1c6099f87c5896fe64bc5544a2eddbc560f94ba8959a86fb89cf3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6f9a6c5b072992edc7b6081fb3bb8932656b4c6787bcd19fd6f945aebac4e801da3b880006d4df59949b70c5d3ff62240b72d001e83843bf3e15d1527b963688": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "04fff30a9407ca15f4b2eb114c1a3ac7bdd9727dcc775e31dac162389f76d6029b2661ee6d1526494189c419b110951a210dd966d0f20da765f5a11d35c48515": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "480f612af500abf983649481cb6b7c55ad17fab9a25e477e08238e2eff052501f5c35515e148e515ace49b241303b1fc2859de26e82e8b024535f04f87f481ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "478529d597bfc53f166c97a590195511646547ef633f256f19b045c0141d2abc4f72d5d0374cfd85cef066268fb15a4436f16d70340808a301a52f6330a1755c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "aa305aa7a9c5d7d77f78be9aad76b8b2e431d8db6e7e80b443fe83cc2d6dc18c607ea6bf46a154bbc0f0b9dfdac140a4847d7a57a396025cb6a8addbdf98a62d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "a070a0691280ec07bc3b82c73053e3a856556b157d4db22b6ef4c3cb60f532a49fb1e0b6f38e0b1729470cd066164848e81e99fc605a3e55537f33cf90db46fb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "0784112bb6f8a65c8807af814a3c48177b940f0ce1a9e7ed90e51d5de985772f2cadab4d77b0d957d8fc1e13ef9c21a7e844e637c6230cdd6fa824101d731394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "06853952ca58921791a7323079a55d159a5dc035918d53d2c3cbc1ffe5b408acadcd68c6bb241433ff1ea3229e17fbcd15fe005ab47ef238e8f09e69bad02dfa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "23723444375e8ecb39faca010c1ef21bf6dbea785be777aaf3838bb4b22a722526c13eb6d57eed391ac9296f674deb8a09b7b3299a20f1672dc9f2d51d3f7be8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "cb4897379d5e0df6b5d9ca06dc0127aab372efc8e65616557e0c6b4dfc57b1863e248cd3a627da892b97812e435bbebc4651ae617d7872df36d706e906db42c6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "c09c33d95b18a08a9ed3c7c08d312e46302b46d7017fea25a7ab1f4131a7f0a18325544aaf078fd6d2c33eeea89a27fe9b413ef503e8e4aeacdab63c5abde20d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "7b0ecde7c59ad97ab8b522ae57ed840d7932891f39375bb2ba20b0a9fdebe7d39bcb89cb9ace6b43f0c7f2a9a1a83ba0e63e5983d959a72aa9aaaf9fa2d9da7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4ea12f1ff8ef0985e5f147b988aabd9f3165b1b8ddced968dfab73635dbd29baa62a3ca7dd33df35f1683fca29ffecf18e75d256b0b49af8c109db22b00456cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "2cc2581423b4ab037160ef8be7c2ca9f2361b0661787b8635dedd0400c234142939b257a9cb32b78a476076ea9fd3312db521081b6134f8560c5f62b6918d3ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "4f0de1f55f78cef6bb37f78c9cb9580a824a6f057cde7324a25f5a203044049a6b826aa56610058c3e35b52e3d117893167ed4088814ef85c81d55c662fb89dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "de1fee1bde0df30777a4b913be8b9aad3c6e44f8ff1ff19698f1debf687cf5971a11cfd3bc1c5c7107adcfd62da97829cbb1a8ec2115affe094684b9bacccf56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "71befa4c6a9e2f6cb292511bee33593e3c73568aeb5b1f8f6dfcdd325eea2b3006eda7623bb1d2fdcc2318001700663240fcb33fde53f243a054d256bb2e0094": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "499b34a6a18d76588cb37a8d56a6f8e202ac388de98c739b116b94f71f733d99a7a39446d8be1d3790d05d19528171552426ced0fa26f3e190f1d6eace07ca45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "5bf3051e8ba3c1e0bd6462f066953394e2ad88899cb41cc2596e1fcc8143bb640dd8f427692145b0da35e4df60ccca8ffeacb35c3aea743fb2fdaeecfe2b4e2f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "947999a11a296fb70e2c66d08829bcf2bf6d53a7c53b65e3a4a52dabf7f0fc021a8e0b178e58a25815533e14e0f64f70595b7c490c040e637f393358c94dd63f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + }, + "6a55a5d76506ec508e0156e0be0893ef0511bc34f6fcc9fc280b2539228158872a2721b60566ef99791575d2befc21b7290ee9c6b464c47a10b15851bc4ab133": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "6b4f92f9bd51abf177f9a16178d8122984b76c6d4f86826589b8f839f130082ccf6bfbd14dd02409aaad2ffe79fe38fb59f440a7c1c27c50504b2b494c3635a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "b788e0a3b977142114d7a29d812f9d766d2da16dbe80706fc29826a28332622b79a208b7c45ba571e0eca86853540d7fd560fb0a94731be200d0e84c00995a74": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "7103849b94d4f54d4c591304ca2bfef994940582608e6e42f14ddac5b0cf03a1333a0937dd2918180b509b09fc271dc307a82723c31a4459004699cec098a543": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "ce71693626ce8754c81b55b0cd1f68b26f48ef38e677375932d86c7fd0373ae78354a67f698c197f18be6e3cf417a933fb651170d7513a1f8b52b002f0042d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + } + }, + "deviceId": "FNQVKMHHNV" +} \ No newline at end of file diff --git a/docker/matrix-bot/db/bot-sdk.json b/docker/matrix-bot/db/bot-sdk.json new file mode 100644 index 0000000..076e43d --- /dev/null +++ b/docker/matrix-bot/db/bot-sdk.json @@ -0,0 +1,5200 @@ +{ + "rooms": { + "05831a4661e8b7029c04ecc286303b5039c3e19484daf4188858f510d5d548dff398fe9d643b55485fc1e79397616da8ebdd7989b2cce30d8046e5167c9d8ef9": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e97ccd77ac7fb99a139750d3d62d2c92fe679849873e7425aa4af47f364667d2fc350c9e93f26e2154703c0f3452214837da0295b1df118eb2c9bc23b8b246a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2bdc17d30c4b83cdf62440a95547be4859262d2b3ccaa38e5aa3fb7faf4221b9608ccf01fcc566ba45ead79048414f3aa124b38c8cc29a22451199fd8cfc1481": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18b2eced520d8c513680488575d686fff25cb91dab6d5b1716218019b5a4cce9b0c190b5ea452f740adc64586791dda7cd64262c0027fd5d305eb098cc8b17ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba64ad2e5048e4bbfe879c0950ebcde87f154094a7a97f179b096f84bd1c57fbdfeeb141b712ded374e3f1ea62c072f08c467b8ee8dd41f9a5c91eb632318e88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba5232186e4a7b396d4b744b55f99decadee2560b9ea2aea72f7561f50ab791b54aab795bff939f391dde414de049a11b10ee7d1766f90e19a0aa02921d60003": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "466ab9ad10e0dc7fdd14e2baa73865eff87b55d33587df8226fb1e26d05c7fbe36a4203d3ab45e44c7c552813f97a776370151392ac8c17c185301505792019f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "495ae1020e3f0def9d172a4103f6f415b6a43c7b81c65ed3d6bbdc2502143cc0b581201122b74d2e955b446ad9c7d767cbeb360d0fe1582a65ad8f5aaf56b0db": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d112711c07ec931a1dd2972734d2c924a04a4baddab8b4821493ec41c1400d2b118db1c7e23c22fdf2bd2d9b83103e0512da7bb38e110d3f0e4282ef9315d386": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d416c086d5a811ddc7f5cf9c109ae4bfe453435944224c8705b461c730d1b7449735678907252cf94956729a008c841636d9bdd6840c712b32b47d5a0d0f717": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a517be88ceba0322de055cfb838f4122756ac42a3c65784c4389c290caaa0a895d4b8a9336c3f790dc0744ce2d6a26e3b65af7ecd63ac665942910a8a6fb2c9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e67d23a3f664a404d25b1fec0c47d5dda863af1c43adc6838b3e7e8d7947521a4d22fef5198dee98fff00149df40aed7b83429b551ff232f3e6848322845b9a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "133b24766be6dc9014e7e3e6de2a7f30f6ac2d09ca387adeaa39b047ebb2ff571d5dd70b6dcb230734654e5cd56f956f7407a09824333276705a8e699b538d6a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8491cf8751911ea618a95eb3ce4c4c62388b7df3dc05a2f815d3102a4ec3d8e6e5e84445e6af2306b6f3b51cfaf46f6f9cba1960fd627fa064e4e5b27a2f3a26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2b2fc9b69a5a8b11fb210f373df01a49ed1dfe511c88f1b551a17630f901f23c1d9322bc4de490b47d08bcc4ac0946bf9b2367b9a125d510a34e24814715e142": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bf55c8f6e5df8b4f30c53392bad7405d02ba37fa9af6aff12cd3e0cc47f4417879f5617eb91f64d611f2aeab8ee324558d1949831e19693697df917525ba0cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "09ccdd640c7b48e7a9e763b80ad2c60c7e9de112f848f99c971a125ad17570f8786d2a7dfc88c7da557d2e13b309834289ab42dd7f398767c5b7de493627b1a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d4f15115f8d55884ad962d1036ba6ba170ebab5a090ccee4e896b63bc70600942e8cca9202611ca1dd541a5bb185dba3d26fabfe95eada6fa655eee7ba29fb6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "182a525292a71b3da68c20fcd7170dc139921f9f1b897731c79a668194f351bbf6cab6a84dda7e2a4e66fbd2b5121c98271dfa49ab9908b5eae37e3b842a8fcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a5366667d4cf301848eb370d59323feb93e4b6c2e406d706950b69a1495d7f1e0b8e62729ce06de89cb25162a74ffad5f3fdfa58fdb003231fd9bc38005e2df7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3bfde078d31be7381b06c0bae4a1896c0cad8b97a80c4b5d5631cfecaf1a642b16e2f3ac4cef2b42654a719989d5037de17555e732591593fdfbe38b284348f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c9a41e814bfbbefc3cc9cdb7151a0ab3216275ff2a42bf75fa5f9f5efc01366b79f61e42c95fa2fb047d9c5ad7894389aa926ddaff04001cbb72b2e0a7c7f5a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34f5e181cc810111080d26db282a3f682ccf04d1f5224ab2b0e7ff0fb216138c45f3ec80b7cedc31d2742b31339dca6ad980677f0015a4892bea7a264b484d51": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c5544421fe666d77c5dfc17b4cdd7ac6b51d589587379308826c9ed2e2f25d80607b98f7d7c69469b334fbb52d4599bd835e5538e9cc72ec2a7e63b918c5564a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61e523380ad896b928f11d347e1be83ccd731b404373f68b54ff08c777e9289a8a48d684da221b203f384fddbcdda77a5680e810b9ffac4524ba6a8c6faead06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13579d7711a960f66563f8698da2323400b8ac5a5301680b8cf39f626973d3481e7ce2d6949ea6aafdfda15c8753bb1670cafef618713700f6f0acf152746376": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34de4fcdf0ecc56e2da3fbfad858504b89a0d14bad8719dc52fc6cae56875631592360596e57604c6ca47e2d66d01b749db41e9e5bad7ab88e824bfcf0380e84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1797a1a7cba96fd05978ef270f296e1b95617b7e5ef84d29f86f5d4c535872bfff8de9cd25345741203a225c5e7734ded0ddee86f234786af1d4d3d307f553f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b82635002db15997d6302ddfa0c0691cfef4c4a97ca680bfff67893b2ad80abaa3c4b8e90358f05e594e8edddbb91e4b273cfc6d9a8bc2f8781101b5c448b3b6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "056bd4207f051bdbe445709debd85030dd0687e9f9787a50e7aa9bea13032c96db28eb6e91bcc957f49e065cf442a96dd9708164fd6482d4441257595438fe97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "97284673d68a6d3d4f06bbf0abdc4d7597c94a20cd30ed8d10d9a43372241da2c3b880a32ec8b49e4d8152bdc7f1ee953809aa72d89a9ed1f25f42902133343b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "692fa8345988bfceb63d925cd7191aff34ea825a98f5494706ec9d798ff70fbf1ac882c77fa5fe8d2fba31cc329494fbac4b516010f241e3c1c0a28679292c43": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7ca244af035542b87a35b8445242be291579839a14e9499ebac8347cca6934bf3df780b280377d421dd7d41123cf7d68c2172802a8dfe988ddb3fbfd8647e3f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b53b36895ad0bace449df62cf006c9d31428bc67fd560b3130f9dd83929d29be8d84560e1e8aee4d651e35c1b00ddf5960f40f2328595c6a55ab6b6ee20be2a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "efece134af2ee271d8e2b15db94c93af0310cc9db9baad68136fe99c1f91a7efa7dfecc04678aad20f29f7ccb212be8bcfb4ac92b96a942305e50942db050871": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a42d0fdd275b9c31ab7c2b20fcfb7bd08b70944542a74785fec675030225d43dc99ee403da1e5fba1db88b10e37d5f29ef8241eb911e899bf90d73f2b5b02759": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "81b6085881e3bbc50b1fcfae555243431d4d0c9f67b3ab49f40b3bcbddfff05035cc34f05ead4e597faa2279786f9060a7b146ea2f2b3a5fa6be64f4a734e7ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f76668e9160e74a5876d555ce9031e52e3f33635b3f3ee94d82a684e41ca6685b9194f732fa671348a76b820e2fdbf773c55e408b29cec00326cde6bfbf19e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "496f85ad58c51ec57d4ed4b8abb6dac6f47c58a5a316788c0f9e31e47a95381d6a4e915cbd38599ce39f60314b9b67b40268aa7c934caf747fefbe5d2c7820ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e29469adf2917532184f887d2b73b44c1d858fdac2ed28ef05e9651aaa6a1c344f6805e69356a352d211496a634003b50579cdc4f5e087c35258f82b819ae62b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55a4e6216bd47399baef1fef6a77bfd9b01dfe9fcc0a803805d32b4a1910bc27394d0bf4bfd6ee3c2b3f78a06f253294c1d59da1eff6f2bfdfe6af297c3ad35d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae592f18ce1025f530a5a27a906788e95fd21a19ae16bfac1ec6855c3f80403a95764bc7cf2f4c2de96cd1f049576972017b7fb0727d8eb5c659fd8fc28b396e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e23068d83c3ec619fe7520bf3ff1da1b149e63600ef3dfdc5ef696b894152ca2ed42b9ba477f960006285ac58aa135d1a155710e571979c7817d67d04120f50b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "af3c5b90f34fae4d6a4b8d7ac95f6757e4cec575b259520341fd4d7fdce41d84b331a7e1eea90c690837bbdb7d5eb435e93f1e21524574022f0c235b1cab3122": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b9028fd819586717a4aced09bbca1fa7e34fd0bb4862a16b7ecbd63139c7926d241c5738bc080b30526cfeecaa79e2855fec50c73e9d00073dc86328379060a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "421ee22ae9db6f43c52cbf224816d5455a65aece315464c27dc92c16b4bf606089b78396dbedc1472081b5c18908c144150b313b54de3ae96174a91cf01f852e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0b05c3aae81e58abb1c06a1d96fa378c05ac382d67adf724f868789147f06da26ae9f92bd4a8152eb6764868f446a973ec1763c1f8d42ca11d727d41fa48b960": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f5266c049370c45ea0d6b4be081006aac1faebd39a5bbb1e6bc3ad81d2efcbd8baecfdd698af40173e5756deb968a136781a8419b8e1b47939516cb03d5ed031": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0ec63beb6e901d82179ece53164ad4be1fc047e0010623399b23aa7177856fd4659f0a7caa9d23baaebf3b99cb00b02e6bb604c685cd1d55ae9f6f6f3c95b02f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cacee0adae2ede4c6dfa512fdd5bdfffb003c7764ebc4f09bfd2e176bd2827f3569145c92bbdc09b3ca49a6ee143ac247eac05bcdbc0cc2b0e5f2782d30e4584": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e68fe711bf2df4a5259339fc743e48ae8dd03dc647f1593d7d1298b63742c376c3b06de47855494545b66c15522b81039a474b3ce9430e8d0445a7ea7b1dedeb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dfb49e8fec28c28ee632c977876e5d3d0f9242a579486ab2ce60a87e0bbd60e804adb5644a9594ebc184d980ae953783da9349c5bea887a00b81bdf6f4b56467": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e42739d6a4f2abb92cd535e8e76f3f7a6de02d5bd08aebda3f86b3b969708dd43d3c7077e2a79f10c1a9211c845c1e5f654a57ae7d2a6ef7b23863cdc10e99a8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "addd3d4ff7ce833869cfea5fef4870974c1f441d6dc9982a8a268c948c56959544672c5196f9bd0fec5eb8e4ab5cb9db61d68a62c5ca870635a4a1ae517b65b3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13e39b25328e9e59a125a4a42006b520baca91878b907be7403e0b8393e75e7ddcc3d329e5f6c52144a90413da3279c1c57c36dcc5471cbd4978e565cc0000de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "51604075ecbee5b206d50237cf2b60c91dd0d569cafcc7a6a8644c24d874567bb3cf30ff4f0b92dfe2a2a3309ada8b8a052f49f5c490e5524270af52fc8714b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1022a96f46cfc110172a1adb6f93d17325ee3523f7bffcb3f0e197d057038e382ced1347d0e1757cf63e5a81735b64923d0df6abffbd608cdf549bfe43e7c275": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e64f63c2094cdb8cee6445f0ab0e36f8c08a7f684248a7c668fe40bef02bd450bd0a45f5d76393d98a421959c10f027c951c104da994766470512134e86a6379": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "786d40778b508ac41655b3be23845fdd038af7981875c7afac1576fb0788d0f6aaae3889e349a3d5eb86ab3506450346a71e587e788c0decb7245cd49fa66931": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bb64b02b48641a6e9756760377af26f299ad4a3a31ab6b5e0f98fa9117a5b6a487d879fa88841da9c1735907f6b71e1fd8f93cf6fe0f1492af5b461513f5f84a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27adc285ede3b8e6159aae281cf20996cb07175bcdda1df15185247294df60e034b6c528ae71a243104f3714cf601945415863ccb7c670d6d21037cc45249667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "baf7b4866959e7a1c863683564012315231970fefbf3421d33e79734071be2046b0fa4924f0aa2d38e95b567f8d95414405bbd45a474751376bcb58e778dc7d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ec56d806bd46e3c6b2f79c64bb72cec732f3930084c9ee093e6b4dd367ea219821615d0e3610fdbaa029bd58b10cc7793a8bfe32fdf7a18e5f817374087e3f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c969fdb113b2a036854ca073aab1a2f5b2529858250718c8fe86b41c4a684e14dfaf663eaa9f990376365aaa946b1ad9094408c7e6cfecabdb82ed1d2bb29741": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b35b3d136ff2d108b234ec47adae6c3781b8d6a39b5f4eb1894a935a5eb0d5d36de7050d5bce33b44c0e672d28e71f9a50fae664c413c53eb97b267aa12d18cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ddf2beecf8fef85bc3d3ee69c53efefac6002ed091298bcc5eb3c63e40e92611670027024127f6cc3b86ff316f2ea15529b5584dd9fdc944382f5e06b2f188a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d91fc3376929a34f07e8b3861208d26409bd18832c10450c2f295d559a2ef074bed25a0313aced78cf7256414ec09503d5af930931573ee4b60b6ba03c63cd2a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df68c1c0f1940d1125de30c96a61aed7f41e7219d3eacef709c636f269f8325a5cf48125aac9d8aac4088e447249e2f7351f159ea81d6e4fce0441b56dfdd7bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "85618624e9861c61abbe321c977d88a930d422000e938b07b4ad95224ba0b42d6f718d521665e3c19a2cce71538c3df4d7b3297cd231225a6a24ac82c64876f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "defd14bdc193bfbed74828fc19c945dd33290fbb94b149720146f8a0637f05c82b4f37e449bf51da0d199e6c4b60551eeb6c4bebc8f85d3371ae1d1a97797546": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "11fb5b91c44907bdf6e6d5f410fd1cf1cb091f812ed91d504f34933b649acebf76ae656a71cf91ffcf5944818489c8bc9ebedd9c5818f01e07789ffa2c65711c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6040eae4439be923fbf6d797242d2041945bd37615132bf2e65425289e845eddfeed34ed14bba846caffaacd7e845b0a6292112b63fb9239efe4f4eb7eeb0a85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f5f013c3fb6e2961cee8455fb4b27f52348022952f1e4e1feccf26132ab4a7fe61a5ca8d227bce882130ab977289bc3fcbb194a70f968e2a11bbe9ae61594d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08ad64d440e3f78edf64a26da33e01447447f782d8181570fcfeaf91bc37fa8d4f5d2736a72927b06e67389bdb25f82631e2bd9ef65e473f1d11e0298e600dee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "196365ded1b87516710a4188b438ac3c950db42930edb8dd7c603b4826fecd5a90b6f51c93a6cd65ed6bb7ceb79b452575a71642db8b80cb5c1605881603da2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0c9d84101e5d75fe0760ea45b92e14cf371af94a0540732cf7c1e4d3077c81054dbb2407592f2bcad435c8da964ae7e1c788c967104959e02a9432ef7f784fb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "762b646466021ba6faa81528834cbf42159634e58212c414b7af564d39eb64e3bcd3918d54abcb7f363c449e48ff242e08be02cd4d83b3d0158aca7a01e932f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d36ffd427844ce30f42bb7e493ee81a30614837e3010442b01dc59061824fb8441a8068f0a53ad7c2f5dff2dfee9df463413900f90142f93d0a6391cbaab0875": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2eb01c6cc20abadd84070eb371c363ea5fe41c487a27cbfcc1c184431737da6ebcbb0fb071c786afb24de88da44e853a37934a38de5fafa576ea4788072a3e7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9efe50a858b26cbdc672c6f0e0d1ae19110fdf00008c202918d356996abed1226901f20053544b66c65f4468f15e0d0940020fa61cafad9d1b3e93153c541d2c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0104f873c22dad7a31c936cf1d51799a3f9121db67f621e24ba07f8cb04b799fcf04519051dd76b81ab8fa5d46c4be5e7b48652a70ca3428c68c70ebb8ac784d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61dee54ea434cd75287db3fed8856d7df279242d598ee523b2e4073080652ebfc635f84322d5412b787de4adc7025b1293b053caef99497b60d8970046ad4092": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5c34f1f21c4a85ba321b2f56b49b549f0e3ebc4a0cbd93636c83d962756b44610ca8f0637e27ca4472c5d66be19c9ed186548e3c0b394193ecf2cccf95a2311a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7ee1770a8b48ac35b53dc1ecf139f9e1d111293549c9d65ab21a6fc401966493ac0017457e35e85ac1f01decdd24eb09e55bc2b75a7cf62d3fa0c7699f155354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c83a24c7ab4519be64a7255c1b7678f7ba569636967b7cb0fa96819bfb4f037521d63c2952a313b2b6ac02b45d3738e4f48e0236b8a82d429bb356987fc06521": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b681ce3d38c3f54568549e3420e235ee02b508e8c2893b24d7916e7e1c769277ed3388513b6bf533131b9c0731e7eba3bf9959db4faef28442cbabae4686653c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "881b15d0c8bf61018ea4a13fad64fa9511647a1c59ac1973b0209eea903856183b605fc6c619bc78c0d99320a87f13c60cf6b2e833b83d4efc2a90d2657f2e47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7c04e49a1ff8c8bb187f848b114a7ad354fcd247ff832f4b8bb072efcb0a243b1030004f4ab2837588aafc7b71a369968e08c684889ae196a1a885762793abe5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d1e7cb40ea789b9472b2d1e787f07f74fb0b6cf663cb865ecf7ab3582deca1225009ef78bc10767ecc113550e0919185a894cb08259a1e2e65bacb6bd079949d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e07cfad390ba4895f8ac71bc9af9eb88cf9e7d079fdf6f33fe47f2e5d4728df21c56a4b2c62dbf283872f7e4cda0dda5a90b8c6bec85bb491b70ebf179eb4d35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3067ede94b4dfb143e2418f9fb5600e5ed32be5b0c60458e244482a67cf116cf85515fe2ddb28514043689711b6e8dd9c134b229527005478ef3bc59fd2d480": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c04772b2d094ca758de7f83e90ba2f111799f32be65252c3fab6fc279c19707d43965f5a725e8731da37990fa8d2d6448de45f0f98938cd2263259da6ad87f33": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e0255b2df521b5804b489174feae084f31cdf644b1d79ade7b88cce5b4279b6baed011fd3249fa8e0f152ebdb9e7f502cd3889cd5f9d185f7cac84d08081ddd5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c68cfd9b1b778cd889969303f53fbbc235fcd9ace1f0bd1497cc991491fa7717ac50ca8d160592a447b65a20011739abd2e19df1b98a1f191b2b08c143e0f962": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7aeff6be9f470fa8ed2da0ecffc6856e8ede6b1003da241843903ad331a35d6d7a652d61d883eab7ed227f63e39d997a95911911106f12d9d510adf5d581e718": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "786e8a2adf886f45be017d7293716427c0bc58dd593447cb7f7a6937334fd8349f1d0b42815c755198992a3f288c4d9e21593059ad5fa841ea6b6cd62381b8f3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "549b637f5a884e79a3ba18b51f65c7e29c86cb801f82ce992a13b9d0d61014dc792b75dbf4c7605acac0b12cacbcd2c14086aef01f83400551b5964a0dd6537e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "402333598f3dd2e366c596b2be621ee67a3dfb7a7615202643a0e21ddd971aa50e73ed667981fa37ac05b5352e76288ec44f2c88fca0a04dad4d3e755d32f306": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b831265ea7fc002282d6e8fa15e5ce4830913372e313f830016e385333496e445d26dac245005cfd8227276e450c4e4e0786b9eb9f5f783ce5baa7ea4aba88ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b152a423a816aa57d018d2401f0ce617ea66a5cf1f51d84779461b1b71e65dcd1c8d583ab7043a45d5b237eb11049060ba403f3874c6d217afa9ebf387c00394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e3b1c1534c8e8ee8a323bc4c7bb0987a316eedd5437fdd245e75dbbf942f5c5dfc92dab40aba23ba83e5d52d5d44da5c062aba32f6ed85d0b8676f73b0f8bd6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "69904e2cd16b3e4b0e09f6f10da9ec3ad351049c0477ce46e48693453d4d85728d0bf2efad35663e1bb94385090969da7cada958466dfc5138c29d9631ab4e39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e1b8800753e302d1344167d10a11f47ec47ae89955def7723f1148601b1c2c691867c09a31195e2ea0c5c60e7b82590c15e25329a9019a7569a367369e52b31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "377468c0afa3cae3c35e1053087dda735f51217a528dafdd871b8f97c82985a79c701fb32283f4d201fdf4edead47887cf0fe1937841952470a34440ceeb04f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9176c5f04982ebf067e4f42cac989f318f999dc08ae25623038a2ebdd96364e4a5dcefa0ccd45d740df7a453662e1a47eafe793d4560cbc24ee16283a10625f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "67c1f0cc6a92ecc79766225e151eb2add18c2a2862ee0a74aea9badc5323bbdad51658c98d7d816a3a489ff47406f2839ecd7789135c0e638f87308b9093700f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58b4a0d63413767469b84fc3bfcb0b9c28192be7c7c1a7246b416ab2bbdfa3ce4178e71963cb097a35f9507718f85cc562da1b5aa932bff41e40bf668ee44183": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1802ef600525763f7b9bc7348da5ac6ca3fa5e5dea5b8f8e3719a87b2c9c2719f8b500af531c7a6522a509e4c508497cae81f2c0640f31db8799956ff6d1b7ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "249edd8dd4222f8dfe6a4b8da800d622382a69ab99b9fbc5f259adbbe26ebdff0481b1eb4f481bef25f935ad0514defb38f61d21693e2d711918b7d047619f76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aedf7da20e3563edfeec535ab3700b40bfa69d0df9eb2c04a4f772e4cefd9e7376e654dd071f5a587a8e64633b560434bb3b99161b95b93d24609cc072fc087b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d1ee13b68b999798f236ea9e03ff52738d5f5e840bb2b69acf8c47141a4508c092826a90620fb3ddb4874699b2794fd485dbc968d85a549bb34bffe1bd4f526d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7f8e51845dfead3de87290ab81c9494509ed6a6ce6af4ae5bfb3839482bad38f87657ef72a0cc5e0ed1362553f2e5114173ab677e89ea2dc8497c797ef08ea76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e5d1cee9481d1cc0c7bada7f70e3e9eeb04c4d511b8335b84afc53d7e60783ed28101bf25bf7d0732d7c3483c029eb497ccee34d6c5b2f05783afc1a802b99d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "020219f3e7e8b17fe85d78f6fde0f7ef94e0382c257e6628de6731568383f9904cd475294c130f26736c86bff0951d4ee8c6d13f75a51a3f003a51606c279324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "edda9381c36fc9aa21b45384ef80425d5a0195d83dd7e7204e1e09d47a00200af5f35083df82227dd953cc7c32512313aa32c1f6995e267055ab88826714c95f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a2919ac9457455be04ea56b0dd6e2bb284c06d816a490085b11ffe2e29eced4a1c232d8536fa5cae3c31be1846e240a7fdd4513043daaa652400caf35d1004e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5f1e75032b91c9df7c20c3a2b71108d087e6cd3e06d08acf534a0efe9e90a491f25bb9e9ed8238c806f2d584210fc0d9e501391fc2bbe87bd916070955e93df0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6da1c159111a95356689d64bc9a112640f86431a51f9da752777e99933c1020cfb36f15df4eb45757a78f18835981e3ec5613af3fb13edb26b653e96c3fa54f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f750e5d40fae0181e51d675f85594ccd43e8efe64f0f7f789e03adbd2d55541ef1b61bbef5c79a891e78001edd8703f3c25c1b8dbf81a92b6923df44c21183d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df3d50da1c536fc423d93e9dc9dbf3269ee7f542c6873a5cdb387642560019bca981134c47a9e7a8f853f9d24015789518efb9977622319ea9ceb9627bf130a5": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a5189b854aa1843a3e6092ce0c713672acc6eb71b61e67ee8f9469b4db6ea55876d466d1109e753e581f648bc2d981fbada026044a3973580fa691d788eac557": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d435c1c1861e1c58e4e77c7f761ce4bed5e603b0779505cf124275b613170873c4a0a89790158173826c2422af1c0f1a66e8e9bbe66c06f903ad2ed6a58ecffe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53a824060dd912e54a8991424e514ccc75196260734533480cc0673494ad9a8cfe95d8c0f68affda4ae0f5175812942ea28aaf491e109fb7bfa0d1c26198468a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f1af94bf8fa012153134d98b9340b9a942e8b9a42fe9dac4d11eefadc5bedb56f294f681b7afafa8fcb5092341c846aae349319ef190248074d460b7551bfcac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35f38ec05292a217d9fb04b9d32ef4e167acc61ebd0076a4a5d6fc7103ec732a18dd42acd35735ff5ff9b114298efba1194afc58f10ecfa3ec937abe6c79ed2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f55071cb20d2971553b28328347400c779a23225a5926c664874629c9b946b12280893f3c56f36783d234964e28cf86bc8ed2a899ba7843319375cb6ec66dc13": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9b631a52ff60c82dd4b7ae297d69f5f416a09d852e66ae3ecd79d6716fd1827a06b679e006160e6d1cd9d3a9875c140ef92b65f3a76d49c55cc834f063a4cd45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ca0e68c299a6b56801d32f8ab5f17222796a7055de9fcbfab471976d12ffb9a1bd27e4541deb31b353594f18878b67c1acc91042f3bc2ff30f7710f36064f04": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05a972f01473cca0537f44af3a8923c6fb16c12c139d5bf4f5136cc04376888e1e8453efe1a82d0aef37bba85d762114b140266996fad28b353e13310db3c4e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cd3c28463e07bf80ae415c2233b4dbf19ee3d3032955b587ef16d5fecaf2d4915ea8cb0e03f952578bd1f7c6db5b28cd5675656fd353dd85316c27eb690783e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee4155454dba79f1cbbd28f9bef6ffe5ce6f58a64ff23d7fefab53fde4b5871172b5041dd75df7b94e1c7ece5899225efdfdedfed7c7b1b1d06f364a02dc7245": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "59ddfc649940f2a43c51c709a0f49d23ccd861c93e4884ef056d5bf81668174930c8d96266557458bd71c0fe77c01c280fdd4a1a17b6bf9b7ea84902f2693d46": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7355b4eb2ea37782bbb78cce5cd32d82d359315505df85cbc64f383b5afd0cb8a66b55128620fcc737819fdc6d134168b47306385de972c4d3838b0c7473c4b2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b4c74e5a02b53b956fa9fef7997de3424ee71cf2a9d5e2ebb9e791d8c81a1255d30c768327530fa42602d395a4e9fddb76dddd1b39be528c75ec46974a1751de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "693ace4fe147433069ad9604abee733fd748a8b4939fb97bd57e45a0a8181f3c58fb02e15e782fa7269721d5e0f16936175ae50cb5731210a1aac0164bfe0693": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f46b32681ce440e41bbb6e5b336e44ee618cdb52714f92255d054f43f5e59fd251221aaa58e8eb173c3d5dfdfea9c968c54bea5b950ddb223e6c4930c4a36f06": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dbe25919d4ee7edfb6cdcd5dd832d514413b5ba6e054c633ba388c28410c460f44fcb9bc624187fdcfcacbaeeb635323ab6a6937299f6c0087a3927e0bd573f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5af38882dd31ef1ed8c4baa02dff4cd85b0de5df2bfbb6c235f289c63d05a20c7f9cbd22b2b36368118dc5cc148c1724b2a6d43e5944bf17dbd62748b8ba9361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23af53f28d5d8ee26758bd4df06ea1901b934bad679888ab3291cd66fb4eeaf11aaf56b48f37c25f8634595e45ef6d4c3d42a42a89ed9652fdabd9972fe9351c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "200c56e7a94ea0315e8de814b6b64545347be54fa74fa334cea1a3d46caa8de4bede6af8b230339a427b15b4802e246ab050cdf56698b1ec2a3f2f5052273ec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "82c523a181bb1a00c9fcd1f3981b89c676bbe097655e09ff632edcb6d323b023a06a8a036be7963974990c2e16763f48222d0b63237988d349becaa7767b8267": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36779db1b7ae51b30525f7ff8b08a34065806f45fd7382d6c41972dc93ad8ca3d9e8ccc0ad2fb0412adc55f34c73aa6280dbf4e92011628a565917518396778e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a8d7bf5cb39bc3d3e606dec6f3d8ed9160b6f8c0ca8407436ebf84aea5eff4fd91f9d8a2caf8236a35eabc462f47dbb71c4fb939c88542cd1462ad1efc932095": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa8680b2f586d462112c940c30ae6bd0a9cdef1b58b29b4a0894230d26c7b128f87ffb90e9b17037eac8bf462191b5e17c9b42295b9a4bf4e051e0598362bbca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "107bc55f2ba273e067e289864c1177891ad5e32d9bd4c0c31e81cd063b3dffdb03342dccc00cb14bf4e2a55859377775d757248022ba12444705c66760a9b07b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8b5015fc4f1590b70538ba00379444edb69a284bb8edae5cf0fb1e0493ad71a6071b2f2e433cfd5b8a803e95fc82b02116878848c0f7d48e75499f27d9e43d54": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "026e2e20f4a574795319cebff18419770b4a9096dd09b05cf25a24c7da96f8b8b3123538fa2e359739bfd23cda84b31a415ea5e4ac8af86e37764e74cb08d4d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e488d0250dbf371ac09d6c650adfb287cb77beaa30ebb09b668c8497d5c8ba13b93918c98366cdc852b17a70c0106d3cf1253718994d9dbf744d0696617e50e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c839cf0467738496412279ce62d06618b6ab4f64c0c3bf68d1edf8f25bb0fe4bc0c4a6f9549a5b9b8b4a8e75c0f0b084f9dab9bb7ebae3b673335a2df53855c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a2724a2eebb8cf63bd5ca13c27663f851f83dd9f2ae5a852235457889aede5d6ef81f3504ef6db5ddfda99fbe23aad45920f6101a276dc406ce705170735f901": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a0814d4b15484ff4963d08bbcb6bbdc51c01237066b642b82f12539aad878ccf6cc28e6f47fc51a1b6cc1cd0a010d6b31f57a029816d55164a5f6b7d422f7b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "48e99dade08827f31966c63746585a2978701375bc4436eb3b2eb300f151e33b12a6a301df798dc94bf261788a2fac1bbb66643d9f0700cc696107568dfb1fdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed57e098093862b68382f7660a8efdd68fd5381318a3923827280a5f1fb8058b092a1863eaee43ab17d9395e92135ac80bd5352b9c398fe6909cf43b874af637": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5104569c96f5520f5b67480825a9cd8942745b01781ab546b8ed51f37d0e4e7b302c66fb2cb916c0b68488734b9db1fea7b5ae65951e819ee487fdf8688991d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6ee3d2c93fca233aa76b400af5a45445e56be3166f979127da275e26b0f6658082c5e5a956995b010884763a0d25d8d926be383059ab70ca1c10a2f0db1de251": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3741fcd86d108102310e14afd9496578d27bd0645456b9a432b22def9561e911fd332b5e933ff60ce7741753c93e13e3637344bdde622c3eb769867fa5960ea1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "45972c822c9ea16650238616961296f674e01e3dff3d8a25f78a5e3173bb97594f10d69af44ae00d07c0025f211277bbee966f27904f99499dd9662c8cd51df3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0f2a720048077a79bb1744b784970ebd95655acb2a02d117132151cb09c8de4aa9826cb1a0a81cc1e587a9a2216e6f0af22e2bb8c4d9f9710022bae849604f24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ff1d55e417b6deb1b4c07b331e89f8d0ae1c133e99044f5a6d28362e73005a565a048ee8c7ff4aa7e3fbcabc1705ed3348ae5284e68264f85c827bace35e933f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0662874fdc78cf03d637dc4dbf7a64197ffb1c7e4e8f42532a16138a1e01a0ee5a4c3f1b7a7a7be8f23243666a77dce2229b046e8228b8e22792e751cc8cde1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f0e2b6225216f168a3c84b0f6c66518bfc4b83f05355e6858c6ae3f56c297c3d51f383470f66d2a1032ae454b6fe592a2f98d59e62b836f4aa25354a1a76cdb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5d7fba5afed744f84732b2bccf91f41cae412aae61c9d98df51dda4bbe67534319990b7072a1cc8d94d87d3db8809f272d4221f536180df3046ecb23d033379e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06636309cf438fba1b75681d1461901ddcfa58723b212be052859e1178a14b88cca94542caa80239c3f70f2a6014097b57405cfbd13c1efaf0dc8bb8e25b7f47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed4bf5a013732c719654fc723127fd285c634a5f69d1046d7801f734aa2478fd8bfddd12393695a37308c32badd81bc081f537abdc51a9488951b90e07c01d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6543f12ff64a72069b4b9dbc2be17ed6f18b3245f36096703617582f31a13487895843e125309e7a152dca0845e3a17bd8ebcae580e348dc3c070f030f454e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e271d92a5348185fe37c455d180b27950e84aadea862d07e0ec028374777ed078e58d26c3caec7c7a06f38ff0cf7d5c3ff1593713b92e315a8d5d2a81406823d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d7724b60ad1bde1bfadedd0c715adbb151ee373ce73a17b5d8f32842bb3c5d5d35788978a7b3f37987d39d82146ed9925d215fd772d49040196c901c32cb9607": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dd73dfc9be803ccec0b3ad1b44ee9600c6c1743c7633935c68bf2256d1f2e52a4aa1d7a92442260e35f69b3328cb0127b9c8ec47ac35ccf563463240382598f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f8593911fede951694db369a97ec5d826ea328a8c4ae6d263683a250a857ec69c66640a65bf6fd7292dd502b672c95cae691eb00582cb3a20d35f1ee80ea705": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8363cb6a3613d3d71d40ac8c1f7d3a77215343d53ad9efb6e515119599519f6e9a29d596e2c27acab939d890ff4741758dcbf8149d5f69df377776c2e95c7f8e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cbb345f2fa5085a9748dd44e1f6ba99f22645869b0d8974e51efb93dd71b631efa1b363f1470d025c789d7a497b1730b4beb7bb4b0e05017e16ac25096efaecf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c68837bb3672f248f23d5eec95730b372fbd0e0f573708e5f5fbd3b6c89b9e03f847df917f27823d21f8352ab50299debba557e895d4e767332036c99d954bde": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6389827f180728a23eb3cae34cf5a013ba660ddc9a0c424b09512b2087900544b7c27625ceff31763230e7da2d51904ad97d2d9c5cbfd378bb0608e179a9d892": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6101f7fdabf5d3ce4f61dc4254b738285fc002af7e94537f8157d6cbf8cb1efa7c66e65cdaaacdda00c5157d0df958bc9ea21213ba519aefa9661affc30ca980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2fb443333f53b5e5750583bd9f3cb0fa02f7e61003d55406a91a36ba868e2cdf730ee0fa59ff9563b5ce59eecf4534fe4e56cfd0090f94bb7ddfe6758db73093": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ad5dec05769c3afc027cd83fda489debfa62089767b425a3a1018ab3d17e1aae07bd95270a2ffcc7025cb2585e16825ccb95dc1b18bdb82e7c7c244c05282a7d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "65abd50950561eebbc11fc6a9796bf8d153f340b520c3c64d0bd0fe96fb7f90e2277f0e726626703ce82fc985c2e162f339c3c49a473cf7227988ee76a24d4fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "97ed6dc5345c419effc0485eed510d78944c946edad3d8f34a0cf235f7726431cbe26f6ae24e1329a21d92e4f238682e48c6dc93b2e209abeaa497cfc7a18fa3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2d44cbb4e2cf11014f6cb96565e2ae573a3e5cbc4ee866235bfdaabd7d54d73a3e5bdeaf41255622857332c146288f0491f7606d1fb95d638b9140902f8fd7d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e6e004f3ebb4c0af344174ab29f9fbbc3c67d6e055e3667eef3642d29401ad22952399bd40e3e3b15f60d636bb286d53499f68ac3ad608bbc066452c4d20f7a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f07b11c84bd0937eab011a3e3739d3230d22081520060f4761f34f16f7b49593701c2d08d33ae904937574baa033f35cfcf9b718d3b51391dd977ee08fda2926": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c27266fb4f2f953024bdc4209d3b2930c39f278b7c59272ed41af72cc1df619f8827e5fdc21549d2c593532e9663fb87851eca3158b2f614120632a75b34fe24": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bb6487e49eb80de189a243cabd34daea113fb6bdd8466f68f19b4e942387e4c72eba38d27a0dad64645b563b6fdc17b69fb6e2425d0771209899097871adc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c943282372270c5fcc956940c4ee67af7833619ab5f94fcbbbdc45897cd9a6ee4c0b17e56246f7029ac168093eb09967bd47f169a887835428435abc667bc26": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e3c2d05996716a5d5a4fb85b8ee774eac82fc0fed90f6b3a671240f9f81fd0c15c836be9fa0be4362805ef2949e63a449bd2f011810873316aa8e747793ad523": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "add8b36a38aa693d013faacb1e480cce55b418da4fbee3c3b7252f7db4c045a2e968435ffa249eea61142c065896c87184009793856df330c8dc3f418a60cf40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ace0ab6dcd196464e6d203b37a67633bb96cb5a38ce57a48c2d42ccd3f9d5eb76fb17814d4deceb9ae63e497d12156afd619c9493a998bb789dc51aba9ed247": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a37f3f631305721744eec25008721435bb5c1daf186d36cb0809022f4f58e9000f7aea2cac9e3a0895b7ff21fba34d4060bb97d4f146d7d9a881a94e73929400": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0225ecc1134082c71caf262c167258f6baa059a7978a07e233259421d1fc47280618fe6d82d07ddfc4fdda0811ff0ff73136dfc8e7b1ff8550b53b5d25397eec": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "517eb56bea5f795af30e4da57a9bed9fc2cee7e880394492c222e604ac835a4995f80d6122ca62d051bd1a1a01b47ce860aa733682186e3cbf0e6f62b1152d7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4ce16e5f493fd8ef046852b0fa43c755a0726b468cb99de7b805c4e45de9dff41ff0b2fb3634a6ee1a5fef7efbeb3c9a0c47ca5af960a26a9465f0e42431d80": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "85f245aa3d35a6e3a6393add5dba54faad8f96dd0ea48ccf211c5727ec26c629a739e795f81db920519d1181027d0c13791e91801b56b83519b634b3a93c84c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e58361a9a3f4d70eab5af1d1c1d49ae71c5de639b055b49c29412c9d5999a563e849be590f89a87f905f25f1ce6e09a53e24a755caabf3c9478b8755a805906": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "421c5cb2d8c2edfa05cdc29f774ba4e5b64dce463de28b42e40c1a9d185f8fd7d422e9fb2fbc2cec98faf70e58349465eb1aec294a996227dbd20526bfff755e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "16befafa5069a9c38e70d67aa759c7e336bf54ce7cd3c228253e48dabe9406a0419b714ea19e0bd941cd394ea447f9eb8f7ca6404105dde9f533b47b62339c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a386bcf70a3c9116f470d79102ebf7b6e1eb0c285ddb50edece56f71f12b8780788388fd4e3a3d4508d1f7037016a12b4e96421a23a7026f730c9ad4ebaf53ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1179511b825da1859f02964831f34746418b45bf6ac63e5f6f773aa901bd7c0c3f6c1d4dc64dd308ea7b93e913b0fe44a1508dd92745e540430083fd6f5cb018": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ab8601717198c2b8fd16eb6de4b64655201fca79f9b229dcd9f99091cde7d9015775ab778e98559d4d8f7ab7924c999413db4cc516e740390e174b49f4b187d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "104c81819fb2722752467d0a50eb2268f9f6ca3a25aa0e97cffc642c59fed2eacf5994dbc1430b77a8ac1f3c90cf57595cc056aff0e9b153e265ecdac037a7f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d9b47ca626657ad5cb5b66aac5566e90452e175baf26b66f6c2e54294760f45c0393e145486d5655394e9c92e07f3ffe8cdd5fabd964166f487f550312f2e12a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "843dc8c958813654a32a73361d5f14d8327b909c7031de2a849a8f4f59d95a33b44031c6e3212ba036c0303da5d69ce56a92b925e6f149445c5a7af71e7f3d19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9815fef495e10b15a809b100e1e6e0d28346b3bbd892956964b09d2a4d9affcaf6b853d1bf91d36f50a9a43f3151f569439fd2a23513aea794580e79a491ea90": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d871e4ee5d0010f7a17c1c1b8f4d39a56c443d3814c7b51d608e8df578f15a2cc5f8c371628aebc2dbd66b50499aa92de6b4c0d461e42404e79e1feb79e3983": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ce31dc31847b04923c09724e463426aeb681c00250c1a3b9b4ff9b680d61186c55cdc6358276126508ae0d907d8e116d5d32d8c529561defc130a9d1f1e52b16": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8c4e5bb5c47bb06d529978a311e0910fbcda2646b6d28537652a65dfb571aea14221e41a16f8cccecec23f747af3f2e6922a1d153b0aafba0a7363417d5474e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f99db2d77eaa5cfb51716231d97bf56b7283dc0ecdf8b69ca566f53aa29b18a9e337f01653ff3fb8c87806d8f90882aa33fdc5e43f26af927941ac5b053f5309": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58f13aeb1980b4cf0bc36b3119f8cd67901a023600c7c645bd71ced374aa7c3e3a2e6d96522a6a3d679ad2afeea0307dc82ddf89693be9a3028d94b22a027002": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cf86c40646897ce5fb516545783c901bfa34b67b9f01eff786f58ff4d0ffb79dcba7ea1771946e35555d26607beb285cab685fd65f64b76d51b239c9d34d1400": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cdb90cbe8a90d44b381157a84ab814dd76ac3bcd0380bbc84022a4fe69ea3ee1306fdb4a92390282f5d36c1763e580a925af14a1a52a860f93266b242cbe12be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f8c07a1c01f5b6e03bbddf0e16b221675ebc54d04118b4d9c995b1b9029c78537d404d0eee6a509626b27e070627bda3a239218722531c7f5edad19aec09c6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "100bd0b845a62e14af455ba67027741a6a876a5fc7c142ec976c9aa280451e91a208e74238ef17ec3aa18e69d0f51420993181deed8c7b89b8a535a5ce104d84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f9b799fd1f4cbaf00a0d2675697dfaab3b8e46b66c25e3b61cc9f7649690d32a1522d526efc0b3f92c669f918219c0d0477993c332cc0b92d2acc4e5754309d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "70bee58742a10082fd9d14d0e6202017848d32549e9ad6d5aa7d3c73db067cc9649920da1052da37e038bf4ef1c63b8f591389fb7775a10cc4231d97be6b1e69": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "232b91a0774285327350d64ce063ee4600cf206d1b7566aa334ee4fd14039862bb358c344c7d9685a6b208269e42306786ddf8bd2371667b8bedbbc37e2dfcb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6fbbe7a64ff0bac7a8ccd91ec50e1c112f9e77e5fe1c313e094ebd9d3a4aae32136ba19941cbd5a9d2cad539744d055caed46f4d625b308f24a359e7e7dcd07": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3b81868c9a823ec39396bc0626d4bd07f92e25237f80f93f2a404d1f23d5b1e6825242bfe066a4d6beed712836a364db542f81710404a1fc8b68356e03661168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f054e9e0876e2326e1a6b9b51dc7768edac09baef125404e47529359f0ead4906ed77a3c0f8df98619351a1dadc166e99f1d1f14e24b0319bc03537867483e29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9c7be6b407b91f7d272781db639e8c94506891717f318cf873cf8641e0b7c852d069afd65d9e36c2361e8f67e3afe3a1331e9b71d1aecf6bfd2318788dcb877": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1077d77e24bcf9a77a2ad28efe921f57d900a2f962f1c1ec7ee58f1d7ff63fa387e34ce2b44b4b51798d3060fe9f77930d6ddf117d4eb371caecf3e3b197c44d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53d88cad7cd84a61c678db6c1864751cc0e259d38230421adb33ae480f36eb9595366e3ab10fd0b0c3d6bf5b4460300d1c8f5a840a7f3bf2509b93e3c1ae4585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "967b8bd598a0f9a36af07411a959c93b47f2fd030ee1ca31faa048d16465c19095e926b4916db8c365c67899f72ea5393b37f9d7810f5bf98528fbc392ff3361": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8bf47c9568089aeccc3104d5d096be6c01f57fff37f57271debeaecf61d728ea079208e235d77f3287b0200db1a431176f814338cd8b1993552c396481235090": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9018c5b0522bc8cf4ce580732a3f76714c87a737d6023421a2b48531a4f134570b8a0e49fe9200b34d9d8963df6c0da7457e82b6b7f5a68877c68e16bebdfc84": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "86eaaf8826d0aaf713b9776c47d09d34c6433f63162f4075411061c9b84581b2f6159d057da9215812a7f22ef5ebf42389d9e0c0d01bd58318dd8554fbaffa31": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "758a40f6b8bd6677f56cc48991159078fe51ef9367c7cf29f75fc3744eb72a7301b849d813abaf7655e8bd6da478b036f5f43d23b01c87cd2a4002501172de40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8e75e43e9c8a281b6201c4a70c561ab7d4477c788693df081b8973fdb1833608144fd31709bd2390f56bfec83f3aca85f640bf02dd031fcef12289cd1157a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31e5fc6d5794f568a14636234995b2fdc4e944f4dfb644408558d9206b43bd1f4032d32e75db67d061bf71932bab1bcaeb3595cf9acfead7749230873e29f201": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a7e6fb62e58be265ebe440b691681019abfe7bed0539c38573c34852c783e70ed9d89b311c768106e06be4ac30f03b9bbdb839ed77a71d4304887d3e0bb6bc76": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9a7de2ec68a03c4bdfc456271cf47e6dbe3640bd664433c2aab0f61295dcde91f7e4afe7865298f4412933b119c95f1bb701961cc466d9c03465e0dbf1cf1a25": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a50c60055717fd35a6552574b79c198ba07b933c9fad1d71d24a7f3d1242610cb408c14edff911ef7c02cb7917943ef136f263994f94f33cbe9e48c608d24c6f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95ce95bce7dae645e0f34b4c06d856dc50edc23acf519dbe8edb2679a7f3b7faf48ad714b1c371e47a77bf7657a6f398c7143475d44d6eb71ef54cd723b206f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "886aa5d3b5b219e20a1c338dcd2a5882588423a6877dfb1d881ced35a951c71ed77b68b10861f6f53375acad05f6c7f35e79fe08db29381211cd73e03f97a0dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "57d7851a61cc5d00e940b2a78424047ecd3f960b6ea5c6efc24b791ededfa94a3f8444775231cc049e1584de6973653a77738c1e9a51c1ac23d6abd5c56772d8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2022f14aa2158f0e00a4fa14423aed77a04f8f5a249ae9827f9c452188e5de4727b07da502d6e16093f8bf9012ad775cfd034d1944d3adbb67dacec6bf62ea6e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "43e00f9109f8dae0e896dba6f62dc44d3b60c6fac88665074efe25cb829ca2ece65dbe3ed1688365e744d4c311898fb78afdf4f79c6dfe29ac99d8abbdb0597c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6be43008493ceaef447ecec66fc83a2ca0ddf8d7a3cabdec51bb7de66a16e0967a297985c679ca63a0ead7005a794743130c1fe657fc137378580eb6c5f5b6f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e390d23a16248c86f21755e8ae2f0fd9bde81ab8852ce26b84a088a086e2bf5c0470695c1714e05abcf89b7450572e47dfdc364fefa993902eeba064962e46c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "794e802fad50d4ed108e0e35ecbab9b32efe53886da3dae11c9a764cf99a0db6599e41188f6077968d8e7f20ecf958aceacc32b962bf7908e5b5382f3dc824e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b1e8ef66af2eb9e695a6593d733a0154f1861947ae040b32c88e6b6b760aefb9620785efb10147a2a720b01941504a30a0efc671521246717163b757260b6578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "572d769b8b2b0c6854e0cea2fa9bc1544353df0d4c050ef89595b16c1d9f8454861248f34c5b7af1e0c465a1bc630595f5d64cfd5e3257da1a42368a725493de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35e4a34d2769567dc50fa745d04c0533226680441280fa9252551518edff4612d8984a0e456f7e3a28a9fce8dd9cd096c4b8db208ec896ce9e58cfea10bb1840": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08e13829301245fd54b4a2a82488f68661e87a92d8a79c6070476029dd9ac5df79c1f9a6643e323a8949fafa35ea84e6803c2e950a51a4da98dd6b03d3f01075": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd537d803b8dc6f853886122e313d9e6672e381c4f9372b0016f275d4cd3560fef323e59016275fc43f40b4d2234eeb9f4efe37e49a6abb82eac9c0059795c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0df380c48cf1c1a41749eaa0570ba16e5d7d2930ae8a565769883222ee5651cc85bb8442197649b8c26fb62b93534a47de4857b321f7d4e3c43063631777e261": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb5aabfd03df4ba48f040e4e706d6eba303ecda4ef1138b3f268b21a5fe696b494aca5ac0003efa5ea974e488dad7e8e80796c0ec883ced292356e7652c39cf7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "442441f146ce1f40809cd79b0fde1b13525f091b968660fa0730a841ad72aa9362a748fc90edd4da201f585f4ed86236f5b1058d694ebcc2dc2aae88260149c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e524ea86e91294977ae3ed4dab8c9d99d8df17f404f3a3a11b3bd935c6324d1e508afc513a17d4e82e0a139f4537ba62e503ceada9f3172464f6e798624746cd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "963a472ee88bba356fb6bdc92617394ce205dc3904fb834298a9234cebb681c21cc454e7179766d97cb794c227df1420852e17684b9ef1b2388234c8ba0bae82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c300c22894e9781259fce4e31ed85077134a3b178506d9bd0e70d5fbf769ef331a728d2dde5ad728d500e5c4d7c0088a48c029b641a7e8914fcb141a197f5578": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6dae7a74bdc95a85b7801978e0e7881395536df16a3df226875276b68a3f283231ae9f12fb520fef9191825ac382769bf7448b99306544331951865c33ef602c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a873170b2e4feb0c75e45a490c9b240cd25597f47f14161742e93d9556a4c30fc262d9f501e6bfaab4738ff7dd32bdcc3eb33b2f62dcfcc403bca12b8a4d1a63": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f16cdfedd0bdda362b0a0785df9430ad86db34f14283b6543c75c18ef64518808a3565cdb3735fdda00e93dcf5cbfddcfc76d5fd8b47e8a918894b7ea5ce24d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4710ff06af2dfb2227ca9e195be7e6bae372cb0916b2a5388e6bf635560ea18d68827039b8bb6d928733ed0fed93f3475b32343c5afc6e1cb6384e857785ebae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7207b9cedde4598e0a74187039b433b3dcb2c382a592129a2d5c81628d447bec76bf0451d751f8a9326b6cc039078a156b948d325e30513cf7e237fa328aabcc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e1519b3b487052dae57fef1bdb995de1106cf525544f3ceb6f0524e3b9b6d63898e459f3f78f211ddf2812fcad9d9e94b0498ad065536fe62324b18390b1fc5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12645851fe7c3e0ba3721bc1a70c693da011912e4571b71abbdede60e8da0c65c3f11fa878d48558f02f1a9aa2ba60c9ee52a1384c3975d3964d58e577c566e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "eb1751338d792753933809c544e01a4ebc1b0a1e3b91419ef945d5eafd1b25b6f9b0e3466e92831dfe0f2e7560fd6e50f3ec47ce5e50964d59cb4ae6b52998ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c6c8b64ecb9cbf5963522e7323f2adc56b5af634e2edaad40748c8ec466ac0bfe4aee4401d24c4fe6541a3a97a4a33cc5079382002c10034938f194a1cb76622": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62013622bef4f98be9b49e7cf687c41b48477d6b910e53bf8bbe0dd718120d7d166c3aac6c8c4e74d33989c0f84fff7b159a7d0bb7eb1145fc3094ce48447bb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4a186969a558ce541ff8796ae02407de14e62d41d66c927de43462af20c163b77f4320f741cf1895b4158bcd2a4a039b11bc24d1e3c47240a6054b01b8eca039": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "380ac5ac6fb6e6edb820cdcef66538c178dcbab97a87ef963077bb6f467db56ba8ea2262e3a1b893531c37907b162358c38df359bc32125195614ea588f6d6c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6d1e107a2d8d7a03149b2e4b11bd27ff1f5aa58c94a487e6ce5301f9fb2b971147cc5bb2bf3a245726bafd13f38e27b66fa8b26a5e73b862f575e7340e949716": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3faec2ea50ab8fda976742faf0f72ec059fdbc9f696eb6e320fb37db16d52e767448c159d829905c2274a0b10ef64e30197bc98831d2e4284400fc1adc9443d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f034029362eba748fa3b2f9f9696eb7289b782aec3200297354cbbe95f6bce4533884173c2fdd4628ea9f02c860e2b85797bae6983994a5d2a72c3fbbe8c8067": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5e727bef0a8774a3ada6d60263fa4140161dbc051af4a5ece65f07e03e10ef8a09d7a580b0a452951fa64c00eccbdd0da4a58425914d4e761d1698918933de09": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ca7b16d620e4d1622f1717510bbcfc3a8fc46d208c426bb6282b898aac743f8c3f23a6160c78488eb28ef2c483e65e25658af487c9d868858e7a8663c777ea39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "495d94c307f5f8d2ab9dab84764fe1c9cc68de581d25e7479a1f51e4acd0b0df979506af7899ba0f8c58fa8b842bfa0d888c79d5510718ce0a03ab0ecb3e916b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c1bbf2ce9a5a22d58196014885f901d4381fe0987a80fe44e2b932944681c6587d9bfc88128bc6f4af2a15176bed3cad965fa9a5da59fa79f18d894d864685ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fe2c47c59cbae07260b4f12b6425f4892eaee2467019b4a58ee017b9af2306c12211857e5a440a3aa2ca0eaf057e7cd7e12dd96d6feaa70ddff86eadd481a98f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f430c70abd8328428b0aff111c846e35b08f77378dbf475855efe049b368d02be9c152d62b22d482ceee0b1920389d007f82830f1ed206bcf3acdc4a490ce49f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "76ed82f8ee415c9ea44c53824440d76e6da885b92af1f4284bf64de97b0215e2314501d1bbdc6ed339a1d59dd779783e6652eca8147dee091a7c015dd9d24db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ccf4d6f66f3be021f03ba11d84341ca1ecbf641ad1d6628bf8aa7c356d147f4ffab2393301e35b342143fb9066b387ee2f09e1d18fcd6b4d152d9ddc15ab6272": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a410b07d9122e423e527e63d61e336eecd6f027b33b36ee070aea36fcfdf590451f1216f30e1acde4253534be40e6e00af2e372b686b84fb7393f763b7e0aa57": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5c158868b3b3ad985d52d2638cb0b499a048763b73e93633aa5a1205325b92ac3324dee5694c13b25619af6ca89fe69a2b11c519d991c90f65bbd0a1f351efb7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "71d9c17ee13b6d805edc523737ed174920b00418718cafd4dfaa4c81936d444d9a3a9052a0e369a52e0f41beaf176c506a0616c8c27bbd3064189c1ccc76c7e3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18c216e277374e8f9ef85441800abd1f6631904dfe2243addc4f20a46d79a6c99690982d504987a7c0cb4de910d2eeb779cd1385e7a10cdc681a945d45da5807": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21d16bbdc52a3dbea15a5c06d41c68dbbdfbaee11f5ba88eef1e3145ab80bbf14b5d2755fe067c877fc7bb5c50507f38db8484c75636e4b58ef3f12b8bd97c83": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a4b1473ff94516c5eba403cb5c8d21dcb17091ffb560eccd1105fa4f7d6567e67efb4233de04a2b4f4eadfaf538db9fc20b0410a62dbee0d9d567e1d93b6678": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "08edb4039094b4af2c0ad366eaab8bd012057b969258c45aefff820c2f82c6547267915963b98da7816003e56a93efa0ccd53ada16f5c57bcbb6712e68bb3e0f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6acc2589f5907c214b754dadbdbed06b7486f33476263da7fafcf9d7ca93e4f87cac8ba27725da4fdf918ab6634664ca0a1f600c84fa311f8de5517e274336ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e863681afe8b4261fac46e3a83978fb9b7dd5536a25a809b4a9b8f787d7864e2182abe86175551abf1149d3dda5ef0923a10e3629273d140f28d616172dd515b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1823558b8a46b2c76eba22d14819531e0d71dd9c8610b1fb97091f99a14a92c0256b24ebe623307f4ccb70898702c47f733a1f1b515231712b82aaeddd3a3818": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e49bfb24cfeb61c5c9ddbd06f6a03e65e01db16a3a1d94f206683a71f35e03c533c3461f0bbb0087d9ecc3623eeaaff39ac9c54e8a8c1e0759c5fb3ce10004e7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "837544154bc1020ee8abf1cc7263127dc8c59ac93a7d7d5d01b23903ae19e00c87892991856de22094c966762961216ecb463a015a12928cb820b6e5f2038213": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cc638aa21245ff76013a001a5a2dc1230fa8f44855a6a908021a59d431debb675f7d564a9ca394390018746f1138aff87ca56a9cd4a9ac48700e253a2254a337": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "691fa62d560b8cd1e3e84770dfc584415b9cf96161d9bb08321ca601dc33fb6e80b716734c6ccae05aae57d158d90668ed99ad75ff7d5ae705ac0f9164ce202a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a6044c22c8fecb6d854ad33f159948ae8d8b93c338549842ac3b70b47859ab6ddf472a9fa44fed1556a44c759dab82b3bae426b9c25a5fed0d0590792d1a01ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5b0a02d28856e1bb4c5adae56511520a29020085142db55aed91a82fe953443e9ebd00216788f7e73919f4ff12a8823c17d6d50bbdb52d448d6c469af84a25d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96e65e141186cc225c85de55dca947e8dcd7c6cade524a58d82f07429fb3b47cbd8eb927afaa67b322b59621a83897c58bb5401091f440c320db5eff26d02c98": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cbe4a3e3e2f90f36afcdcaa79295396aa29673163c1388efd0aec2643bfb1665328c1206eb5ce0d2e32573073cbfd9da625712304c3af021c65578501d9e707c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac6867e7173c6d3bdbb0f5aa5d776be1c8df0700d0f95fa0a53618475d878affe54488795eb4bbb89b28f4bb6fc84d73dea3d49c97774d1cf943bc17f9bf68cc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd03bf0639b9c9799e7260160904b526b81b156756280c60aed58ca4dc06fe2d78a0b9d9ad8d92d0cc66516165f97fc0035d54fd3b12f974a93b245d57ac4d42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36f4158574f61844db9d3805420de2aad60a00af65b4d11dd8e46a86224bc23cd7382c1f4b122e67e1c722b816efd2b56d2ddbce631f07f1fd75592155875360": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d97c768079963380ccf2cee6172bd8e67198b990e7d9334691dbdd50c1b551fd4f3131788708b74f671b8502b8dbadf275e225c858347ed6972cb7c07d4557f6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "24e38a2714855d96642374361b6e26c10d75f6a6a584a896a940130196d340accad9bfa15e078002d0f45c56fb04e74952008040e164e9c83a7aaabf9ec3e624": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "323363a76fea01b2a58ae7a903f9bca910f6609025dd700d6170af3db29beddf9f0ee83397e4218b645378487d5e6660ad294d525b884d1c0d68a4bbede10037": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e135bb4d0258b2e49c6eff83b3a086e98dc2754bed80eaadcefe24be338b606901721c956973d89e7ff2b33eb689e640f8f5b3963dca7c9f941b2f01c049cbb3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c8b24757a5b6677d436ccb84de75a26ba6e2c0202a9c9e65876da0128496c84d3bfb874df86f4f44da0da5d4e9c25d49bac16c423046f5330566bb86c96d938": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae93a11e7cd4c212acdfc132a0215a6eff50d3730c10758cfd104e507bfd6aadb31805bc132c6a679c82898344557e891f2215c79979140e8b1b4f5bf8e15405": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b61b8110f7f91fc8188e16a635220760e2962f2a8208fa8835dcda6b4d6c8b94c33ed056aefe9315306381a580edf6ee15a3eea13c94fe4152cddff165bd274": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7aafac8fd757755039a5609fa4970ba757750c0d6c02c1d43f3f8decf7334c4f37cc8f060ea70469e476626a6d0680ccb057e38a7e70714a4f0113ac7077f641": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73bb82cd6fb394580fbc8be5b5351d63d1d6dc33a22ff7caab373c0a1bf0e83b6af9015707e3b256c402e1151b3be4e8c5583152081dc0f024aa6069540e20a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "306ff292009141950dd3b40310b3820554c2a48ada0623c52e2a72a99d4f7f87e79b099c9aa6fdfd69a2f60e35c310c705f7da6c6319d4b79df978d385c24774": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "50ce67e2c17f319dfcc1963524e27b4145d08bc1f452831aae3ea17e87fcb036dc37f6a9c2115f4ce26725956b454242669767e473f2b71158758e50a3f3534e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e50a323df1d8739bc82a3477523ee6401ca6d7d1a40d6cb98dd0a5401db9396caaa0d3f51e662f9042b41b7b9cb34de6bed078cde2228fad4ba9b5182115e486": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2c18cba49c0b0b8912f70d4adc009f79c6f58361be3ac71a8b72eeadf7ab9f81d08eb902b0246b70ae6084b125cbc5d2a76e5de035633778eba7b14d91c6e2ae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f264b06cce72c456f3056e1616a5fb8df718da19489ad189515ac35738ad25fe2db0a00d21b17830153c84a2c5757c24b7f09e388053edd499e7b415193c3256": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "893b38e917623de807a14ffea5461e5848c1e6285d4c68ea093f164bb0384a5f822c318757378adddfe9807f597a15a28cdfa09562f5586ee762b9132c0538df": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c14904e06884b2db9438ae749d5dd94ff111d2c31699b5a8b78a960b522dd933b962e5f77edcb3eef4d4d10a04dd35c637bde814d6d2b68bfd0426742b9b55a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d698e328a74b01059f45b53ab05d827b9fb99b60a86e73d3f13b2b38554da8326247439060b56e4010c031b6e7a9f5e59d7d9f2c49b6113ffd26c1338842e97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "758ea3402319c5b7a2b1277a5098beb1577a9f37d914294ba6382b59fd75d77da5d7ace9a8b0fe24be0faf12d791a8a4648a6e09a561488992fdeffff9306597": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "246a37cb4fd8221608c61115adae8d351c7a775a7b1e0d2b56d26fd9080552995190c1ecf76a2d7d4a856768e4097d76b5acdbb7322d73ae83f79c9c0763fb75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "394646a9d4a8a9872fbb9ff64fc7f91fea7582c28725aba238a5fb484f93c78b6f72398f271a3714a8065f1a068131a014d0a28c6aa3fc786859a7f0a139f7e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c36dad803624753017e82d938d6ade3df699de1e1f771d8338de2f67f665632d13e5c6ee14054a6b816ebc32e3620335c3a7c35125683a57a9146a35ee092a1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "34bc1af3e8b0a5fd7acba54f64ebe466a11f3ca60fdde3fdf085ff1c5ed3daf4e141e531ab4404ecf26ddc6d84198a6db28cf1c4781c588e3fa9f20a7614d97f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "000c5f433d783385389a2f2ad5676368aeef6e4d8d595a638194de69cccc8d1229da9fa6f06200951cb852a054dfca57ca5d07b7b86f55b597399ed127c91057": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e27860e016bf4c99a9b4e34a7ab59ca95a15f53d9c7972501592d3e00e88fe69bc4e180a0b32df442e74e6c1523028cdc6ad870e573ba6f35c4a169a30b20429": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31251a3267c51a3810ce133a8129d0e556139c87c5e1376d1847315f7978e75119e6c556291bdfc8b06362689b5d5d19720cd17ad759a34a6babdde7b6bb8dae": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "082ecce216cf14368ad13217df552b02e4fbe8c2622532ac8b624bffc6177836436cbac2c5aa51511d530088ee29e9a29dccd4fc8afd8f0287806a4eec6976bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c529185cc13d7300e876257191531e1ddab6ce0f3c1aad120e2405bdb98452b973b9f2287280200b1957095975e89da6cc01d4e4ba7acd35e54f25430f6500d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54088850c94a877c4c65ebaaf9f612044f853af3733bde3d5a5c93604e5c1923e72586a2d3d0ac020fdbe4e7f0b59c7c56cb69dae1452ff5f911305ad7ea4d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "650e4e5f7a9fe8ec2987c96dd0b0096a48688cf886939d1058be956929f68f361e4971ef0a305acc62698099ee8f70362759058c907b5bff79c225f4e7b8b35b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8f2ee1e3977a7cc6614003a8b8938d5821502f9d86de843c0cd93fc560c31ac2a613b642d34cb51d21a005e76cfa74fe0d122c1bd5dd717ad50c7fffe46a8292": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99d82da6a7ae25c1e017bb5abedfe62c6df8d4ea98c7c13198cd56901bd004add150cd3958a23c7c7dc6dae157314b965553fe195c2e352a23b94731ad168d21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "22b470616e8873ed9d61ee2e6b3fb1a3a6b419fee7410c27844d14528ab27a21992bdf5deb5b8808adece5e1bfdd4ee26e0d866a214d8ee86366c68bbdbadd10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cdd5ae2c815e14b07cff597ed2ca83cb738d8a31e05e8e39c40ca744a2b00f6b023784c3fa971af0584c75fb7b54c695e87c852f26dac9e96d29296e3f50d851": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dba48ec3daa45deb93b3c04904f55a4f6f448d874530f3dabf89f05345e2e38b48d2e7f5145f8ac1bb1109353ef4cf30c2d5927571b43e0daa0536767e186b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "84eb615f3a31c3f6d2f91f7c9213f25a4901095e8099212dcaeac130b1700810c85bdc481f647f01abbf0e31250d17ba5df54abcb60d2db1b899e29324adfd29": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd17ddfc77c1e84d093be463eece14ebad46d037d5198b882eb6669a4131649fcaba2cfd36ada7d3631ffe302d7e9e9115a597ca510138ff5ff9d80789640035": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d92b3f9b6437ebe53ba7f8d9e04dca05d5899b4424bf57afb1f242c4f0287811c48dda4b2c4514a903ce5786028db8bfa0debb4b19f88f31c983c94d7aab056c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99733f515fb6b1961abc8df3ff7e7492fff0919ff1e6eceea0ef9d2fae5e9d51d1ad696656d688bee3113260fc66afc1d64ccaea5044d0eb27cf20f99e8cbbbb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "056267655711181befb17e31262bc5c8a0eebef65518e0f5b12d89cbdbe1e34b6d5e04a73af187afa2ac7486a6e7c969ebd0fb2de0b5b8e99d6cf154b7ebd180": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9eccf05ca77d49c8c2edcb4b943510ba9ab87c2fc25337beac39c70916e174a2be844bcc35393ecb5044ebfe7fdfa4bebf99427afdac67b3c292a82b2650e28": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f04787f2aabaf134c4d14dfbea25f15e25eb448e33c15e937e0e911b2a8f60b5b73baf928f008dca82ae2621452eb57a15bb9dfe40956ee67b723c6a2a49c7f0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "15985c55f710aab7c513b81f87adf29409baf623188af4ecda04f3f96b8e66bbbdaa6370a4d28f5fc9c481951e0e06f03322f2f509f3c4f7e4173bb35377a411": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "01b546b3d09d263cffeacc21c06e83438caf0f67f846c2555d45002c4f41614d89b5c54c44602294f61a49162c4f702b3e51386b46a8245409305bb985020adf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "130d3ef4d46201a383cf18359044b80198fc82c5d9ed88b7c51eff595029e84959f836bc3b483b22c2484b01547321efca123ed77fb8495be229a13f098baf3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f6b1779fe63c39573e816139c0fee93c3a3967c2592689e6a67d673850e98393e1b761a46948562cce4b8e9f6354ce28e45e13709e1a69c3d1a57d6d29e48459": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "99683e55cf6c23b8c170fd449ab7e5d11ddf6ed8f407f8668f685ae98403bc3edc20d03ffa3aa74ae59a6a151fbb902a75b9dbfbca35ca52db8db18cb84436ea": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a3d98eae5d73e9ee31e8086692db20903884b4b4cdf319e9c880e077fba7bec7c322902dfe0a00d4b538a65ce28ed44d58c03a09d8c5ce89bdcee9fa873b42c": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3f2886a92f1f53d3d83aec30e60f7b78124e202b3913a73760048eb9b5f554266c391a2606b2a4a4369b32f47971a3f7d69f2de21248b020509e4e074593d97e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4be8389462e540869ae0e45c672f423f3d6ff539232df267042fd6f6461ca324f8876027015c82af5652907ad138dfdf2d3ee6aa3709241ecdacc3ff74ec577": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "03b7d7ad4c419d274523a2ec2cc704b306ee3b48af41efb58b337d77fec5f672e59e91d0ddd1200cfb01e7b8f6d35ef5749432fd68b2e913541d0a24b3b49db4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4183acdaae68e788d970234f6a6797f0726b23430adc53bf6cd828ad4c780b8ec1bebfa91d097d374f423ef3a7772845ec1c54c9bc218149f0c0ecfa2727723": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fbc38a7d1867d929ddaf58aec86c3560d843b8856cc8286a8b6795c0705fad90fbb628de4b49fd211f77f12a5846014e7af08a225cf674c295a1393c3965eb10": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "901a48f923b0a503fe91690cf36069323d0914a66aad88e56efc3fec296651bad8d82cba6f370e1f0c694de8421ab11898eb1fe1c7fd2a3a499a25a9b7470432": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1cdc6881b0708953f3dd4cfba0a9751f77fd3b3a70fa37b2111c80a604b1c60bb63ede10605c80b7373afb70bfc568d4859daec7cf493a9993ac10e4e37def8f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "018a88d72b9f171526fb8dc93aedc5f5b181450ab83cda34c941b8ab0bac09389f4608eafbafbc25292228bf822140c72a4d305da671d3c0d68e42d9b1b62446": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3e0cd83b8d68d40834b6500e4723d11b3c83a8b4da23c555448c6caf7f6c4203696b63d0a7acfa85e35d6817df26b10c230e2436a70c3ae7c75cd69d2acf672c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bba0c585addaabbf93ff0387703d47aacf16246a5c962d32a7ec179d80159b40c223e0ff587426cfa61cf18010168e3253790f7d2e2f363c54f3dfd8a96afc91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "195b1a709958076e9b54c5f4e9a3ed00fa3ad2d88f0aa2541fe5dfc731df039a0eded0d92cd8e6466a2245321d053dd51df2ea11f9521c25b60f4d3d60788908": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "83bcfa471b51cebcaeb0905f10a6c1275f43e6cdaa8747890bb57d5934c54e4b8d7d5f23f000ba50e83261f319f53358774f47ad2b76663cc103f2267e7e3aa8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55560adca3696faa3cda732b07028d8d80f936bff93a6bae235aa33c166f25e7b7368394628ce6375965dc98bb31423ae981e864e9c521c4ab19120004b9a1e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21563084d826953a7f1e254a6712011fb5340328db8189200c4fc3248728c8124ed3086ffcbe7de1a757b81ac65c9c9243a7244b1820891eb09467656bd3d1fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "322fa527c0d7a72295511493225298b95ad78ce48464e239c59c9b656197378c697ce69a1415599189dfce0d36b8c1b546a1c7ae650dd227c84d88a019f2dedb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3b32357afb9816b013c170fdac77f5f4a5b0563d7f3ef53fb8b6b030fa59d1cd6a56b0cabd637d77706ed9ef20a4a884aa240b06551b59262e762100916252ab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "57259cfc78322cb5dd7a4e413021b9dfe00b0c6e43071aef3c63c717c37f327d1254f6266556b8e7cdd27386e0515ca375063b922c15b6d74153f347c4d53821": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54736d8b4ca55900201ae46da8b6188d67279e0dcb746e0d3541f45aee5058cbf126905e1b7ff73566657e1d81fe48ca18264f1ae6fcc87bf37eb22f4e7e9fbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "604fdb823eb09cfcfec79135c60e62f678631cdf3874a84bfa3446667f1b7c26a777c438f8d5e6ec3cea0391f1e8f508050fbae028c15afb628ed25de04b4a3b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c2d9ac6a996a4f8f718feb0147762f73905346c662ec4f7631502050bbde1dbdd5e49252982b50d28245b137991964289277eee20d8f41c9831b8e0aa560b9f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c12bd0d18739a34465462dc5858ad32443bb88a1d1062a6eb6d42eca15a2ef4859637ecc3f4f4a5dd50e742c5e16414bd065762d550a16e92c1fc6105676e12f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9b34444d864dace4a7c39a95cee7728cc5dd89558a40259ccec1163949c6e3ac96257b0aec082dff98056b307f88dcccdbf46e73438665ed95a6f5aa6cca3364": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f3fdbcaff51067549db62350a3eaa337bc851589e310cee9b5ff9b52b17490a5ea1850f243133e4fe10cf3aea5ea40d7b37612bcee79fd94a290c7f093838e35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2357d1a35af6ca344a6e8d5d303755a936ab705f21bd2e791c679fc3d7a7e7d87d8d1e4664e745f2d29dfd4201bf579fb4904901f290253748ff53d3d6ab08e9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "211ec36b620e27312d6b2f5f12a272d07d3ee87f77a9cf73363b05a555a5e18ea696fb30bc83f692edccadf87a6d67d7c0663e9ff2eedb3108293962053f8a27": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e0e3d030425b4b7f610f495b7f591963fab437b519be7bb090841a8715e46ab676178c6b99f7b3db85fc5a974c21decddd8e203e97887fb8177b20e64f12194e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d1b2558d94a429edccd40081b9ca4af97f8e18c75cb2ba051fe3c9fafa11dd96c921473ecbc649e0577865a5ca8aca95eeb7c9a26e9836836e9802c2bb351f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05a5e665235690cb9c12225fe49a2895e515c4557726df43f334a3711a98da193e133f1a7809ea3a1d9c71ea6a2f7e53e01d1d4f84c255f317884e476a9027c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "099fa70f7e669531fb8fa9f4fa8dc5e0015eb818f26c42b48f0dc11ba35d4405cc76506ec8232f873a0270f4dc3dc1da4fc762db296a471bae6f7cd538a35ac7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ea642b6df140d94e114f290d1bec2765939dbbde056739f1cccc69a07e234710aef7ad48b42471486a47041bffc1ebdbb4a8cbcf021a32447b1ad877187fa0ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e67744a5831dca59d219c598a417daf7b561d155e761b932a144f39b6ac5a698d8f8187cb3b3efbc85cd134098d63cd8349c11343dbb3a80a3fc4e0afcf9c1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b7a1487e5609ec81b5dc18fb0e81cb32efa350dec675c322b097367b6f524d724fa8ff468551d0185c48ba41e13cfbd7adfe79ce0d75648bf0796c136df61e77": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "16948dbf5bac62799f2a33cf243451d0ff221a257da2fe64a7b177552bbfe4488ec9a3307e0469221ea0acb745a0e04b932f1aa85e2fd8c9129d7136348f6558": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d79f22199461ff6dd4f7d1ab969b96e1d5227497e0f881a864e83a0e01b411d98933259d2c23e3f3fecd5d8c54bf0abcb57ee4c6dc30e265f005bc79fc76be97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31027093faacaa186dccfa6a2be8665c6f44b91f44ddd2e7d8f6852d9321e392ac309654005423fd1e09440d4342b530f31892086744cff9b927b261b25e8db9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a4f203aa78a2562d8d7c2c42b74083b7c9280a4096f8720fbbd23383c8db57d469edf944a341a7581bb9bbdbe1a609644e0baccf78e932019b4d08c700a65598": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "749adffa29dc8efb3761e7f2ad46ecbd4b0982dbb7209ad50c7f577153dfa6e565b3fc288fa7da1178c2f75be3d008da96f39acc6b00a3a6933871be35dd12fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "841646343fe6611518e0bc9326bb05ed5808a0c6a417b454c845940a0875b336d0362e92a7c6a32f352de2112c02c1c7b72a926312be2476f0fd3c03ffb21ea7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "81c74e2409f1e0cb8a856de68b024e9f71cfe5918d33be0bbd30a9ba5cd89acd695c5b5826c6381a171fe971e9157b8ce8dd2807e584ccdf5c58dcb5e82499a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c5abac333f0243eb853e3a04d14615c8d0c5b3dfac51d8f8034a8cb1b2b26f296ec52e918520b0ebb4fcc94dbc48e8da8f3d8f94d1730086818377e861ae2c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "211bf624d40728bd7c16d85024e9f09a96018e41fbe3cdd48d42cf0886c01834f2b9b4b394a5f8d931f413f174ea5ca8e6fe926ed99ad2e65542a5ebc7231a91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e82a4a00de8b85bc066820ba7b5a01f977a853d7000f37c507201ec8951dbd887ae29c4260bb99aebbf701681b5dc36b62285c72537b8e1423cf0d997838c55d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b4ae01582c2cf8399a9a9f606a5a3b4569607756a3e2bf89319408edb756f31e4b913aa1fdbbdafcc4926c7f576d485ada0b88d120f0183106f17c571e46e7d9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d505a914ea44fe7a3c5825cedef1b703850a67c7495ba7cae82c02bdc2f216d02e216d3af2d0e62064eebe0f1479d817485081a88e8a4db6b55239ba9b4fa911": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c725fe608a03c69bf46b7b220837c0e8b1b39b2d9f34f3bd645ed5a9c3f657350980c5c5c8f44658c4977a445281034f5a76974007e5ed643ecd5a9ed921ddcf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1dc157c3d19915f943de01e828980f8f0a369425b8e1948cfd71d73eacf0c233a908fb8fe606425eda6c93167ce807c56dcf51428f7f9deeaa96b7d6d3b2edfb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "63e1ccbe0b73751efbf00f94e1ef70fd24522fbaddcc38301d0d239e415b68300d1ac8aab688cf454a2f62f3180de46f272d27556ff3eec55fe597d93dbdd61d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "da74814b097a3686eb75996f705bda120338ea3b129b01df46fa9f11671948aa2f3fb571ed1fb3325ac226965d6c3c59fad9cddfe46cee8d7f866a011933b1e1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b5c430a0bc26a06d7ad4dc14e6dbbfedab32fa99f2ec9ece5c600baa3f5af3aa6d29b57fa88776b97eb46b16b53dcf36a885c6e6a694495489e0cf05c539a5f4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bc80bf396c55e7815925dc89f9e2a20f7c474e910b693df4304e51c45651b7eb9d284ac456fecf5f12d83be71d406eac89c10755cd1cd514a1dc8ce8c2b92f1c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b7aa6a6fe3a8119c0025a780dfc7726a19c61f8a52e4cf595e02c4e98b6d938512ba372ea07b398edc552379632b24914e4aa08fd82699ea8536ee8ca6e281af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2057a1a2c1977dfaad474b6040478f11ab9814bbb1770f5fff0a12ee454d0e683c3f4abdda4a0e3aca8df8bc333dd826acef8073130a187621dfcfbb27e4f74a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "51be56baea4884864d8852e6d50ce5b5c6f781305181f7ea107914010fe22f3c413c41fdaf75c06c12209c08f9a4d844da441fff4be99914da7d33b947228f39": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "662945627f44ca432a8eed24923c60d77d2b6120d7b1500d15f53f3fc4b3bf491d8dfd886f10f055ee652e92a3c15182dbb5b618879caf2c16f414a456b69852": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4fdb84c0dfad6dc57338656abb4074f858daddcb0c02471bc356506f5535d76befa379a4205296912ddb06954dc28a3ec5d8083f68d6fcbad1ba523d24472f56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cd44dba1c9023279952cb1fc3cfc30f646c7f41e57a7ec1dade13ece84a141fe7d5784cc466923fc16dfa1ddff9aeb2ee15babd92e412977c83fcb5746403258": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "343dbeec555a1d6d89e3f7df9b65a149c30a3b5d6297ee02528753ad4036029c886902267811b7f6e75384504e96bf890f3d6d30b6181447e18d49d88ff894f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c8aec875be207f3584088f497b2ae4462898ed45ab6a6b05011742443f733e7cdb04fb72c3941393a9c1014b84a8ab18d4b877a879a9004699f644aa946320e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d6f43bf73633e1cd1effbc89f52f2c819b0dd83a55dceb88639889bc4685afe7a751944c829f411a78a2631584099018a246bdf5bcdf7378ccef0e4a34c9208f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9604fd29e55593c86e9edc3a40663bf9ddc287edf977ae01555ee307b4ea4812bf4950f020cadacaf7294108d67d0aa9f16723a97d00a005e81dcc14737303a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f15bbf2f03952802551f0c0a8a0840da967aa48a105ecbf97cace01d5d6c6c602ba1e25cc370a23a70b47724a6d58834ca5378c8edefde3fbcfdf355c9d02d5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1b025f421f0cbd530e7c87ec1508c5a0b305f214e11e659c66c98e117af0386310c177771751746811bc0d567cd2adc04ecedb88dd15961015843c87df8c806b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73bca36d845a050352c46560fe1ba2460a5c6a362cd0a6f18316827e6e0b35c382044a23266eba4c03ff984af2654dcbcb151026e6becc3ff3411fccba8919d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12ff3f0f90bdf2a96db13b4aee3848fc29e1f8e68498d69d002504991de28387fe127e3a6ff374e780e5cc2a2fbbd1b86acc4b6945d5c57f474a86eba4a62e82": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf92224f7e21728485703fcae7d47a7bcc00b9cbbb5246057c1eff1ba5f4928538bc48975fe2e949cd3ee501308804186137ec16d2fe57536bea1d854c5eabee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "473e453b74fd315a528026fec5f4c4128b9fc8704c691e4c507361f91cb01edade0e5e755fd5a09f742e007740903a229052dccc5b145e436d8f5cfc982581ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6acccaa23b403ed5f2d20d22d0483e37f1ae638ebb6a61b993d4b83cadd3b20a9b70f2b00dfc2bc6e98b12c8b40d8fb365d9acd35f99cb3baf962bd2695684f5": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cffbb099638c976ed945790d4b1ab75c8b3a2b63ac9282dd72a769f4ff7635ecffb9f8b2321174e3872a969977bf7ab96a93cd00e16bd7124a8935c0e0993e12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "458cfe2eeadbcbd0e7406baa8226cb5cf0270836dd776824586cbfff0ba75444c5f26a15fece8cee730b6cc3f7a4c0304d28a4c18bee123482dfacc039bc4f1a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "590f5be92eb758681d38c05d55abe7ffd0c264214b0ab859627c7531db76cce60e92d78a8e1befa0019a0fcbddf406a14f955c31eb62ba13e021684ec2663b97": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b913559261d52d8d75f1e489e9b048c4d5cbae2c0161c93519ed3e89089456af8342849fe385ea0dc37553c7d345de20fa634fc0a1f49b7c2aab6f073992e9c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7af814a3c14b64a627cea7d5d47c6b95a493ff864c1d5f212d753afce8c65a154241d5099ba464e763afd85c5ba41f4991de6cc8a9287013163ddc1c537e8f85": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e6c3465013e79bfffc5c49a60e8b8522cecef302d3fee3ba2160d720eb9dc1e1f6c0afe130ac89e71eeec0f8e8194e0b1e2802eec12d271155fe58019ad41c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "58e967fb9bf0884cdc9edde3d7bf62fbdc04dd9da44a18f2f69b4df5f7adb9ae73a1471536436371d3951c9a5e789e491cc2fee4deff5f9008a9a6d1d6572dce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5a3ba7a5430a6a0016160be2559f0b75f027d39c8a7ae3b943c00c5b3431c5d17f3a24f9b4592bac0e684e703a3e0fb0b71fed7a8d4b5a065ffdffd86655ffaa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "453c04614e68bf5a2bed2f6dea4f14fad84c0780bff5bc58d50a1c3af8c271a4b2934e6012855ca37fa7651152535fc839011838526096357b7d71d2859ad8c1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "830c1fb45ffa72eae18967232632d3d7b686a1eacff389d02e90070bab7c08cfd0b8266c826a116dcaca25e80876a22c164091767a32df9bf930bd3d137e6053": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5a6a7e6c7bf247c1dc2bddfe383b9eec0a588d612243e1ffd552329f5797c80c24dcdd2648d25ca4902b2c6c1fe69a86474643f44d5ecd7badba278e7657f2be": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1005b57f519a61a630c52e7188284f51b246901953960ca53cb068b8da81a201e22ad2d69fb8f0c6c067ba1ff0d79edfcf32e1b3e9f09d2ac3e0d585ad8af368": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c6b77a2bb2b8e0637c86d6c418df081da84ca0fc822ee774fb7228b77452fd6b68481614ffb449e71e576cb17131de4517a225f2b5339476ab341bb3e8ed1c20": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fc8517523e35e900dfb9b796c232970f41224c321d63191f842a045d9fc3159853d1e41cfa27ebd4ac4d95cd8249425c228e0b3997308ac9c4bb9a177da7857b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "15bb0a9b54bd2ff1d836cc6e2a5e67dd6078a287ec8f3914019ae2dda8007db1779b79904bd0c0e0dae978e982ae64e9d4810809512fc0ab2a3c70213fea3757": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "db881eee51149bd070ae8ded32ea187d5bb86b8c104ea624cefbedc07b90ac72b0a70c6580c78de5ed3aaaaa3a1030d91b3728ae6ece6538ec48f9fb53b076b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3886f16f5c66a251d2de3c43b8dc7a465017ecbabf26738b3443e7686729af0d93e4f7f6c3ccac27ee473ed59e2a01519c901771880b4cd1af462c034f0c70fd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fd6cbea9404b36aa6f379febdd3c4d604f6bc4196772c99182599989f59e2704b369cacd9395648ca7b77f585b30fea19787dd6df5b312fd6932ae3f6cb7a4fa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e1d981c2fde5fb79e8ea947cbca0b4c81e17afb4c1c50ee472eb340a907d47ac9ac4f9253d341268e243af1462980e781fc2270fd5dd121f0523b7eff161fdf4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7134a575253f60082c0165d417fa8fb2d8e5fe4d04a7b66dbdff28dac63b5878ce55fa91d3e5029ebba33b1e143ed50ef05c4925a4621b656aeee701b25760d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6998db06ea75019d254361f106898caad1339a7d37b8d7974e929b8c694524573040d152e25b0d37645a9d806437a51a1d1d268802ec74afbd2a35e2dbc82e79": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c1ac9f345e047292207ffe8457f518a80a9c6c4d7165b1eeffd532a73c6468573ca76430c6b96a4edb97018741c391162e212c1fe0aec04b67548604f4f46b2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "db8364285268213ba71c0fa3d4e2dc694e035a5ff1fb5cda2da9584756d611ed6a323ff5ec31dc8684cf95915470e4675177fbc6a2ee28820ae440de5c734bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aadb58bb67a6152a831a3fe7a99d188c19a2ed284a95c6fc91f32c31c85d2846634f54f9b962cf48f6e07a46179f5290169dd6517943fe3a33b36f623651b15f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aabb99c7881e18770cd0c8563ee3b508f1f43694411e79542ef81738724eef30732857246fc128f3ba46a20473d7830270000290624da57ab3c4f99983b2e03e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "02c7135bd4574bad743cea5c7049799182ccbcdc52a9aacd106b8dda30de32c375eeaa8f04e86cd034aca441d429ee7bc692c479076a29d71b0cc90adbc4241b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d59c5d546083168128662facfb1d994bc8e2dec7f189d290a5e0dbfc54e392f4fedd63a16f1dadf0712cb801d4ccf312134a4be0459357578921c4fccd920dc3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ad546dcec41867d73a85a8af73c1b9dfa24d33aac9c9c7f046011786ab2d61bcf732bc5f08d349df9f0328499798183b0984edddc5c352d15f1bf396ad26ffff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d21b42606e1b33b67bd6724b25bc4a416c1cb424de045a5dac941163f478e3ec5bfdcc7881a7f83e63c845c6ce8a37cac0cb170a00ee95be5a1f2ffeb1f8772e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9ab01d18d9ef315fd6349a4d3e0e339b0ced6786953bfe1f784c560732a162bc54e196bb5f6066a910f9274591e3f666cbccda1daf4459010d08da2477d9e1b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d00eefe299ca6c20fd87dc6c2f56e784a92207bd1e6af1c47f40bca8e77becf6bea1380387132fbae2f68ab6a40529574a9576056c65c9bf003f4e3f2ff66f7b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c24717f12986554742149cacdc180668236348db277562fed7e6f2c7351aa22424680306d93432c40d47e5cc1dd730ccbac3725bd7467d163c27dcab7a401f8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "33f4c5be69306db2e01e7ff9f1b3d3ea3ca9d265fb69d3fdc14881526916e169d396eee59428dcbea484215bcefc2e8c24979a46a8f4840b3b4fe86ad54c1c1e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aa65db77187250cdf548c16c5ff020724152ce9ebc62a3e465b21bba45dda3b044cc87023a62d9dbcaa261fcef4e95831578848869b0868f4300255adf6d2979": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a71fbad16c8913af1b4b9a79fe06e39aaf0631439ff41338a0a98a19193c4b463da2bd72a7d453e204a345dae3f10028f8c3f9a94a3c95a4950667aa81c10ca7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "65dade6591384b04951252b94441c14b98d5fb357a3ddfe88204e7386f0857b9781ecce296edd6a0ff71ef997c9d6492dca8ce18532c935e049dbbb863c947c5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32277f4eb03e76dfcec7c36a963c4ba23ba9b56f41cbca47778f2f2c545d83fc48b4d8f270cb138675d5425e536e2f6bd554723c7f8e1543f5e0c4fdc9831758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae9d8387176ddea111c01fbbcef95b80c33425bc8d10fe4466b074d3424b4c6e0c103c3ada7bfc7035bbdd06bf376f4934cac24dd576ac1544fa9826a5caa9d7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "569eed1456c018547afe04bea4b9c1b4b831063fbf7f01bc2e95b28554ca699432e79500e4bebf1d3b0b0de0639a923b9dae716ce8d280e99bb2dce1a7b47867": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f14ca132129407e66421d3c0e9640f93ab40fcc4b17f2e32a8caaa54d7d1ad63e2375d167fb2238dc6ae9e8e521dc1178c67571a222da2d5a53cc110596b280d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "70a5fc47fa8c11a2342db76015f70f9b74d6b7ca13fdf8c5ebcc1ddcf7ab9899d340f691eceffbfde4112d1815f94c35f0f5227ba227e03e7abcb0bf131b3f4f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "89c83550df1d0559fff7eca2d5678bd2ee947324cff94d9de9193b276d431176ec5063fa5dca842c2f8ef32fb44a7ec60da6d77c6defc8e7daaa70dccbf70de3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27bc684b8e2ee4793ba4464c86c391185ae4836e84c9be201e6b0320b3561ae0158fe2cc7312bebf878730628fc639f4170806ea5c2a14395d7aa777fed54a40": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6c63a717c2eae6541c296a162c2eab21f7781ddb83568053943f0177f7fc337afd2a975373dd6afb439d934847177e9e34a651767fa18e8ba983ab1d7ab792ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bfd5e8817543d145d47bfc44c769d063d0b9f568e28ad69f2ea891c2a40a90041a61cfeb7d67b80cfef32dde8a061683cb26898b6ebc49d44fc65b881e6819cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "36bd043851b893b12c0db0b73d23f8fa8d8c8d940d7a5690cc9744853fdfda9bb1d1d97120798921cad47039fd32da0c097208cc6553db7ccb04d5a8fe417eab": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96d31cc0d9178ca5b14dd6c114d97c814540d950d7efdd3780bae23698b57dd4c246a70d6a6ac69bbdd245a07d61cc210a1293844ffc7190fe9ff4e312e6e6bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "debab7b6cc9d0b2f97299a7bf11a3fb82dc82c1323c525f9be9e141f28929fb668e1b46a4221ed59a2edcd26bd215ee26113328a277136fa765334ea2776e217": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "062ab2152e724dbc7f7a6f98c0e69af1c4618671192bea0fa86b14c93525f8fc0444da34c28368e6f987bf7d1a0822d9b68f7084b7d1650167d2a3ec5d3724e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa08a25d721203b3f0ce709563ef0bf07a7ad312e1e482f568277b7b27101e2837d63241afc68e439de3860854ae3fe95aaaf24b8a4b40d48fac4ae5eb778d64": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2f8f48eb1c29858221e17d86274a665eb7ecccaaa9b3fdcf0ff6785de8ac62c3ecb6c048a590647fb878da87f550231f24e625a0f2a3b9e44b450b1443fc2930": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac3d8fb909aaf9c59464cac15db964ca67c63dd1fc507aa657b736f0daeb08f3c83b69ea632eb5175b22b66da8b7e77c311269e41d45df69a3e6da9d24e3ab19": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6ad6e6e41f2287d21e8d77f2ae792e97e3ce529b9a8935b43c51b8146059cf7e6e9116d3a138e16bf442e41bacea4ea976a8f40f1d1bffede2c6365c739efb5a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b6f33343c809333ee73d05ce2211569a3754c6e0244e578fe6dc3a5bd823241db9652655df9046f05c7d35b900c7e45d88632c827e8c3b7b834bcf912d7a2bce": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "155f08cecfdf3175590a2a21e06a403bdb98b32598e99bc9281972c62a98b5cd80b8c8547c3f6ebf560c57c40e9803da137ceda56bc7213af65f56a91937e923": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f2bada4c3df8136ac0a8b7165fa0cfc44318050da5eaf5b22a21c8a38a3cc3851fdc3c0364d2a4dd85fd933b1297992ad6bce1032d39a08819f88e9ddb7fb6a6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e395dd61f8d49a3acc99b77ce837bca6d876dcc566426196e684ba39d1bcfcf616f1dd4e47318802c5ff95235c8d85bf945693b216255686ec30fd4b3e563bbf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b40097cb9eca79d394816369d281c33519833b66e8637efc7b5c2d806ebb888385de893d141267aaab808781b6c0d33c104b96d6d90311c747962c5b155b3fec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "762460eca6b0177994a812332bbc5e5224a9bcb0616411e40806fb37fd4b06f423fd2c8bd0734485a9bd059facc76b3fa542278bcb91769082214958513af010": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ab0085b50373a3b6568e0f83f763a923f69704e6387c627ae00c62f7c81a4bf0900ae262e69c4f06615219f587322f044e967b7bd93e0880b4e41ae0698d0f30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2369a5ff7c0fdc5e6c1a1bd5f42bcad6ceac5cc564651e7bd855a58186468ea1fb0beb0e85b238d8436f4fdaebdf54a21e91a38116cb023a7ebf661d2531eb61": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "21a08424a50e89cde3b12b896467bf1cfaaee6f32dff5143f3fc508c86d9c840639b550a4a005b676fdbc47ac09b958a9d45bcc427916fb86abd01190881f59d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "553ceb3b5f4055e81bc97d7ce0f7fe72bdcbcce56707277b46b3ff9ee2cd78488531bd5f90e621bbfdc3251d8f15facaa22a673e35156a80811b27a6ffb5c9ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9f6fd1bf814bf78db36452a956fcea980019af0836a5f8595f38c0da6b39577bfaeee2af57e1a1fef2fe869636377b495c6db5f93746bf948de20d9889a41297": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0c4c71e39f18f592d590c4f1d127c38c2e8bec19298fb2485553918fdb36c49b5bef35aced2b36b4d989a448aa1d70592ed8ad7df6f7f3823aa2dc18a8074ecd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cac6444713b4be7f9c60cbfcd028f609dc8e7fbd4313a509763fa8189d95e7cb5cc40cc54f6be10889c74558c447908110e29b99f9cdc9e7948de630f67cfbf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb6945c4699c8b50e343178e171cfb1db92b7f67367c88b40fa3938f64403dda357b70ddfeee397bd41de2858f00b29489707f74719a6a07a092af2b810bddf6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d95cb60428fae95821e67441e9eda1bcb5ced1e1953c0bb0d327b2d347ae3e5df825a741a36bed5f306de9addf6bab5e0af50d7753466600f9956b426af38318": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf53235b697210647048ebbb91a441a2ab2d38eed78a37e9b818dc02287c2a7cce79830e1abf9a2ca6800e5ad68f6cfad9d4ebbd90a0147e36f536cbcad164d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "77d817e2ec74d018ae7393950a420ce3394293f4074c4181af9e414cbffd064059ecf05918b5f757b33be97520b40ae69320831c88071acd2a031597b98bd30c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "96b0088acfd24dc20c5952b926ab1ec48ee154b9e08d715a40ca02154ae8ff642defac1307cc3592ee6975b1714f47b300f887138d77a48a132eff0e7da05008": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "775747b3d32fc5bd1c948a0095c3bf97ff3a5a4bdb65052ad2cc733ee05e28d33de4cc30a1c6b77377977bc93fb4f1d63846ce19cc5517bac2d6a51e4a8789c0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b2c3ca35ad9d1e8caac63bc2026750f22ec10af97c76c506fedaada103391c15db847a597a3f128ea5b9c05b6dfd6c9973b3133e33cd31d9f8aa1d4d5fea23cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4746b29ed9965d61d44f98e957d9ab5145e16a4a5f8cc12def57e47154bd37864ddceb688427072cd791d92185b8b5661084e796e5e185182759062d5ff44899": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "810d9902813fcdc05bbd5316a3b20892f3b941e0880df4e67547706269acc8a1fd511d2b9b4e677121d702b4b8f46cbda359859b123ba7d8d03ec0536b098c7f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "398f9142dba738af03496863e624f49b92d2402fa6dd8261b4eb440b5a1b03b5b4defb5ea642a51bf52950db514aabefa7c00ae9e23ccbe1cf33698fcb25382b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "922c2c984fe7ec0054d47ccf75b9e7e1d378c2447df48566d84e995e5df23eb5a18d6a35ac2f4d2930cae95c3d4342e830a87eefbcdea43d40e0ad71beaef4b1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5059dcdd370006356f177c093f2d537ecd338c463f04f28c2fd7b11a2035cbec809da8eba43abd7008c1b87fa35686cbec181084e6a2c80abcfcc263b92913cb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "836260f13d4a5fba3f2ff6953ccfac8f9531314248d2c9ef6a96e1edc3a0b64dea2f4431564fb783847f297daa87eb490610109ed01004d36141047e2c406994": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f9a450e2d31300e51afdaa5e9a84d8943ee38c11ceef2799fd6b2f1094a571a6a2deb29a669163e78eeac52f01dfeb6e67f047e98e664c3b67513e22bbfb9653": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "98826483f3722a122d47f7ac3763afba4636dd83641f253bc995cf559a4191891eef955c0eb3dff54362c87331f5664039bec1780ff31be9f1cc6b60653db383": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "777a58f2da25e27b5c3d4db6d35b6dc2faab61e1dd405292c86d79fed28c24d50639b2af4133679126bcee445fe438ad6dc1f242316e5f5ad7b2e41896b0a6e2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2da670e3ffc0145af8c6ac3345214246197921e8184bb654be9709d5aa05575b3026ecf1b7bfa7ab19f405ece8609944fc9c9e29c45bd1c481ad029063467165": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cccdda395b0d9850b99c2d738ae533b88d96546368323ed331d9d431762525097ecc827962795bd55ad5170f09957494f53a2fe72317eb20f037ef5b61dfade3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "35b8b3036cf5fc3695078e9021cf1857ac1589ac03e0867141259849fa45c0e622a0ba50f6999cae98de4fb297b650d928fa07065859870dec9d048d2088d168": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4bbec59f5677e7a9622a6a2eae696a448330da121dc7f906e638bc9bf1af137479e0e17f5bb99566d21bd180a6bc448824e35a9fe8cbb745dd6769a7d0d16e6c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9caaec6774d71b5cbfaa42e6168871bdaf6cb55f0d2d58c140a7d18965a1dd9c3a19cfb013334b31c25089a0ffba26821ad2644cc5e12d154fd55f6804811017": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f630b5d2af2272d27d1814da01b75574f87171f9f0a6f2d3fb5f67fde5f1002ad4354ca0e97e54615c7259d3c1c331404d9d7fea1a40df1c8bea9178aa68d90c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "18244106b9d159ddfce47904b47578630906b1a4bfda1d11fbef48f7ac2156065a9133dd2c94762d87a57b214c6bda890c5f9cd5bdbb2cca4db3c135e385f67a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5284598183cee11372f3a1adfa937bc7a6adce597a5139168b1cb8042fb9127267f65703310fe2a37a1c48a78b6a27518c845274458ecaa6e16e707c2bde23ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "89ed2e02d6a1b7499a3f0a59f51cfea3ebbd07a97c82b0d5fba0a4c3a7e28f8435bb129cbc222f107d671188e40e5a88d0fb000a7106feddcc2d6496f7b1859f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0d3d4791a837606c1d9b9dcf1daeee5353c708eedd864e795fd140860ac35b653a510b12f6494514987a5180e29480c3631d3abb1c4e8348af55eb8a6d880ae9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "29b44fa836aabe9894773cc43b6561c9b6bdad3b1d1bddcfeba2a5d43b65672248f38ef5349d49c83a5c9e96d7411ca740dd720bd86b43c0b341440a9e50982d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e4fada7b89a6fe67942f6e22efe3c0780ef238172e36d7e898d96faf8c2012addd74e828f94602b60ab3e89b0b6282c9a9fa6eadf00537cc043415c4c1e253ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "844a6db30ac812a4ea72fe570631d159ab88d3ffb7b15089dae44d11656004a1bacfebdaa12a5ced2ce58823d8ce1629fd053b84d385ab1128000c5f023fc1d0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1fea11e4002b8906e6b895ae5b093161f1fc841c4ab8021fea65fb0abee32d16987c1bcbba4523595da9f153363beafdcab8400dd39ff39206ead55fa1e41bc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e10ff3341f1bd8e110044a7b557e58c5acd97ef5a1055aaa24234a3752818bb7dc7fbd696a1dd071b1fbd20517ff86f126131e017fc87fc14359adaaa5802e3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ea859e38f157319930f3bef1f9b7674babaff64bd4c8428e991c014f395d3b922885344573e56e1e7cef9da2e1aa8de5bf304600d12c387bc48282ce36619fd6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "873bad8122c84c45e76b0f25c34fb4ffe59e6c70f16d8b8c52877a277ad6facd11f444c02c4ee7925b1f767fea498a69a25288f22bc54dbde60e07d609766c78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "222e316953c9e6353e778ac10f0cfe99a08df37ef377ad3f205b2fa84cc8f852efba446ac9bd2caf59596bc30a2e1d374bf413962edee29e3b37f53534e1b8aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32e8e2f1d82ac61d3a9231ce3553cb9da46dce85974921e7fb9027aaecdeb455d3db4e0757d3f2903a625c28ef040cb45ee6c61a5a1952b26cc9b63ef37dc15c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d22424cee655249fc81566012499b15abd5788df76aa4ca55dbc69c7e93d2ca85e5e1e7189a2eeff8c626da244b0c7f5ff60b6fa9dfb8773a10de5ebfce813d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac3d2c050f024aae1b7569fba174c4eae57536bc5fbba1236ca558727724d25a6831167a1af6053d385251e9d3c3104243672ab6d9acfa96c3f24edd86456978": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4a3628ffc4edd2a64b5ec0e7878f6f4162b99076c722e590dddee1924ffebdbbb63d2b10bf701ffc2885a86cc9fd66622288f39ca439c90ac5aeff793e7ad09b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55d0a5ab70e05e8f12e573f3c35facd342c5456c8c792d59b962e767e7afe0115dfff2952cb0080aa1f38498a6852033c88fbcb2bdfab219f477c67b13c7e412": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "782fdcaf9aaad28fd572e1d70e116f0fef5a1b3f8550aba80c83b1f0ad77c5204a9eff5f3594dbcc1903fb37b47c2a04d0ad29d994e5eedab0b59a66859c0944": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b5bccd5e107993c1d646029090e18ea11f833c72e30eff8289a13b7557454deed09d45d5ea31715dcfde2b9daa2debbf7cf233abe7283e62a044bda3bdc3923b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "92476c2d8c6d484bc67dea7b353d39edf80d12aa06522c70d033db3f15ba46fe008948b9d4d0e98a35526ffad17830dec08657e229a59e2f5cc0d4cc69cef612": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d156add6f77e17db9b1966604284787b5f47b3c3ab0690ca51bd7f9847ac2a8542c38f368576c36abbc2b1d7f67de059837410c30dee6155ccb58784413e9a55": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d779846e8b138759ede809f39f0acac203f491819644e6a9f7046ecd6f14e498145e094565e3213003a177d3561360a3c2bf42549015f5ab94fad84c6b6f9a8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7a739860532fdbdca3f22909f5680ff34152d60c31a2d7dad7a6b6f566867138767e901e99ff59a6a249a28caec159b56bd5a1b465dc4e27962d771f3c315bb1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dbd4cf285d270c4b16e06a93abfc0562ef612bbd3050d160f5bdf9e7aa67b469a86903a35ac942ffe3e1e630d7d642d606d952ba079af2c296f702ba08ab880e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d5cb2f9fc0c212fe73e2cf551b44d2f595d22586ba6c49b70a125c19759abb911457fabb71fd5a538c77427f9d9025fb771cebf919c21906a5b8647426f03ff7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "906ac5e2091b7661e081233ced1dbeeeac4c13034aaaf9d9c6d5b4a3c50206734493a64f9ca34ec7b93506455a7b23e89c0dcf38ef63aa998926efb43ab52d22": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c85fa4895fa8448ade159b02e90d83fe4cea12955c38f0ed167bf5b434b4dffe73b6c4301a6fd6129a4135281c569d2b2d41e23c53419c26d0afbf7c64fcb271": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0e5f103d06a856dd53c3f83aa5191f6e589738596b367d024eacba1f5a31fae184af98b9fc265ff179d4b18a782b9a1f3eb452b186eb6cefe19453e2eff88602": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d07ede850cca297d8d40f7ca7c21c3dc6c57f1e7a0f37f1d61bc9251a373cfe8e23032147dc4575c4a97addb043802fcdd6b8a1a5a60c2bc88e90377bc9b2409": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf51cb7a11156dd05e949b6661107b681689289da5498924028738dc08da0e014660a3339dd94a373228588e0196782d6abef06a2fdf98b36c2e33c1bca752af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1e086cbc9fe403b65451f7eaed36a842008092110cb2bdf9ba2c910128616818154bccc245aafeededd84dabd6b8bd40c605444dfc359a24fdb490976fd6443a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "77a402403912ff52446db8f553d94a9c452255548ca579b7e8ef678f20d5ec0b08eb983145ad2072974ce4c66f0983ba9b94f9d7da65a585d2331fc305a6e585": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c5bf838032cff4148adae4f31258eddf58c30837d2037b2e139f947b4891336d1f6f97ae0cc5262c9ec6b5619dd60b726a284942f44ce3b3fee3dc1c1052dbd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f95a292dbaf7d04f92f09d3254b000f80ee69ab60f579e50b52f7c8b8b7a9448cdbc35d40486e5ce1f110f9bbd21e89a15ca4ab506e5272eca06dcc53a017e91": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "843525e8a43f43a95c66d43daf2ce31cc444791fb1dfe40eb4cf9c430a1b9ba606bb875a803910495e387ab95184057fa6ededaa2437a33f6cbb4257f44e880f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "193a36c6b2eaf268dc6988daaa2d43acf856339d6f1cbfc415968d6bb50a69d38f6476c93d872c1e4106b7cd7c4588b9bfe76b9aaec67ef0d342ecc855d1961b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "935691b47a70ef39f6aca6f09aca4963d82c2a9744dca87eacbe74517244d9a0a10fba00a40305fb0a6582cdc0c4318522ecd3cacb4e730d693ba9b4178089bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "802429937373f966927d19c75556f332136e57ca94a60ba47e0ebb892881d5924eb04c2bac8786473faeed0a6f204cd30d1c9ef642d5a4d784aa27b8c4cb67f1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "32e416e55cf1dd2f0a1d3ef886a2292685f24fdf8d3c92dae832ab1f15978852d6bd25cfaeb9cd0111a0852bba97901640c4c283326ffb1d543890e5f980d3a2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "03b2479210c31b8e646b5c440339e279174af0f7d114644f51f85e1e33dc603f55ffa70c128e6e6bc6af2e071199ec7db4877db537fc23267a0721545835949a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ef9790f0879e3531593ef7ce115ebac92bac7c4692fb72b17920efd0257425f44410d84ec50e7e4df2aebc9334f565a4dbdb3ae516add1b4a741f568a1fa1e37": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "43cd8b2c03e172bff0b6e960728053b0493726ff618d16c61c206734e738a624817514baa800edb75c0a16d08e7c6b4aedb64c6a96b391fd0cc914547ee6675b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c53e8fef5ee64eb4836b0e7e3f3b7aad09e39ec4ef3c2ae7ec57854d87cba084dbb38bd25d92d97ceba9d584e87f2735360e1f3cbf391ab0b95d13e755b0f88": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ba944c7bf730f575fc98c75e709c46b762f3b0e6f7f1a2542719b7a0165518c5a5cad8279ab312d01fff08ac0d4ca74ea1ebd3ce6b36cc5111e8e13ff61e176d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1cdbffcec86419318f45aaad7904b9afd167f6a03e57cbfd35498b03abbfc33a30b4df52afbf89b75cb2b27c600c88f08442f61c214270eaa2bfe553c3d097fe": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c225d58e645f5d455c832a655780dfdf0daabc2d4e41454b88a7dc78ec578d924c48577e89ea82a682dcb93ca9698e5846f340b0b9080f3f900aac5278518fc6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c0a38374241c3a71e1d8f7746bf8562e2b129b6a5b46fd533d0800f2a13d74b4a7b18ecbe4e83993c26c02efcfb6742570ecc6ea59181cd19a5fa21a7bbde06e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "171c6f5f641768df9516ab5fc8a76460cef538883f5b79c063e87da5c0fdff657b16e0fb210ea23de01f4674419598a298e8903c28ccca7de2c3c48089c7f2aa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b3eeb002a2450efd632f5fc60028b227f297fe55144b349e724b74ff813775f07fbda7532fbd46aa6176b84359347f03bebd36fec8fa8d0c95d4c3b37eea3da9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "91025839edb9abda690961fc9ad4955235df9a752396fb708d5baf8e0cc8157ad98252318fbb5ba4ac5b32c00b1f101d971e94021deb59222422d11dd253c59c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "12c3c2d6ce2554c2ee8760a650b1b8b17f773c39e636a3b3969c7ae65724ef33edbd6fc5ffb165daaf29c724cbac90da62bdc1bdb7dbff57f377d1fbfa9f1186": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fa563cca944a0216c8431f50af3cd10a12cecd7bc87963d8293cc17b22f35943c9ddba25ba15faadc2768df6e1a0a17831d34da587346cb9c3e472b22db1931a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bd764d17f9c5642900c5e7cbc28709f7b2b70adccb0200bd27ccfcc7488ee153615be53364f602535659ded0750cf55b4ed8591f9a24e6ea321d39246dd1a5bc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a7238cfd12d24b8bfc96e8e50929f1268d6aede5fa2a377b5ac113c6d9f124331120fff92b14e03bf5ed5faad176d90d2123a057c0b416ad9303782364f326a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "373ca776a60c32970d2f3bf1c0e66c250644ca231272765bb10efabcb51eb4b780b4606ab2d33deffd7ee31445907b6447d583d3f3ac97e33ea27f4d1ced1cff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06f39b0f6d2cbd4cdb600fb5d8ccc491c75dde2291f4e8981c78d192391445bcba5bcf3eb484a4737df3a04ad25a94672e8e4a24f494111c863cf50ed2543343": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3ed86b84f8ad78014addefed6939af0f5136b630498dfc660bea5eeaf424c00a30049f96e54d9490d918e06722a8f4001067024fa5d04d07a601b85f5af8a12": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2be39289c6d04ae74a937b84a0309f60f923839e1a6ca0c516e3f73f9decaf37981c578b65d74f00df627023de58fd3aa8bc4d0a4c64eb8e1d7c91c8599920d6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95bcb73e328e85599421e923282ef3f3fb7a9924f324a256ca17a0e6b19623ebaa2f075394d93dd5627b5bcb9f5399c63db3c434b362b0db551b36dc68dff8af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "319b639c59f2c9a6b9bb6ebef481dcde7e19becde7903bbe004cebc9635b5978f3bdb048bc8c60fb85647f542af8b247c26cbc5310ee7ca39cd3bada8aa3ea8b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9c75c30697115e141677e3f597d7ea539424121b7d8513378880e6d22818a244fce7023abbdcadad4ffca24d673385187eda891544495fdcecf6c701363b396f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "419f1951238f325f78c46ac87b615fe45cfc7f7ef82690abf42ef8925c52e44c8f50cb4a6c9971846134d8d96264e52590079a4646db13eb58a49ce56e9a8781": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "19fadc3130c851463f504609ee074ddf7613ed4231a045c059d3e17427eb8585df1a02cb688be4a19fa43ab0e0332f6994d02442e9f1cb659b9d9f21da9c8bf1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1d801fc1ec58ca71b5816c5f1252a34ab1ea7b08d4038f7a3286fd49b8582ef9a0d45a1d7f03168948465b349a7e486e61748f596cf751262c9549e36b39714e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fb7a75b757d4a011d2da83f80be6baa530058778ae0654885e83df7762ed99928ee53384cf1d7670a6726f6a5fabcc39036537d25297f8f2e266fa7592c4c0f2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "60c50b682df47893d0b4f4363d56a57045dd170843e2455d3289892ec3021eebde1c7e510e1e123161b69359dba5d6dc5504819f141cddead8b685c0d05c05b5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f69820440f8278bb91881b123769b0d631b565b841afdb3cf33e24af4ce9924bd5e9f0f65308c18a0b52596324b9327fa357b48d7c937d6ddefe3a9a4040f1b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "00c924c6f2d5273e8a691d95c5a041705d9b9a1f9c6ddf9e20c142bf9c8fc6403ad3ab83f0021944f8c68c3ef2bca23b4da8efed828d322d1bf72fb394dd783e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "adca17d8c2ae58ef3c1a5b88477e49ccc5b77f40ff72e6ba08a48a9bfe7ece30c683b6fe40c4f4ff0f106f5cd5f7bccc137cbe5bb36f4cca31cb06a0c37dd7d1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3610963ff7f726d802c11d99c8cd54183a7e07743489cd8f8527eeb3fec75cc6270939fb8fb6d90bee90b665161d201f4acc5533e62e09f35309b51ffab017fc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "13513de36fee173592fa10d1999ca0d09d19a33f28d731a815e179539d9da91e6a1fb4065db8c64248e3665d1c3103fef96952986e5020c35fced0a2cc5d3ddc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d83c99d79926d9c3f53d82c9b7fc2981885dd6af4be0e1db8cd560178ab3bdadd0832f7af0db5e77e6d9508bfc304b88d0f37789c96d5be9ba04bf4f2d048013": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dc4dc85dca94f32920b43f3372125dfb0ebc481e8eb66c483857991d3c76d6e38f655bc1b672a3a9f0e8671ae1bc82edaf839c9792edd0789c5d0b29d3f25697": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a538b7eb64492c385e85928eea3e7e13bd6298eca05ae30daa15bf426f0dd71f2285e3cd282a1de8ae31ae41db507c585845cc734ee85f265fe69721cc689156": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3f7307ffa135ef00a2cadb91aa56753329e1610c95314195fcdfb756fb764e0be7ba1d2c15e4bdd301f47eedf01d78081da4660102accd50e979a525ae531ce1": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ae7d1399975a79d8c4ef7a28134b201e5502586f457641a42e6bf03ebb2bddfea2e2f4c2579bf703dbb5b4c320028b00657bddcde74b78de9365466bedbaff47": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "682953d133c9737b1e671269b8f15f3581acf62b8a5091de8a4f85b9f36972faa6c79e318551e64cad32c405fadb4b51da4c8b8357c61132501c6b62fece9de6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d8089aa960b3a3328f5dd409531bb1df087da8ab5b8dee7ffffc2129c6133993e87961de7cc2c0dbbf74b1a0276bf6f04c50d9acb2f435ec59d041b865bd122d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3d355f1f53c05582d82d81dfe078c8bd86725a215a0b147b4e0274db9aef1a99beeba984fb8bbb05bca1b9797298ab9da408d4a6e60076c348638ce282dc3660": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "fe7697125be297685df4ea834757ddc0dd927a3480917c5f8c89ebd1d9d257fc39cc82b2705bd80602b7188aefc21ecd602dfe8cccd18a49bc5802bce3dc883a": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "55f582f3dc0c8284c97b30332017bdc65e4cce963bf3d0c8a4a8b4b181799111332705695fa4a06fe2b7c4dcec5e5db13fb5f63410cd54ba585eab8e44854891": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b2130985b1ca82ed55b20c1e572403a801d5e6a07d0f7a7f8ac9a3760c7e8a82792072befbaf4606ecb4538d1854d0e5d25feeaccb0ce8f6b310750fc171b1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e718ed8d6abcaeefeaaf35c12a7ce511707486562207cd440bdf97e99fc0e742b74599cf12d6b063264f234b2e1122f5ef0a546829826cce23bbbb9069ae3b49": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6c90b7896a6a1048ee20d061923630f5f9b3e679fb77a5722bfee45942982706497bd4d1d9a7c42b1fe28d2c5458fc6e56deeb1af77878f188e104357f047262": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "320c5ff0bfec8a156bc950cfbe22b94b868d52f4a3ad6ea986ec9de2b726fe332a0b7cb192839e468d58da716af805feeb24fdb96cce615da2c0c8c0afcb0354": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b2f47e46796f52779d66fdafc348d5e729668cfdbda76d819fb2fab826920fad631bbb94a698230f120acc27be7724fd8323639e42d1291f068c0b18b06bd76d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0f0c47377fda3efd71b35464b7eb95109d9d7dcec82fc7432260b48cdbbfe7b8865aefca4b516defe5043c88765e7de5adbded75d2c325f088afd4f93d5146c7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8ae1dc1563a89f766f6ae8219866a16ce7195af04cb7396ce031cc1ae17440fbef32180fe0534538acd00c2a0e14a6451d4afd45592589da0db061e92617b620": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb7da81c1d2c1683e28bfef10530c3b654005ece55b97a29edde7ff9eebf1c2ac72f5d959e56c0ee98e08b39b950ef5e75634f7dd9f134a492a6a8dbc4559279": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8d1e86f6b5c953ddfce74727a720076d814f9226a5077d0ac0c32437fd849a1fe041e867cd5575414fb006517901689408e85a2fb2d00b6adf58a5c61c31b6e0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7389044166ff6c57706b76f8487264e94aa6684713753a13426e336eb38b293826806ecf4a6082397e040492933bd5b153c88c4d421a5184f841b35872b78483": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "df3137e618f0b3c2b935ab5d74344c40a7e6bbbcf4f22496d10764fd03bc560b8457a26b7bc6f035f8704cbc5973cc662e0599300f170f37a21a94d78312ecf5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e089dce1cb7a584f8621fdff964c3315d000fc9daa183a4a2fc64efd00a47665d6e7828a17ca43ae7fc7d313cb8a277a6ef5dd47d9bdead5100815c33b95ff5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "98dd81fce93d3964420d0e3527dca338fae0250e10149e1414fd857a21d74d79575d7cae9a24ed9f973088438b7610e959824ca51b0e1c4f12623b37d2cedb05": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62e578d52c804d5d2436aeb8f13ab383ae54fcbb78306cc46a2a94af7e1b317d8817611d83eb01e19e8f950446b1fde6d61a244be2f8ab3ad609eafcb10c9680": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8fef4ab8274e73edebea339fe63286ba989a6213fb9381544866b9994d4a18553629d8d477d435eeae10d7b63d40cc351251beb79d06efe46587a9cb88cea2af": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7f3ffdea9a1e410c1b1d9e8cb6e2f5dfcc9d1ef1c1b38d5bb6626b7e52372f0631713dbc75c5e39ab811c2b092d614398a790946e7d85eb30caa5dcbfd4c3fe3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "061a81492aea44c02f9914538aca7adc01648e95658f171839ff031a790a1fc9a2ae76053489f069ce85a1e8b49cd4ef07e8202affc15d44293fb47e3659b3e4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "675cb27ecf487a18bbedd3bf0d68c38beef0df6d3fec1edf92d3448d8c2b96597438311658d1965e65aea8273f7baad2e4d9ab534d7f4d18c3e29d8cd99757a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d2b09b2a69862ab021abdfc4ddf2a96f2270d5044298bc3d0f487fe5835160570b011717dd905e78aa5109ff36cc89aa75c351d523e58462ef962d155c2a2589": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "330b65e4064b29d7c31dca09f62698fb81540f74f02d58bfd2ba97155f2a047da97f9a42a2282dddd41f62a5399dd5a366a48cdeae3ebd2262a64229823c312d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a0ca4cbcb30c542e29ae8dc8a7bfdeee8d710b5fb63f50bc22236f54e3ab1c93cd4cf35fe280a561baf5b0feb844d9ca7f4e3aa71b50032c1fa6cb48ed2c935b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b653aa85c08a81e3a8b253fcbba1f7765a6997c96e20acfc5b3dbbcb404f6f8c35e470267d39f99c5c291b1634f49ac991f381e4304997c1607616ef7ff11b34": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "717c176ef45882ca493d74fa23976eb1556119644e9c25c8718bbba12713f1812efda61e8f1e57ccecc19a00d5a1c17ac517e947c089cdbc3e06104c5284b881": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3ab8101686f3726ecac502137ccad95c433285cbe57c56966d96b284ab7b87bbba4c51e29565f6264c37f6af45f14a91b77341dd05862ce4bb1325624f0a6514": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f58bb03bc1e9c11bf5aeeab3b2cd0e87557980a306cdbef64ef9e5d2644107ac0b4ac0ba9e556e3ae1895c7834a57ae0a9d19d1d66c11c4e70c3c81b6ba4e194": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e237554e4d352fb86c397c9426990655d36dfd7f45ad773e086d633e36ff9b1eb6a55cbcad5a7a8362513263c935f8ad318b61fee3ea752fcc424902bea77980": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c523b961acf5084e88ca628f58f51c135811c41a1802a5f98f2c0ef89f5b6bf61a4fb2e1ec7f7f66696b20a51ba6ea639e76137f55da49cba1753db7877a54bf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7945a92d2128148bc9bc660c06b03e18aadc4cf961d0039ce7c796ba26dfe304b3aeeadce81c1e034dfb05c63cd0a508df857a2e09cff8326272d34148528c0c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "62638d8755bbd3568fc8ef8c21e5c196653e98c21a355fcf3195da0e3651ad620c9df4fcef0f1555a95adf031de7a466be064f9324bc8aa9de013d1d2fdab76b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a630ec5cd0bab0764d567c592c7b105828305c34ad3b8fe940379712e9234a20616d7098da48a6d782ae1fba3f57568950c5518002f5a8f469ee1594b05f6148": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "af75f3d8e176f9acb8eb08072022c44b6d592d6e40237a42dcf1e9f7068e248ebc088b151cf5c519451d42af82f28dfd7c81a7c6d709f499ac0bc92681ed66ef": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f01cc666e1c432cd38230e9d74b15633f599ac13bc959a5345cdd600d0d6f4f0d532f74e47a0c40580432cad3a258aa61df6b43e60b322e678134dbb0f756a32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a530d96a3c7c9526801d3c9312cb8103b330f67c58fbfc7cb23808b93aff378a391cf6a27341b1c53b72d03c322257dbe0dd51d8d0aa8200311cb4c6d92906b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "531f4838ccccdeafa0c98eee6e8e9075bde8dc1894c7f803878cf856adda6a31a978391868d1f84e35d27645c3d548e7cbe3fba0e8d91fdebfa59b915615a79d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ec211bcf1bffe068d042e9c481441f64cee03ef8070001c25a90ca6c0893a9482189955005093a43c07cc2f20aabe18810481fe5b9c764974fa54000ef3f6665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "309b469eb74e85cc58a50c92bce14707cbaeedafe87db618e6a875024074cb58ab1119c9d6c94a807a2537554479f01de0387062756f87bbab8efc7398827f35": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b8353ca928feb7199d084b8d497fa62a9381738de8c7e084b11711989276835ebebe529427ec89c23f2067505fae59a95b5b2e7e2dec2727704547e37981fbc8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "efd99f1de43c441811a87e7a24bbc595af458170bb0a69f0f26144bf3b1794e84f9c720712837e9914a4eef05d8e97a45b0902c2304e58166922307e249c4777": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "109b57766aafcbc1074c843b4e3dfef9eec0fe7a91f4dac373e1bf1a7ad4f2669973c0114ee8b367eb0a92bbb5ed66aeff32fe58f0466cd95c3cc6081a45db36": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b6aff81dac79cec35745c9b51289b00265c929e17cc31b5ac147a4b6efe74302f95abda8ba331cfd7418976380047aaa795ee94f9eeed9cf20be8a6141c95ccb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "95cdb3612c37f37f338bfd296e8a85ffaa054e6588d7bde9d5c0c4d64a5a3a4e95204630761ae571a2e4b92cb1c848b01ea590aee71bfc8e5ac9a7281bd1865a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "915c88a927c639623a1288b12430b17b4ddb159bb8e8b82b60cf1b7e3df0bdb7ac67e5546871360531f53aea6d640a651705aa248407a6443ff7566ed610b1e5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3da89c393b79d5d1b2f976073b06760352558138378441da361076ba3b2679acb2712aa97f6e1326d18b5a44d4933735437d1136944e975616b6990e69930ea0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e9e532c8df5beb3adb2130d07202e6f98509391e1f55b6c3f30866c1f598665523372e048df59a4e04a456fb3a120793f63286d48c52a0475c15c3acec205b62": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ca31755a2eee8f21e895a4b48076bde3ed27cda3134b799a01ee061fbc5dbfa5f0cde3753a4206e87fcdb3a8e4b73c479947518dacaa913daeca3cf0abf41e18": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53205636e143322ae2b7e4ff83317eccf24089f12e5a27967d0d40d25f55f3e4559cbad364495c87712f9d28bbbe28a6e0db373a84903613fd0000aa8e68e722": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "50f24c8545766e39e7c10c931ce4b01cc63a90595ec653dcbebf5077b3e62f585277d00b1ad99c74a2c656cfaeec855318b363dcaf1bee8d188f829aa5aeeb74": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a562b113f449520327a8f64647be83e879105522af101574637f35ba30da0021a0c10baa52c9fb367a695e1f3953d2a7621fc3110c5066788552c8205ee74ad": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "74a3024aef1382b8aee19727df430013bcdc33d3c4c14621650a57f1f5f9a4966c8fc8eb30713425e9cfa9e21ee4c1e9ac0d2f3399431f8c37b6251aac627d9f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3a53af4410cec68b7db8e16b26d2280992d179681b1b7d4ae0c3f3621ad372c71608098f1ebae638695bc11ddc7d88987d76ea5ac209cf999f5fe0aa360be910": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a54f6dcdd3922b5efa4d3b34fbec83062a7d586f3d18babe8f3e2bd090b97c99a5a1aa87af833e1476ad2514f595cbde1af1afe90ae7074096cc59006fe6b1d2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c8956cb95ff054df7d3674d5cc8a1ef3e6d0a6f4cc45e210d69e1e3bc3da46216d7b1e56bfc96197f26d9e2a2c0063b9bbdf337ebf48ff0e14b7e730879c359d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1c7a1ca97215648830e2fe68fb9e194ee6c33397385d0e8dcee3af55b2bc6fa456050c52ebe3746ef666f42ca1a048e62bcb1d2bb277e36b57d60fa8bc4f12e8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dd6d3670d656b53018a65bfbe9f6deec954077ad0810cc8a3eef78948dd5a8cd6fe48233a77b5df44a27fcc34b9760ee902ff73922186485cd157f2ab57ef6ac": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "07e8e6fbbc8cec40302d163907d2378f9c50737974d699d43ff15ad902eed8c3d9c2ad397dfc5796b063c1b42c6a9c2048136e0a33fad1b1ffc0f6eb57c6a1b0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "289f46f85ab67d8ac95a7abf22d920a4e946e4b0501fa017369f571971425bf4c4172374eaacb696f2f12631fbe3b2b079b2dce469e90a610804c4ac8b9f0468": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "583fd76f558da604f4300d9ade2a735f7e6cdad6c56cab1f13ec99f41a592f9f9d174ff98aa9678203e01ce98054c82841d4afe0835ba8bc1fa4a94c55e1a393": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee963a079feb9c3dc9f6e9d39b95888516e05f874f82dae39936738677fc349d395ff170a50914c66cd20a47ada094495e637554483a0de84c45ee31736df0ca": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8c25c5753d9b670470a1951a8efc777e42ab6a84ee910d515b9b627aeb388a1089fadd60fb53445d7fc2c20fcf8b150429f4431c39e45d8d6f9d328edd5e796f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d69a716049f4a479d340eb3c2e9da12374efd9342116f3dc021454b1385f43749f28c2050c382e529308d9956e4f43fe63feceab5822a550be2ed182430ce510": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2b704dc2de3baac11d8b24fccc299091a532c4fbd5580cb1dfd17de2a6e34118af97b735835b9a10d33c55242a3126b2a024e696ca39f6ded2e1976e3f86cd3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "59b3b392e1ec9fd58061ca21056a716c47132abc870d6b3dd7f25b95a64c0a34de19a1f64617e68dadd9097ccd7d095422c134a424ced380425e2750c24cbc6b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "602df81df1cf734a958ef211d9e79929d1489524918458514b148458933bf21cae44c0f4dfb75b3a99a37fcfc3cb32e97f90bc7b215fd809c5aa6ca924f07b42": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a18baa6052162c73e1267465b26ac54d8a2c456c856d26d37e184fd4f018fe6e2dfd6bd7645e4c64c875d986c4bee3489906590802a4198c0502063ff3da4831": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e8ae7129fad1c7e992bd444727bb100779962c16c54c84778d903fc11e6ad32fc4d5be9a67cab79b28232c920625791fd695c9aef40da85e5723a73e6b925758": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9da62500215fa996d9f9671225f3dfbe9c71a23fbdc86c5b09f759e79e6494e174ac094efb13010057d782a891d5f89c7db6c330a0f79ad01aac2a549bbedf86": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1b5f4cc791d6c5085256c94c70d8226fdd7449cdec3ecd63eb45353030deef50e530d65c8343143bde62e6cd0ec5e1c7cc88c939022ffe7a405b260228e0544a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "072a7be5b193bdc2e4ed892b93fd2c6cd50dbf37a18caccce709221693c4530ae80602b75b7670dd2938cea6a8af4b0d144a5df577d9dc4762ca882bbbe1d5c4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d00a0144df585c85599216ea6d1fde8420a412ed526307586f489b063a0fcdfccef90a2dec2e99bbfab2363a0d8d7e4d44f8d3f73b070a102699821a8c5ea667": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "bf832852c2d9e472ac9d67d5162fff1a2389223931737727ac8c5af89918a0325de8ace432ab680d2973853d582f03937a7938169e67cfcc682a62d6898303a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4d4c9cf2da542c6de9182fa751d23e8e8e008db9283deddf240b05eddb5b413ef22489de884a52f590d0afd91856f5b03c858ef71fb6325bfe50562c4efe5ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5d07973499aa7868d074ccd009d99e27b41a79b8d69d6b991df64e8e08c17caa5e5b785d3ee83609c3c57360a9ceb4ac216345e9affaf608ea75e73c23564255": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8a7274c4a6655a79a62b9bb20ddcc51b18364dcd08e06973593aecd82f891354b350d92cd02732b5a606f2baaff62118ba49f7cb9e3d6617e444f5dbb86a0139": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ec1a69c7f8c5c6ee12e60533cbf0ae4d87ec2325029ce64f80c34bb7f892c3ccd446e422511ee701dac827358838027ebfdd806fa4947ca06ba3a97498c11e78": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7d7edfa70907ba376ce59eb59e5ac047627b9b322c39b662a7d40e3c31c6290a3d7b130b095f983195b2608809d20784a8355c03582f3673a0fac1b84c8ab033": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d68d16bc99e19f7aaa47364baab1893308cd83bfdc9d0943baca91d2cd7ac463913536e1c08edb5e78572c6c0a358c56462be2a5d929af84a03acc5424f8da41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "837fa39dc9a9b6459d1018ad70d0647269deebc31bc5c8491aaa70a1e85f1588d7c48d47d95f12369a2dade24108459204e2f9e8cb41ead3cf0b8c5715dd89bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ff44ddc64ba056af211a6ba17601c9d0cdf45220a3af646815c00c2b76355d634b07f83b4648d0a14b516a15c7915a1023f0e67af9171b0fbec1b0f4797c0ff6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8b006037edd1961d9fbf205ae9473f464a07b3753cd1d7ef5bf0dd924b805855021723ba4c6e62d6b47efb91442fe60a04699fb305c7e8de06f31936781faaec": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "289a2d0969f108eb3362a9c47b08ef0dde251aa97e050315a73372fb56d136dd054f0e705cf9c9135d60fb3b9b7c0efe30ab9e18f2ba57f513a38531970ef669": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d7e3c519dc132901f4832f3960a0ff47d7e909e0f97082d528f0791e42bb027ce46bcdad23d2b1ecda1e5bddaa4f012a560c3265ba5b9ee9e4cabe61ec033d38": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2906d0aadc5dcf373b10c722fa0843624874cb39d25c81543ab39f21a96c72c4b4a048791e80500695a8a0b84cdfd4084baf2db85c7835d7ecfe1f6640c3d628": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "dcb282387e4c7836c3610106b19cefc8821d5c6ce77c84532bdbd50406a10535353b3acd4296d96d5f509fd26a62f749b363f8d775b1e367bc83cb0954405733": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0e6d607ba50d812a669a922bd78be14aab2b24141a3e15390c0706cde32aea4909a0476dcab81adfac82d94ad45e7466f2ed288c7a9a8a79d47b92ad65d9d6f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "42f0af60cd9743454e3c3436f0caf10c4930de6d1544817426f72b77ce8acfa85cec49e9a4e733bd33d185211423f61c95d09ec0810a67f1f70357e04400974e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b069b487e0e068627940e3b89846a5a9d9a301df3d953fd6bebd6f2a32a67c5b1637e2fe1ebb8d90171ccc3ebf6e29d202f15fb878316c85e67de3599acca68": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "27426d414c5056c4ba4d95e27418bdd2e8812ba8a1665a4fd262175e5861ff8deacbd8caac208387c404ff3d3e513f6c8cfc731da6fe393ae19cc01475907518": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31ca1f01fc29c49297fdcb4abbef1a50d5eedfc7e6b5a5fc4347bdbc49d8a6d3bf7f9041ef9485c9053b027cc19210adc96492ba9739c06c707fcb7c5640eec2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "73110e871faec309dc31ffb901c9e765422aa42318e508b38f87cc20e06479100f9c597f17c26a19f2cc3f262e2bcd83b4d50d11dd8a6821be67cf701882faa0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c99232ae9ccb87544fb8b394c1848833d25228325e050a4cbf4ba62c7205071759dd0dc0a346aa07642395d625c2706c23d5acbf51bd36a638ced516d2dc3070": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a658b9e7c0081b0d478c6285cc353fce6eb4063b9e8ee8a03b558c1b0273f9d914a78ec8a567f801ed04c86075dd9e1503963a50f6d9ebd5e82d158e86a85a3c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c3f0070524bd9e319382c79d3d0549015ec60bc9d8291af0dac2c160e1bffda950fd0410807ac6b110f60198d80d0206fc8296721a512a027b2071bf59a33c1f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f46a83e36262d8878157354db8eaadf6ad20ca4a83852e3f01220fa55ba1772e0bb54f983ba9e29be688ece96a82e04188b74ef3e1736b13b9f0bef105221ecb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3cb8c54eec3a5fd9ee6a09126632772e64c3a33a3f38607ebeb8f1c4248ec1ac7320868312d30821ba0eb83f21dd69d9624c289d1fe1d5732300a0fb0899c563": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7b239494d6f27fdde3cb48e0db7735dfde183237faa1723b3f9b51b3a8b25d8bda562164d53ebc29ddf1a3409e003568f797176ae0b89bdc5d16b5ac8d290ab9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "100e899c58747a79262183a60e9b8dd326406e848b423f25fe96e27e245ddcd103ec8c44646ef6ffa80cd2dce7cdc27a94909ae8c015554105cd051d9ca875a7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ee75354c2e9376ecc44a54b8d1999fa24932f4326d4ecf783a32e976f5b53048d9a964f0cb10a56eeaad3e9ad04d551190660ce43170da5a129b93b45670f94f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "8e19d883c26bbd6e9618b111428ad354fb3250fc929a4289c6cdafbd5cf1e93d890d014798adb473e3121f42e53bb2e8cbf96ba636f47b64aaf2892c998ee307": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1004a09b684a07e88f9cc1808ac87cfd736196842865ce3047ec4536c9a42c111b741396e7c50510a77e2dfa47d043455f1311876b248cc1449d7962ff0b1c0b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ed5bb42a3fd7a402ede71ff056fc026e7c943d51ddbebfc2738227027078a9de40662ff927204c33ac537cc6c52739e69d1ad311da790b07b83145dbcde89b3d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d85374b0f9ac7d6ffac5d6d3df002a57f7e66df7221d0b549f224d9f8ce27a5499b3b921af54b8357fc92bb3bbefa805529ee03b5097660ee9c77441d0cb710f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "656e6cd137b60fb198069f2d595772fac6105f450306a1906af7ed210b08b06d0362246426dd97ce6db0530100adec8dff4c5e84400928b8063d02a97f86de60": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1ade4bbcc089312792a4a4df4d67c5f8bb15041c955d231ab42726655a4e0bbd0e6b455b702764e372073d65ff42f444a6a470adcd63b4f260f933e2f66601b8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0154b2aa62c19471fe3ae5c7db33ea4890c4fcecd12fb34fcf8b7a49c172d699cbd5f02d247f8223dbefa66a8eeb7efed212f26ecca590651077748754e73a4b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "05459b50da19a1edb81b1b3adcd82f8d822dc9ec9b89d71824755bc7a8acda6ef480cf083cefe4b85f79bca3aba6de8f2faa4df25ada6837e914e82371064e81": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "1717a8a964a01793fc3273d9b6b6c330333b409443448ba78847f88351685ca5acf7518440871a446be50f1d473647da3fed3f15824ebb44fc1bb40b08a74324": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7e53e59df2588566269810acd45f8d134da7ad33d503f743537c6d250a5e2ae900d99af63c29b7f609eb878363ca5c6043c5e78b7d68d28cd6c2b78eab8fa8de": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "840570a48eb94446a1ae1dbe9652c85ee5668357bf811dff85b7f9e440d00829dc0cb9da7417af53fa96258df31372ff46309f88d085cd36e4a02ccd3468bbb5": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c4ce9fda813f9e5b200bfc218ff543ddc5b11d181a6cb15e48c0c0750a912950a13ae531de6b11e7bfcf4827d41acb09c9643218b95e598b002705d3382e47f7": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "acd798a9ef690867c4c2791ec46b29f97e21c08a0114db5aa3d9648a9fc012326fe2770e479e2c2a320c6134f298bd89cc38c5c7943e527eb987e717aa8688f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d92c8fd96b0e80e7538e04ce3996d903a09f304149154b555c22d61e497bd03e23e0784c36a7b42c8a1bd493d3e74725a37e081d3138249d47d056169f65521b": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "e46f761569a2fb39c8504b776049b4fa8b2635541af3a92f613fd6ed2b1a9a2bb99882b2930c815d8a7c6025fc69a7586aa6b784a500484a1103b4f566d5505d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "41caa3d6aa755e7dfbdd17ed56a8b3c421fbd0b5eff229d116c3ed9dca9cd67ea4f97f91f9299aafa66d32d3dfdb9dbeb69a45415e7b79a501bb30d48ae938bb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "61c5eb75f3cb707b5e58d8e2bf2305fc1f8eaa026e7f91fa0cd267b65dc612ecc0d61ceb68a90c1629eb3d52ef4cf6e87cd7877460af95adbe4c12947df16eb4": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23594a4b59e8163113949d557dc38ff5ca77e094cd411ddb161eff13de1e1e2b273664bf2ab6d906638a4a1b40889e36a69e8debffa6a1db677a5245f0c6b3ba": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "d5634c854db1a78559879a37dde5dbd69395dd611a5599494b2afcca8aff28c19024e55534a8caaccd9327d376d0f83e2aeb9b55f0479fc0ed832110c9eca27e": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9a3aeb283ce6c8631c24dc654433584fc1b17c93026b59d6e53a38bf69407068a343b378704519cae93b4f438d12cb893bf0c7aef1ad283e507b7de7399c80d3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6caa7e9073e75462323452b225dca0187183c10e45ab574b5998956d46ac27fde42dafaae500f51d953c378c361c0fe6028c282440ffaff36890ad178c7e1073": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "31b0111f0dbc2062715ec955621c7d31aef183fd7c91b849368a33cafa468b063f9236f56b7f98eec30f09cae6be45e3b3584b4a59fb12603478ade5a1cf1485": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6e019c56c96168f01b847fcf909c6896350cacb9d650cbdf21be533501d985bf9361838dfeb85792634e783122740de672fbad51c464b97f8bbd3c8eba47a992": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "239a3154c7649aeb76fa45b8d9542bdf8d74c6611ae01c738d178012c59bba051d27716295bed967e8d88737b5e41469a7e18f5ba2a8fc5deb20014e2f4c8a30": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4259bdc66bf7508c953e556b27623aa11ceb02bde1295b712fc7794507b1d2fd17bb07b4aa45d7fd5aeddc912c931808fb37c774123e78c8f66f93c55d79eca8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2209d4b0566978fb9bcb5c920fa6ab6361e8e309f28dd278f9c39911814cec9912d102d3dfbe52c8efb287652b415c8568ee2306a7d3789b5b6706d320a3cc75": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "53881eb577217a1d34d34d3b7a13295029d369c23adfc8aebd6cb9c1885963312744fb90a2ead3219c33e78649734b3553eb0dc30afbbdff746d8f8543f61c21": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f47ccf7581b9bac00e18597ecb9d398940298cecc04a0e41d9cf9bc10b039a73ae71fa645a77fceb043facc618d64a80d753b02951ffd2190db75df300c6922d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6dfa2902e974364b8ba10670c44175aee4739f798d28d6c051c0d97d2a792569c8652973c029ad76480129728cfd25ccfea43ca07510d3de8368a50230c76e2d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "54cb3f6c3de92c0a5f05f6b6e41d71bd5b507946f1bfd6dd7c3771306bf67915dde11df3abe91250d95d254cea417302bb325adb3f03b8b2736ca9d9694470c2": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9e0f0313485866043c36a5c67641aada063e7f1b534ec359082cdfd035b52c76ad678572c482d18c43b86a6213392daa63dc97d763fa8c03761c3b4821de58bd": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ac49af0719a2bfc544e7d57963032d4a6000858b4651bc306753fe9978387fd13d333c5f122e9b1a1e608987f8461005b305e9b05fc157b0f608b0979d474c95": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "eabaaec1dafa57f41d528e2900bc408b9739798d052f21b512c07e66fc6941f0508a7ce1c49660a283692796c42b8fef2f1fe3f8d2d9e66d1a1da989120ab6f9": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "04c4efdd3bdd36ee24011d08983ced0aabb3997d68e56ace300ed2ce3cf5d73048e386fdf8c64e563a48dd360d7bee278803a9fec1ddefddb89e9f7a79a42c32": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f1f14d156368fd3eccf12f12892ebd108694e206dcdf048361a0c583b0d71b025e3e3aa44049649d4c49ef0d062b4ae4cbc6962d7ffebb78de446a769f5d432a": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c7c04aad2dbf135f464fc2b8d1c796ead1b3adf454447f4a48c2e334cf4cb1b071cfc14d7e81749bd3b66b009b262385ac6e2f6102a69182faed90b2955c4665": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c771eb3ec683443c6da413ef7e140a36c8becb94c7585d9b9220e8f1740f0176ca668fda8f6a92ef2033ae16443d702e5c3bd049b292ad4a6514e54c14283b41": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a05d361c587308116f5f6f32391cc420c847983d227b271e71158b50027e359e15086049c792c0e00e73e5bbd34a9eafa22f2fbb081c8b781dc794bb83f8219d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "f7966ffff624938736e997d7afe02c793174c27064664420ce4d452293ff856e33fe656266ae13e10e2999db9e3d2b1c671737409baf7b3667e3e177bd51828f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3df393fbdae2d23b4d90deac3aa549a115d3cc93023e829fddc3b615816ccd383c5e547789480eb61ab794e1aac3eda7961af6bea17a050124c4498d25e30ec0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ea321f9c6767d453547171fbf1f5a052fb8b7d3c87573868756d50e4e26ca851277787a8c3a725cb2c2aeb304867acdb773220ba1709ee28eb033d8e9053895": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "3c560790071e698f46dd3f5527489e9220fcb020760f619fdd826d0e56e25cba2448bfdcdd5dae1cd89111feb9bdfba3eb04af580f4e74d37e2da43d31408390": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "74795dc5eb3eb3946e4e31f603bef7083195e33ce5fcebd4b80dc2a4fee8681b3a8403cda4b33db4ecac00f30120a215cd6d2567f738119ab466b996defa16da": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "849812ff06edb977f89ffacf8ebe1a25cdb8c14445cc1ad113e3cd87a0aedd5dca3de8691e9382b8c2f3816eb07fdb59fb9be064f083175966fdf6d3a2e65b37": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "9bdc5bfbcad58c699033d75eb81110c09edfeae8080a8fd447e446147e4c29271c54a663cf1f1d8c025d10f3758d0be0c6e2f7c8c54251e9cb491dd429387dc0": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "93535bf3139d0aed129eab3d5a158cb5326f4e3578672a0492a3de0dd61d6c03a7bd2112e72ae1e97ae367f43a85ec51a14418deab555f051ff737fb0e218284": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "809cb83085263833477b4d6c94f7aa081dd02cd05d21d70f1fb6b516b0e1a19fcd3b9dcd448e000b0e47ebfd81146d4199092a27554e2a5b7652e8941c12d3c8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5b23a99de57645578857c137cdb8733fe5a6954aa0a0857a1b91f407596d5df53a588251045a0d19e052a47695dfbb623010979fad4dfbeed693a1a396f72682": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b59ef97e1136412690f19664e5f755139324b7207e2c9c6842d60a4fd3bd5935ce97b4d394f1c6099f87c5896fe64bc5544a2eddbc560f94ba8959a86fb89cf3": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6f9a6c5b072992edc7b6081fb3bb8932656b4c6787bcd19fd6f945aebac4e801da3b880006d4df59949b70c5d3ff62240b72d001e83843bf3e15d1527b963688": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "04fff30a9407ca15f4b2eb114c1a3ac7bdd9727dcc775e31dac162389f76d6029b2661ee6d1526494189c419b110951a210dd966d0f20da765f5a11d35c48515": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "480f612af500abf983649481cb6b7c55ad17fab9a25e477e08238e2eff052501f5c35515e148e515ace49b241303b1fc2859de26e82e8b024535f04f87f481ff": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "478529d597bfc53f166c97a590195511646547ef633f256f19b045c0141d2abc4f72d5d0374cfd85cef066268fb15a4436f16d70340808a301a52f6330a1755c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "aa305aa7a9c5d7d77f78be9aad76b8b2e431d8db6e7e80b443fe83cc2d6dc18c607ea6bf46a154bbc0f0b9dfdac140a4847d7a57a396025cb6a8addbdf98a62d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "a070a0691280ec07bc3b82c73053e3a856556b157d4db22b6ef4c3cb60f532a49fb1e0b6f38e0b1729470cd066164848e81e99fc605a3e55537f33cf90db46fb": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "0784112bb6f8a65c8807af814a3c48177b940f0ce1a9e7ed90e51d5de985772f2cadab4d77b0d957d8fc1e13ef9c21a7e844e637c6230cdd6fa824101d731394": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "06853952ca58921791a7323079a55d159a5dc035918d53d2c3cbc1ffe5b408acadcd68c6bb241433ff1ea3229e17fbcd15fe005ab47ef238e8f09e69bad02dfa": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "23723444375e8ecb39faca010c1ef21bf6dbea785be777aaf3838bb4b22a722526c13eb6d57eed391ac9296f674deb8a09b7b3299a20f1672dc9f2d51d3f7be8": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "cb4897379d5e0df6b5d9ca06dc0127aab372efc8e65616557e0c6b4dfc57b1863e248cd3a627da892b97812e435bbebc4651ae617d7872df36d706e906db42c6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "c09c33d95b18a08a9ed3c7c08d312e46302b46d7017fea25a7ab1f4131a7f0a18325544aaf078fd6d2c33eeea89a27fe9b413ef503e8e4aeacdab63c5abde20d": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7b0ecde7c59ad97ab8b522ae57ed840d7932891f39375bb2ba20b0a9fdebe7d39bcb89cb9ace6b43f0c7f2a9a1a83ba0e63e5983d959a72aa9aaaf9fa2d9da7c": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4ea12f1ff8ef0985e5f147b988aabd9f3165b1b8ddced968dfab73635dbd29baa62a3ca7dd33df35f1683fca29ffecf18e75d256b0b49af8c109db22b00456cf": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "2cc2581423b4ab037160ef8be7c2ca9f2361b0661787b8635dedd0400c234142939b257a9cb32b78a476076ea9fd3312db521081b6134f8560c5f62b6918d3ed": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "4f0de1f55f78cef6bb37f78c9cb9580a824a6f057cde7324a25f5a203044049a6b826aa56610058c3e35b52e3d117893167ed4088814ef85c81d55c662fb89dc": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "de1fee1bde0df30777a4b913be8b9aad3c6e44f8ff1ff19698f1debf687cf5971a11cfd3bc1c5c7107adcfd62da97829cbb1a8ec2115affe094684b9bacccf56": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "71befa4c6a9e2f6cb292511bee33593e3c73568aeb5b1f8f6dfcdd325eea2b3006eda7623bb1d2fdcc2318001700663240fcb33fde53f243a054d256bb2e0094": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "499b34a6a18d76588cb37a8d56a6f8e202ac388de98c739b116b94f71f733d99a7a39446d8be1d3790d05d19528171552426ced0fa26f3e190f1d6eace07ca45": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "5bf3051e8ba3c1e0bd6462f066953394e2ad88899cb41cc2596e1fcc8143bb640dd8f427692145b0da35e4df60ccca8ffeacb35c3aea743fb2fdaeecfe2b4e2f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "947999a11a296fb70e2c66d08829bcf2bf6d53a7c53b65e3a4a52dabf7f0fc021a8e0b178e58a25815533e14e0f64f70595b7c490c040e637f393358c94dd63f": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6a55a5d76506ec508e0156e0be0893ef0511bc34f6fcc9fc280b2539228158872a2721b60566ef99791575d2befc21b7290ee9c6b464c47a10b15851bc4ab133": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "6b4f92f9bd51abf177f9a16178d8122984b76c6d4f86826589b8f839f130082ccf6bfbd14dd02409aaad2ffe79fe38fb59f440a7c1c27c50504b2b494c3635a3": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "b788e0a3b977142114d7a29d812f9d766d2da16dbe80706fc29826a28332622b79a208b7c45ba571e0eca86853540d7fd560fb0a94731be200d0e84c00995a74": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "7103849b94d4f54d4c591304ca2bfef994940582608e6e42f14ddac5b0cf03a1333a0937dd2918180b509b09fc271dc307a82723c31a4459004699cec098a543": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "ce71693626ce8754c81b55b0cd1f68b26f48ef38e677375932d86c7fd0373ae78354a67f698c197f18be6e3cf417a933fb651170d7513a1f8b52b002f0042d27": { + "algorithm": "m.megolm.v1.aes-sha2", + "history_visibility": "shared", + "guest_access": "can_join" + }, + "992de54e2c91b38f91d1673c91a90f6ea81ac7b65791739a221a108fd9226279892e8937f987b07dbfaf617425dc82b22dc5cb75edd9c33bce8ed588a7af12ee": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "f25c0cca34f15ff6528810919b46d591c42bff30f652883775b29d3eed3b9ee36c8979cd9efb9f16bede15c821ed50ae6939d90e6047edc477be3043de6c6217": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "655cd85433651e186621b879a86bc6e7ed4662b99132b4dcba54909ef4afee87c05e7ef1b08e0ef1e01459048cd72aa182850afa7fbc6f331fdcefdf8b7a4b77": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "81ccee80cab4d65528c7dbdce7ea29e158d7991ecf0dcfc4fdb040821b889fe8aaed74f1b7f2a115b71071ca30a5835d55f3bdb7e60249fd7800e8051ccbb995": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "da0a76bbd681070f9dce3e0ecfaca29c191b9a88d02e49798ad2abff94eba12a6bf89a2eed028c105e6de2a0070072c575b97e1e3ec0bbace9304e4cc50c4594": { + "algorithm": "m.megolm.v1.aes-sha2", + "historyVisibility": "shared" + }, + "c878beefb6fea79374bc1bde606ce14a7408e7051a438981bf3812d200494be1ea07136574918725f294243ef12500d7866b9c0e3973e1470e0228430fd6bae6": { + "algorithm": "m.megolm.v1.aes-sha2", + "rotation_period_ms": 2592000000, + "rotation_period_msgs": 10000, + "historyVisibility": "shared" + } + }, + "deviceId": "FNQVKMHHNV" +} \ No newline at end of file diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/conf b/docker/matrix-bot/db/matrix-sdk-crypto/conf new file mode 100644 index 0000000..4154d7c --- /dev/null +++ b/docker/matrix-bot/db/matrix-sdk-crypto/conf @@ -0,0 +1,4 @@ +segment_size: 524288 +use_compression: false +version: 0.34 +vQÁ \ No newline at end of file diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/db b/docker/matrix-bot/db/matrix-sdk-crypto/db new file mode 100644 index 0000000..4385068 Binary files /dev/null and b/docker/matrix-bot/db/matrix-sdk-crypto/db differ diff --git a/docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 b/docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 new file mode 100644 index 0000000..c2c0684 Binary files /dev/null and b/docker/matrix-bot/db/matrix-sdk-crypto/snap.000000001AA15442 differ diff --git a/docker/matrix-bot/index.js b/docker/matrix-bot/index.js new file mode 100644 index 0000000..7d9fc41 --- /dev/null +++ b/docker/matrix-bot/index.js @@ -0,0 +1,694 @@ +import { + MatrixClient, + MatrixAuth, + AutojoinRoomsMixin, + AutojoinUpgradedRoomsMixin, + SimpleFsStorageProvider, + RustSdkCryptoStorageProvider, + RustSdkAppserviceCryptoStorageProvider, + Appservice, + SimpleRetryJoinStrategy, +} from "matrix-bot-sdk"; +import dotenv from 'dotenv'; +import Sequelize, { DataTypes, QueryTypes } from "sequelize"; +import fs from 'fs'; +import * as sha512 from "hash.js/lib/hash/sha/512.js"; +import crypto from 'crypto'; +const homeserverUrl = "https://matrix.beeper.com"; +import ora from 'ora'; +dotenv.config(); +import Pusher from "pusher"; + +const storageProvider = new SimpleFsStorageProvider("/var/www/html/docker/matrix-bot/bot.json"); // or any other IStorageProvider +const cryptoProvider = new RustSdkCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +// const auth = new MatrixAuth(homeserverUrl); +// const client = await auth.passwordLogin(process.env.MATRIX_USERNAME, process.env.MATRIX_PASSWORD); +const client = new MatrixClient( + homeserverUrl, + process.env.MATRIX_ACCESS_TOKEN, + storageProvider, + cryptoProvider +); + +// In order to sync room keys, we need to ensure we can trust the devices we're getting them from. +// We can request the list of devices, and verify their keys. +// + +const sequelize = new Sequelize( + process.env.DB_DATABASE, + process.env.DB_USERNAME, + process.env.DB_PASSWORD, + { + host: process.env.DB_HOST, + dialect: process.env.DB_CONNECTION, + logging: false, + } +); + + +// Since we're talking directly with our database, Laravel isn't getting any of the events +// Nothing in our UI will update, and no php code will trigger. +// We need a way to hook +const pusher = new Pusher({ + appId: process.env.PUSHER_APP_ID, + key: process.env.PUSHER_APP_KEY, + secret: process.env.PUSHER_APP_SECRET, + cluster: process.env.PUSHER_APP_CLUSTER, + wsHost: process.env.PUSHER_HOST ? process.env.PUSHER_HOST : `ws-${process.env.PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: process.env.PUSHER_PORT ?? 80, + wssPort: process.env.PUSHER_PORT ?? 443, + useTLS: true +}); + +async function findOrCreateMessageEvent(Threads, Messages, People, thread, message, is_decrypted = false) +{ + if (message.type !== 'm.room.message') { + console.log('Told this was a message, but reporeted as ', message.type) + return null; + } + console.log('Looking for thread', thread); + + let threadInQuestion = await Threads.findOne({ + where: { thread_id: thread } + }); + + if (!threadInQuestion) { + console.error('Thread doesn\'t exist yet', thread); + + process.exit(1); + } + + const messageToCreate = await Messages.findOne({ + where: { event_id: message.event_id, } + }); + + + if (!messageToCreate) { + const thread_id = threadInQuestion.id + + const sender = await findPersonByIdentifier(People, message); + console.log('no messages found for event', message.event_id, 'creating message',{ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + is_decrypted + } ) + + await Messages.create({ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + ...(message?.content?.settings ? message?.content?.settings : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + is_decrypted, + + }); + + const updatedTime = { origin_server_ts: new Date() }; + + pusher.trigger('user.1', 'eloquent.updated: App\\Models\\Thread', { + ...threadInQuestion, + ...updatedTime, + }) + await Threads.update(updatedTime, { + where: { thread_id: thread } + }); + } +} + +async function findPersonByIdentifier(People, message) +{ + const identifier = message.sender; + + let peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }) + + if (!peoples || peoples.length === 0) { + if (message.type !== 'm.room.member') { + console.log('m.room.member', message); + return null; + } + + await People.create({ + name: message.content.displayname, + identifiers: JSON.stringify([identifier]) + }) + + const data = await client.downloadContent(message.content.avatar_url); + + console.log(data); + process.exit(); + + peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }); + } + + + return peoples[0] ?? null; +} + +const setupSequlize = async () => { + console.log('[-] Sequilize authenticating...'); + await sequelize.authenticate(); + console.log('[-] Sequilize authenticated...'); + + const Threads = sequelize.define('threads', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + name: { + type: DataTypes.STRING, + }, + description: { + type: DataTypes.STRING, + }, + rules: { + type: DataTypes.STRING, + }, + topic: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.STRING, + }, + origin_server_ts: { + type: DataTypes.DATE, + }, + settings: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const Messages = sequelize.define('messages', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + from_person: { + type: DataTypes.BIGINT, + }, + type: { + type: DataTypes.STRING, + }, + event_id: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.BIGINT, + }, + thumbnail_url: { + type: DataTypes.STRING(2048), + }, + originated_at: { + type: DataTypes.DATE, + }, + message: { + type: DataTypes.TEXT + }, + html_message: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const People = sequelize.define('people', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING(255), + allowNull: false, + }, + primary_number: DataTypes.STRING(255), + primary_address: DataTypes.STRING(255), + primary_email: DataTypes.STRING(255), + pronouns: DataTypes.STRING(255), + birthdate: DataTypes.DATE, + phone_numbers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for phone_numbers'); + } + }, + }, + }, + addresses: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for addresses'); + } + }, + }, + }, + emails: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for emails'); + } + }, + }, + }, + estimated_home_value: DataTypes.STRING(255), + estimated_income: DataTypes.STRING(255), + education: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for education'); + } + }, + }, + }, + jobs: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for jobs'); + } + }, + }, + }, + locality: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for locality'); + } + }, + }, + }, + identifiers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for identifiers'); + } + }, + }, + }, + names: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for names'); + } + }, + }, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, // Set to true if you want Sequelize to manage timestamps + tableName: 'people', + updatedAt: 'updated_at', + createdAt: 'created_at', + collate: 'utf8mb4_unicode_ci', + }); + + const Participant = sequelize.define('thread_participants', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + + person_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + thread_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + + joined_at: { + type: DataTypes.DATE, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, + tableName: 'thread_participants', + updatedAt: 'updated_at', + createdAt: 'created_at', + + }) + console.log('[-] Sequilize models defined...'); + + return { + Threads, + Messages, + People, + Participant, + } +} + +async function main() { + try { + const { user_id, device_id } = await client.getWhoAmI(); + console.log('[-] #############################'); + console.log('[-] Authenticated as', user_id, device_id); + console.log('[-] #############################'); + + if (!await storageProvider.isUserRegistered(user_id)) { + storageProvider.addRegisteredUser(user_id); + } + + const { + Threads, + Messages, + People, + Participant, + } = await setupSequlize(); + + // const client = await auth.passwordLogin(userId, password, "Programmatic Access"); + console.log('[-] Autojoin rooms mixin...'); + AutojoinRoomsMixin.setupOnClient(client); + AutojoinUpgradedRoomsMixin.setupOnClient(client); + console.log('[-] Autojoin rooms mixin established..'); + + client.on('room.join', async (event) => { + await client.crypto.onRoomJoin(event.room_id); + }) + + client.on('room.encrypted_event', async (roomId, event) => { + // handle `m.room.encrypted` event that was received from the server + console.log('Room Ecnrypted eevent', roomId, event) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, { + type: 'm.room.message', + event_id: event.event_id, + origin_server_ts: 0, + room_id: event.room_id, + content: { + ...event.content, + settings: event.content + }, + sender: event.sender, + }, false); + }) + + client.on("room.message", async (roomId, messageEvent) => { + // await client.upload + console.log(roomId, 'received a new message from', messageEvent?.sender) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, messageEvent, true); + }); + + console.log('[-] Preparing crypto lib'); + const cryptoSpinner = ora('Syncing joined rooms, and preparing encryption').start(); + /** @var IStorageProvider userStorage **/ + const userStorage = await client.storageProvider.storageForUser(user_id) + + const rooms = await client.getJoinedRooms() + + await client.crypto.prepare(rooms); + cryptoSpinner.succeed('Crypto library setup, encryption ready.'); + + console.log('[-] ready', client.crypto.isReady); + + console.log('[-]',await client.checkOneTimeKeyCounts()); + + const devices = await client.getUserDevices([user_id]); + + const { one_time_keys } = await client.claimOneTimeKeys({ + [user_id]: {[device_id]: "signed_curve25519"} + }, 10000); + + if (!one_time_keys[user_id]) { + console.error('One time keys are not supported for this device'); + return; + } + + console.log('[-] Finished setting up crypto lib'); + // await client.begin(); + console.log('[-] Started'); + const resp = await client.uploadDeviceOneTimeKeys(one_time_keys[user_id][device_id]) + + console.log('Thing has started', device_id, user_id, resp); + const spinner = ora('Loading message history from all the threads').start(); + + for (let index in rooms) { + const roomId = rooms[index]; + + // spinner.spinner = 'dots'; + // spinner.text = index+'/'+rooms.length+' history syncing: ' + roomId + // spinner.start() + + const state = await client.getRoomState(roomId); + + for (let stateIndex in state) { + const event = state[stateIndex]; + let test = null; + switch (event.type) { + case 'm.room.create': + test = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + + if (test) { + continue; + } + await Threads.create({ + name: roomId, + thread_id: roomId, + origin_server_ts: new Date(event.origin_server_ts), + }); + break; + case 'm.room.name': + test = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + + if (test) { + continue; + } + await Threads.update({ name: event.content.name }, { + where: { thread_id: roomId } + }); + break; + case 'm.room.member': + let matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + replacements: [JSON.stringify(event.sender)], + type: QueryTypes.SELECT, + model: People, + }) + + if (matchingPeople.length === 0) { + await People.create({ + name: event.content?.displayname ?? event.sender, + identifiers: JSON.stringify([event.sender]) + }) + } + matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + replacements: [JSON.stringify(event.sender)], + type: QueryTypes.SELECT, + model: People, + }) + + for (let index in matchingPeople) { + const person = matchingPeople[index]; + + let thread = await Threads.findOne({ + where: { thread_id: event.room_id } + }); + let participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + type: QueryTypes.SELECT, + }); + + if (participant.length === 0) { + await Participant.create({ + person_id: person.id, + thread_id: thread.id, + joined_at: new Date(event.origin_server_ts), + }) + participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + type: QueryTypes.SELECT, + }); + } + + if (event.content?.avatar_url) { + let contentType = 'jpg'; + const data = await client.downloadContent(event.content?.avatar_url); + + if (!data.data) { + continue; + } + + const id = person.id + contentType = data.contentType.split('/')[1]; + + if (!fs.existsSync('/var/www/html/storage/app/' + id + '.' + contentType)) { + const path = '/var/www/html/storage/app/' + id + '.' + contentType; + fs.writeFileSync(path, data.data) + + await People.update({ + photo_url: path + }, { + where: { id } + }); + } + } + } + break; + case 'm.room.encryption': + const hash = crypto.createHash('sha512'); + + const key = hash.update(roomId, 'utf-8'); + + const thread = key.digest('hex'); + let threadInQuestion = await Threads.findOne({ + where: { thread_id: roomId } + }); + + const originalSettings = JSON.parse(threadInQuestion?.settings ?? '{}'); + + await Threads.update({ + settings: JSON.stringify({ + ...originalSettings, + ...event.content, + 'hash': thread + }) + }, { + where: { thread_id: roomId } + }); + + console.log('encrypted room found', await client.crypto.isRoomEncrypted(roomId)); + + break; + // this.db.set(`rooms.${key}`, ).write(); + case 'm.room.topic': + await Threads.update({ topic: event.content.topic }, { + where: { thread_id: roomId } + }); + break; + // Meta settings that dont' matter for this app + case 'm.room.canonical_alias': + case 'm.room.history_visibility': + case 'm.room.guest_access': + case 'm.room.power_levels': + case 'm.room.avatar': + case 'm.room.join_rules': + case 'm.bridge': + case 'uk.half-shot.bridge': + case 'com.beeper.chatwoot.conversation_id': + break; + case 'com.beeper.backfill_status': + + case 'com.beeper.rooms.note_to_self': + case 'com.beeper.support_chat': + break; + case "m.space.parent": + case 'm.space.child': + case 'com.beeper.feed': + case 'org.matrix.msc2716.marker': + // a twitter marker? + + default: + console.log(event.type, JSON.stringify(event, null, 4)); + }; + } + + + const isEncrypted = await client.crypto.isRoomEncrypted(roomId); + const roomState = await cryptoProvider.getRoom(roomId); + if (isEncrypted && !roomState) { + const encryption = await client.getRoomStateEvent(roomId, 'm.room.encryption') + const history_visibility = await client.getRoomStateEvent(roomId, 'm.room.history_visibility') + const guest_access = await client.getRoomStateEvent(roomId, 'm.room.guest_access') + + await client.cryptoStore.storeRoom(roomId, { + ...encryption, + ...history_visibility, + ...guest_access, + }); + } + + spinner.stopAndPersist({ + text: "âœ”ï¸ " + index+'/'+rooms.length+' History sync: ' + roomId, + }); + } + + spinner.succeed('Starting the matrix clint') + await client.start() + + } catch (error) { + console.error("Error:", error.message, error); + } +} + +process.on('SIGINT', function () { + sequelize.close(); + + process.exit(); +}) + +main(); diff --git a/docker/matrix-bot/personal-client.js b/docker/matrix-bot/personal-client.js new file mode 100644 index 0000000..c6c0573 --- /dev/null +++ b/docker/matrix-bot/personal-client.js @@ -0,0 +1,668 @@ +import { + MatrixClient, + MatrixAuth, + AutojoinRoomsMixin, + AutojoinUpgradedRoomsMixin, + SimpleFsStorageProvider, + RustSdkCryptoStorageProvider, + RustSdkAppserviceCryptoStorageProvider, + Appservice, + SimpleRetryJoinStrategy, +} from "matrix-bot-sdk"; +import dotenv from 'dotenv'; +import Sequelize, { DataTypes, QueryTypes } from "sequelize"; +import fs from 'fs'; +import * as sha512 from "hash.js/lib/hash/sha/512.js"; +import crypto from 'crypto'; +const homeserverUrl = "https://matrix.beeper.com"; +import ora from 'ora'; +dotenv.config(); +import Pusher from "pusher"; + +const storageProvider = new SimpleFsStorageProvider("/var/www/html/docker/matrix-bot/bot.json"); // or any other IStorageProvider +const cryptoProvider = new RustSdkCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +const cryptoProvider2 = new RustSdkAppserviceCryptoStorageProvider("/var/www/html/docker/matrix-bot/db"); +// const auth = new MatrixAuth(homeserverUrl); +// const client = await auth.passwordLogin(process.env.MATRIX_USERNAME, process.env.MATRIX_PASSWORD); +const client = new MatrixClient( + homeserverUrl, + process.env.MATRIX_ACCESS_TOKEN, + storageProvider, + cryptoProvider +); + +// In order to sync room keys, we need to ensure we can trust the devices we're getting them from. +// We can request the list of devices, and verify their keys. +// + +const sequelize = new Sequelize( + process.env.DB_DATABASE, + process.env.DB_USERNAME, + process.env.DB_PASSWORD, + { + host: process.env.DB_HOST, + dialect: process.env.DB_CONNECTION, + logging: false, + } +); + + +// Since we're talking directly with our database, Laravel isn't getting any of the events +// Nothing in our UI will update, and no php code will trigger. +// We need a way to hook +const pusher = new Pusher({ + appId: process.env.PUSHER_APP_ID, + key: process.env.PUSHER_APP_KEY, + secret: process.env.PUSHER_APP_SECRET, + cluster: process.env.PUSHER_APP_CLUSTER, + wsHost: process.env.PUSHER_HOST ? process.env.PUSHER_HOST : `ws-${process.env.PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: process.env.PUSHER_PORT ?? 80, + wssPort: process.env.PUSHER_PORT ?? 443, + useTLS: true +}); + +async function findOrCreateMessageEvent(Threads, Messages, People, thread, message) +{ + if (message.type !== 'm.room.message') { + return null; + } + + let threadInQuestion = await Threads.findOne({ + where: { thread_id: thread } + }); + + if (!threadInQuestion) { + console.error('Thread doesn\'t exist yet', thread); + + process.exit(1); + } + + const messageToCreate = await Messages.findOne({ + where: { event_id: message.event_id, } + }); + + + if (!messageToCreate) { + const thread_id = threadInQuestion.id + + const sender = await findPersonByIdentifier(People, message); + console.log('no messages found for event', message.event_id, 'creating message',{ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + } ) + + await Messages.create({ + ...(message?.content?.info?.thumbnail_url !== undefined ? { + thumbnail_url: message.content.info.thumbnail_url, + } : {}), + from_person: sender?.id, + thread_id, + type: message.type, + originated_at: new Date(message.origin_server_ts), + message: message?.content?.body, + event_id: message.event_id, + html_message: message?.content?.format_body, + }); + + const updatedTime = { origin_server_ts: new Date() }; + + pusher.trigger('user.1', 'eloquent.updated: App\\Models\\Thread', { + ...threadInQuestion, + ...updatedTime, + }) + await Threads.update(updatedTime, { + where: { thread_id: thread } + }); + } +} + +async function findPersonByIdentifier(People, message) +{ + const identifier = message.sender; + + let peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }) + + if (!peoples || peoples.length === 0) { + if (message.type !== 'm.room.member') { + console.log('m.room.member', message); + return null; + } + + await People.create({ + name: message.content.displayname, + identifiers: JSON.stringify([identifier]) + }) + + const data = await client.downloadContent(message.content.avatar_url); + + console.log(data); + process.exit(); + + peoples = await sequelize.query('select * from people where JSON_CONTAINS(identifiers, :identifier, \'$\')', { + type: QueryTypes.SELECT, + replacements: { + identifier: JSON.stringify(identifier) + }, + }); + } + + + return peoples[0] ?? null; +} + +const setupSequlize = async () => { + console.log('[-] Sequilize authenticating...'); + await sequelize.authenticate(); + console.log('[-] Sequilize authenticated...'); + + const Threads = sequelize.define('threads', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + name: { + type: DataTypes.STRING, + }, + description: { + type: DataTypes.STRING, + }, + rules: { + type: DataTypes.STRING, + }, + topic: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.STRING, + }, + origin_server_ts: { + type: DataTypes.DATE, + }, + settings: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const Messages = sequelize.define('messages', { + id: { + type: DataTypes.BIGINT, + autoIncrement: true, + primaryKey: true, + }, + from_person: { + type: DataTypes.BIGINT, + }, + type: { + type: DataTypes.STRING, + }, + event_id: { + type: DataTypes.STRING, + }, + thread_id: { + type: DataTypes.BIGINT, + }, + thumbnail_url: { + type: DataTypes.STRING(2048), + }, + originated_at: { + type: DataTypes.DATE, + }, + message: { + type: DataTypes.TEXT + }, + html_message: { + type: DataTypes.TEXT, + }, + created_at: { + type: DataTypes.DATE, + }, + updated_at: { + type: DataTypes.DATE, + } + }, { + updatedAt: 'updated_at', + createdAt: 'created_at', + }) + + const People = sequelize.define('people', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: DataTypes.STRING(255), + allowNull: false, + }, + primary_number: DataTypes.STRING(255), + primary_address: DataTypes.STRING(255), + primary_email: DataTypes.STRING(255), + pronouns: DataTypes.STRING(255), + birthdate: DataTypes.DATE, + phone_numbers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for phone_numbers'); + } + }, + }, + }, + addresses: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for addresses'); + } + }, + }, + }, + emails: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for emails'); + } + }, + }, + }, + estimated_home_value: DataTypes.STRING(255), + estimated_income: DataTypes.STRING(255), + education: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for education'); + } + }, + }, + }, + jobs: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for jobs'); + } + }, + }, + }, + locality: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for locality'); + } + }, + }, + }, + identifiers: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for identifiers'); + } + }, + }, + }, + names: { + type: DataTypes.TEXT, + validate: { + isJson: function (value) { + try { + JSON.parse(value); + } catch (error) { + throw new Error('Invalid JSON format for names'); + } + }, + }, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, // Set to true if you want Sequelize to manage timestamps + tableName: 'people', + updatedAt: 'updated_at', + createdAt: 'created_at', + collate: 'utf8mb4_unicode_ci', + }); + + const Participant = sequelize.define('thread_participants', { + id: { + type: DataTypes.BIGINT.UNSIGNED, + primaryKey: true, + autoIncrement: true, + }, + + person_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + thread_id: { + type: DataTypes.BIGINT.UNSIGNED, + }, + + joined_at: { + type: DataTypes.DATE, + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, { + timestamps: true, + tableName: 'thread_participants', + updatedAt: 'updated_at', + createdAt: 'created_at', + + }) + console.log('[-] Sequilize models defined...'); + + return { + Threads, + Messages, + People, + Participant, + } +} + +async function main() { + try { + const { user_id, device_id } = await client.getWhoAmI(); + console.log('[-] #############################'); + console.log('[-] Authenticated as', user_id, device_id); + console.log('[-] #############################'); + + if (!await storageProvider.isUserRegistered(user_id)) { + storageProvider.addRegisteredUser(user_id); + } + + const { + Threads, + Messages, + People, + Participant, + } = await setupSequlize(); + + // const client = await auth.passwordLogin(userId, password, "Programmatic Access"); + console.log('[-] Autojoin rooms mixin...'); + AutojoinRoomsMixin.setupOnClient(client); + AutojoinUpgradedRoomsMixin.setupOnClient(client); + console.log('[-] Autojoin rooms mixin established..'); + + client.on('room.join', async (event) => { + await client.crypto.onRoomJoin(event.room_id); + }) + + client.on('room.encrypted_event', (roomId, event) => { + // handle `m.room.encrypted` event that was received from the server + console.log('Room Ecnrypted eevent', roomId, event) + }) + + + client.on("room.message", async (roomId, messageEvent) => { + // await client.upload + console.log(roomId, 'received a new message from', messageEvent?.sender) + await findOrCreateMessageEvent(Threads, Messages, People, roomId, messageEvent); + }); + + console.log('[-] Preparing crypto lib'); + const cryptoSpinner = ora('Syncing joined rooms, and preparing encryption').start(); + /** @var IStorageProvider userStorage **/ + const userStorage = await client.storageProvider.storageForUser(user_id) + + const rooms = await client.getJoinedRooms() + + await client.crypto.prepare(rooms); + cryptoSpinner.succeed('Crypto library setup, encryption ready.'); + + console.log('[-] ready', client.crypto.isReady); + + console.log('[-]',await client.checkOneTimeKeyCounts()); + + const { one_time_keys } = await client.claimOneTimeKeys({ + [user_id]: {[device_id]: "signed_curve25519"} + }, 10000); + + if (!one_time_keys[user_id]) { + console.error('One time keys are not supported for this device'); + return; + } + + console.log('[-]', one_time_keys); + + console.log('[-] Finished setting up crypto lib'); + // await client.begin(); + console.log('[-] Started'); + const resp = await client.uploadDeviceOneTimeKeys(one_time_keys[user_id][device_id]) + + console.log('Thing has started', device_id, user_id, resp); + const spinner = ora('Loading message history from all the threads').start(); + + for (let index in rooms) { + const roomId = rooms[index]; + + // spinner.spinner = 'dots'; + // spinner.text = index+'/'+rooms.length+' history syncing: ' + roomId + // spinner.start() + + const isEncrypted = await client.crypto.isRoomEncrypted(roomId); + if (isEncrypted) { + await client.crypto.onRoomJoin(roomId); + } + // const state = await client.getRoomState(roomId); + + // for (let stateIndex in state) { + // const event = state[stateIndex]; + // let test = null; + // switch (event.type) { + // case 'm.room.create': + // test = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // + // if (test) { + // continue; + // } + // await Threads.create({ + // name: roomId, + // thread_id: roomId, + // origin_server_ts: new Date(event.origin_server_ts), + // }); + // break; + // case 'm.room.name': + // test = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // + // if (test) { + // continue; + // } + // await Threads.update({ name: event.content.name }, { + // where: { thread_id: roomId } + // }); + // break; + // case 'm.room.member': + // let matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + // replacements: [JSON.stringify(event.sender)], + // type: QueryTypes.SELECT, + // model: People, + // }) + // + // if (matchingPeople.length === 0) { + // await People.create({ + // name: event.content?.displayname ?? event.sender, + // identifiers: JSON.stringify([event.sender]) + // }) + // } + // matchingPeople = await sequelize.query('select * from people where json_contains(identifiers, ?, \'$\')', { + // replacements: [JSON.stringify(event.sender)], + // type: QueryTypes.SELECT, + // model: People, + // }) + // + // for (let index in matchingPeople) { + // const person = matchingPeople[index]; + // + // let thread = await Threads.findOne({ + // where: { thread_id: event.room_id } + // }); + // let participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + // replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + // type: QueryTypes.SELECT, + // }); + // + // if (participant.length === 0) { + // await Participant.create({ + // person_id: person.id, + // thread_id: thread.id, + // joined_at: new Date(event.origin_server_ts), + // }) + // participant = await sequelize.query('select * from thread_participants where person_id = ? and thread_id = ?', { + // replacements: [JSON.stringify(person.id), JSON.stringify(thread.id)], + // type: QueryTypes.SELECT, + // }); + // } + // + // if (event.content?.avatar_url) { + // let contentType = 'jpg'; + // const data = await client.downloadContent(event.content?.avatar_url); + // + // if (!data.data) { + // continue; + // } + // + // const id = person.id + // contentType = data.contentType.split('/')[1]; + // + // if (!fs.existsSync('/var/www/html/storage/app/' + id + '.' + contentType)) { + // const path = '/var/www/html/storage/app/' + id + '.' + contentType; + // fs.writeFileSync(path, data.data) + // + // await People.update({ + // photo_url: path + // }, { + // where: { id } + // }); + // } + // } + // } + // break; + // case 'm.room.encryption': + // const hash = crypto.createHash('sha512'); + // + // const key = hash.update(roomId, 'utf-8'); + // + // const thread = key.digest('hex'); + // let threadInQuestion = await Threads.findOne({ + // where: { thread_id: roomId } + // }); + // + // const originalSettings = JSON.parse(threadInQuestion?.settings ?? '{}'); + // + // await Threads.update({ + // settings: JSON.stringify({ + // ...originalSettings, + // ...event.content, + // 'hash': thread + // }) + // }, { + // where: { thread_id: roomId } + // }); + // + // console.log('encrypted room found', await client.crypto.isRoomEncrypted(roomId)); + // + // break; + // // this.db.set(`rooms.${key}`, ).write(); + // case 'm.room.topic': + // await Threads.update({ topic: event.content.topic }, { + // where: { thread_id: roomId } + // }); + // break; + // // Meta settings that dont' matter for this app + // case 'm.room.canonical_alias': + // case 'm.room.history_visibility': + // case 'm.room.guest_access': + // case 'm.room.power_levels': + // case 'm.room.avatar': + // case 'm.room.join_rules': + // case 'm.bridge': + // case 'uk.half-shot.bridge': + // case 'com.beeper.chatwoot.conversation_id': + // break; + // case 'com.beeper.backfill_status': + // + // case 'com.beeper.rooms.note_to_self': + // case 'com.beeper.support_chat': + // break; + // case "m.space.parent": + // case 'm.space.child': + // case 'com.beeper.feed': + // case 'org.matrix.msc2716.marker': + // // a twitter marker? + // + // default: + // console.log(event.type, JSON.stringify(event, null, 4)); + // }; + // } + + spinner.stopAndPersist({ + text: "âœ”ï¸ " + index+'/'+rooms.length+' History sync: ' + roomId, + }); + } + + spinner.succeed('Starting the matrix clint') + await client.start() + + } catch (error) { + console.error("Error:", error.message, error); + } +} + +process.on('SIGINT', function () { + sequelize.close(); + + process.exit(); +}) + +main(); diff --git a/docker/matrix-bot/reset-password.tsx b/docker/matrix-bot/reset-password.tsx new file mode 100644 index 0000000..fce0425 --- /dev/null +++ b/docker/matrix-bot/reset-password.tsx @@ -0,0 +1,211 @@ +#!/usr/bin/env node_modules/.bin/tsx + +import { default as originalFetch } from "node-fetch"; +import yargs from "yargs"; +import prompts from "prompts"; + +const DEBUG = ["1", "true"].includes(process.env.DEBUG) ?? false; + +async function debugFetch(url: string, options: any) { + console.debug("[fetch]", url, options); + + const response = await originalFetch(url, options); + + console.debug("[fetch] Response status:", response.status); + console.debug("[fetch] Response headers:", response.headers.raw()); + console.debug("[fetch] Response body:", await response.clone().text()); + + return response; +} + +const fetch = DEBUG ? debugFetch : originalFetch; + +async function loginWithEmail(_email?: string) { + const email = + _email ?? + ( + await prompts({ + type: "text", + name: "email", + message: "Enter your email:", + }) + ).email; + + if (!email) throw new Error("Email is required"); + + const loginResponse = await fetch("https://api.beeper.com/user/login", { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + }, + }); + const { request } = await loginResponse.json(); + + if (!request) + throw new Error("JSON response object missing required 'request' key"); + + await fetch("https://api.beeper.com/user/login/email", { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + "Content-Type": "application/json", + }, + body: JSON.stringify({ request, email }), + }); + + const code = ( + await prompts({ + type: "text", + name: "code", + message: "Enter the challenge code sent to your email:", + }) + ).code; + + if (!code) throw new Error("Code is required"); + + const loginChallengeResponse = await fetch( + "https://api.beeper.com/user/login/response", + { + method: "POST", + headers: { + Authorization: "Bearer BEEPER-PRIVATE-API-PLEASE-DONT-USE", + "Content-Type": "application/json", + }, + body: JSON.stringify({ request, response: code }), + } + ); + const { token } = await loginChallengeResponse.json(); + + console.log("Your JWT Token: ", token); +} + +async function loginWithToken(_token?: string) { + const token = + _token ?? + ( + await prompts({ + type: "text", + name: "token", + message: "Enter your JWT token:", + }) + ).token; + + if (!token) throw new Error("Token is required"); + + const jwtLoginResponse = await fetch( + "https://matrix.beeper.com/_matrix/client/v3/login", + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ type: "org.matrix.login.jwt", token: token }), + } + ); + + const jwtLoginResponseData = await jwtLoginResponse.json(); + const { + user_id: userId, + access_token: accessToken, + device_id: deviceId, + } = jwtLoginResponseData; + + console.log( + "JWT Login Response:", + JSON.stringify(jwtLoginResponseData, null, 2) + ); + + console.log("User ID:", userId); + console.log("Access Token:", accessToken); + console.log("Device ID:", deviceId); +} + +async function resetPassword( + _accessToken?: string, + _jwtToken?: string, + _newPassword?: string +) { + const accessToken = + _accessToken ?? + ( + await prompts({ + type: "text", + name: "access_token", + message: "Enter your Access Token:", + }) + ).access_token; + + if (!accessToken) throw new Error("Access token is required"); + + const jwtToken = + _jwtToken ?? + ( + await prompts({ + type: "text", + name: "jwt_token", + message: "Enter your JWT Token:", + }) + ).jwt_token; + + if (!jwtToken) throw new Error("JWT token is required"); + + const newPassword = + _newPassword ?? + ( + await prompts({ + type: "password", + name: "new_password", + message: "Enter your new password:", + }) + ).new_password; + + if (!newPassword) throw new Error("New password is required"); + + const userInteractiveAuthenticationFlowsResponse = await fetch( + "https://matrix.beeper.com/_matrix/client/v3/account/password", + { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({}), + } + ); + + const { session, flows } = + await userInteractiveAuthenticationFlowsResponse.json(); + + const hasJwtFlow = flows.find((f) => + f.stages.includes("org.matrix.login.jwt") + ); + + if (!hasJwtFlow) + throw new Error("Matrix server doesn't seem to support JWT flow"); + + await fetch("https://matrix.beeper.com/_matrix/client/v3/account/password", { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + auth: { + type: "org.matrix.login.jwt", + token: jwtToken, + session: session, + }, + new_password: newPassword, + logout_devices: false, + }), + }); + + console.log("Password reset successfully"); +} + +// loginWithEmail('beeper@kregel.email') +const jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhdXN0aW5rcmVnZWwiLCJpYXQiOjE2OTYzNjEzMDYsImV4cCI6MTY5NjM2MjIwNn0.Q70QD1jc3Jz5CZLmoQ1wkKuECb6g2Fcwp9e5UpD6Q-I'; + +// loginWithToken(jwt); + +resetPassword('syt_YXVzdGlua3JlZ2Vs_FiMVgVyaZlHWAtCvTmgo_0lpziI',jwt, 'oKcYigyptEFGcqGLn9JtKkurQ9ymrCJD'); diff --git a/docker/websocket/Dockerfile b/docker/websocket/Dockerfile new file mode 100644 index 0000000..8c14212 --- /dev/null +++ b/docker/websocket/Dockerfile @@ -0,0 +1,10 @@ +FROM austinkregel/base:latest + +COPY start-container /usr/local/bin/start-container +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini +RUN chmod +x /usr/local/bin/start-container + +EXPOSE 8000 + +ENTRYPOINT ["start-container"] diff --git a/docker/8.1/php.ini b/docker/websocket/php.ini similarity index 70% rename from docker/8.1/php.ini rename to docker/websocket/php.ini index 39dcbca..66d04d5 100644 --- a/docker/8.1/php.ini +++ b/docker/websocket/php.ini @@ -2,6 +2,3 @@ post_max_size = 100M upload_max_filesize = 100M variables_order = EGPCS - -[opcache] -opcache.enable_cli=1 diff --git a/docker/8.1/start-container b/docker/websocket/start-container similarity index 75% rename from docker/8.1/start-container rename to docker/websocket/start-container index b864399..b99ddd0 100644 --- a/docker/8.1/start-container +++ b/docker/websocket/start-container @@ -13,5 +13,5 @@ chmod -R ugo+rw /.composer if [ $# -gt 0 ]; then exec gosu $WWWUSER "$@" else - exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf + /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf fi diff --git a/docker/websocket/supervisord.conf b/docker/websocket/supervisord.conf new file mode 100644 index 0000000..bface11 --- /dev/null +++ b/docker/websocket/supervisord.conf @@ -0,0 +1,12 @@ +[supervisord] +nodaemon=true +user=root +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:websockets] +command=/usr/bin/php /var/www/html/artisan websockets:serve +numprocs=1 +autostart=true +autorestart=true +user=sail diff --git a/resources/js/Components/Button.vue b/resources/js/Components/Button.vue new file mode 100644 index 0000000..74d74b5 --- /dev/null +++ b/resources/js/Components/Button.vue @@ -0,0 +1,96 @@ + + + diff --git a/resources/js/Components/ComposerPackage.vue b/resources/js/Components/ComposerPackage.vue new file mode 100644 index 0000000..d685729 --- /dev/null +++ b/resources/js/Components/ComposerPackage.vue @@ -0,0 +1,284 @@ + + + diff --git a/resources/js/Components/DynamicIcon.vue b/resources/js/Components/DynamicIcon.vue new file mode 100644 index 0000000..48c0066 --- /dev/null +++ b/resources/js/Components/DynamicIcon.vue @@ -0,0 +1,40 @@ + + + diff --git a/resources/js/Components/GlobalChat.vue b/resources/js/Components/GlobalChat.vue new file mode 100644 index 0000000..1c9cc6c --- /dev/null +++ b/resources/js/Components/GlobalChat.vue @@ -0,0 +1,121 @@ + + + diff --git a/resources/js/Components/HeaderMapping.vue b/resources/js/Components/HeaderMapping.vue new file mode 100644 index 0000000..1df2cb1 --- /dev/null +++ b/resources/js/Components/HeaderMapping.vue @@ -0,0 +1,163 @@ + + + diff --git a/resources/js/Components/Input.vue b/resources/js/Components/Input.vue new file mode 100644 index 0000000..ab69bab --- /dev/null +++ b/resources/js/Components/Input.vue @@ -0,0 +1,28 @@ + + + diff --git a/resources/js/Components/Label.vue b/resources/js/Components/Label.vue new file mode 100644 index 0000000..5a19d80 --- /dev/null +++ b/resources/js/Components/Label.vue @@ -0,0 +1,12 @@ + + + diff --git a/resources/js/Components/LinkAccount.vue b/resources/js/Components/LinkAccount.vue new file mode 100644 index 0000000..82c240d --- /dev/null +++ b/resources/js/Components/LinkAccount.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/resources/js/Components/Spork/CrudView.vue b/resources/js/Components/Spork/CrudView.vue index 94b170b..26708ef 100644 --- a/resources/js/Components/Spork/CrudView.vue +++ b/resources/js/Components/Spork/CrudView.vue @@ -1,11 +1,11 @@ + + + + diff --git a/resources/js/Components/VueTerm.vue b/resources/js/Components/VueTerm.vue new file mode 100644 index 0000000..0aec714 --- /dev/null +++ b/resources/js/Components/VueTerm.vue @@ -0,0 +1,79 @@ + + + diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue index ba7df1d..11d313f 100644 --- a/resources/js/Layouts/AppLayout.vue +++ b/resources/js/Layouts/AppLayout.vue @@ -1,19 +1,51 @@ diff --git a/resources/js/Layouts/Manage.vue b/resources/js/Layouts/Manage.vue new file mode 100644 index 0000000..d9972d6 --- /dev/null +++ b/resources/js/Layouts/Manage.vue @@ -0,0 +1,38 @@ + + + diff --git a/resources/js/Pages/Admin/Emails.vue b/resources/js/Pages/Admin/Emails.vue new file mode 100644 index 0000000..c0c035d --- /dev/null +++ b/resources/js/Pages/Admin/Emails.vue @@ -0,0 +1,140 @@ + + diff --git a/resources/js/Pages/Admin/Index.vue b/resources/js/Pages/Admin/Index.vue new file mode 100644 index 0000000..c0c035d --- /dev/null +++ b/resources/js/Pages/Admin/Index.vue @@ -0,0 +1,140 @@ + + diff --git a/resources/js/Pages/Banking/Settings.vue b/resources/js/Pages/Banking/Settings.vue new file mode 100644 index 0000000..47d20dd --- /dev/null +++ b/resources/js/Pages/Banking/Settings.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/resources/js/Pages/Servers.vue b/resources/js/Pages/Crud.vue similarity index 57% rename from resources/js/Pages/Servers.vue rename to resources/js/Pages/Crud.vue index b6d92be..686c6bb 100644 --- a/resources/js/Pages/Servers.vue +++ b/resources/js/Pages/Crud.vue @@ -2,54 +2,53 @@
- - + @@ -68,27 +67,25 @@ import AppLayout from '@/Layouts/AppLayout.vue'; import CrudView from "@/Components/Spork/CrudView.vue"; import SporkInput from "@/Components/Spork/SporkInput.vue"; import {buildUrl} from "@kbco/query-builder"; + export default { components: { + Link, CrudView, AppLayout, SporkInput }, - setup() { + props: ['description', 'plural', 'singular', 'link', 'paginator'], + setup(props) { + const { data, ...paginator} = props.paginator; return { createOpen: ref(false), - form: ref(({ - name: '', - settings: {}, - })), - data: ref([]), - pagination: ref({}), - - } - }, - watch: { - date(to, from) { - this.form.remind_at = dayjs(to).startOf('day').utc().format("YYYY-MM-DD HH:mm:ss") + form: ref(props.description?.required?.reduce((fields, field) => ({ + ...fields, + [field]: '' + }), {})), + data: ref(data ?? []), + pagination: ref(paginator ?? {}), } }, methods: { @@ -99,19 +96,37 @@ export default { return this.form.errors[error] ?? null; }, - dateFormat(contact) { - return '' + contact.starts_at + ' at ' + - '' + dayjs(contact.last_occurrence || contact.remind_at).format('h:mma') + '' - }, + fillDefaultTeamAndUser(form) { + if (form.hasOwnProperty('team_id')) { + form.team_id = this.$attrs.auth.user.current_team_id; + } + if (form.hasOwnProperty('user_id')) { + form.user_id = this.$attrs.auth.user.id; + } + + return form; + }, async save(form) { + form = this.fillDefaultTeamAndUser(form); + if (!form.id) { - await axios.post('/api/servers', form); + await axios.post('/api/crud/'+this.link, form); } else { console.log('No edit method defined') } + await this.fetch({ page: 1, limit: 15, }); + this.clearForm(); }, + clearForm() { + for (let key in form) { + if (form.hasOwnProperty(key)) { + form[key] = ''; + } + } + }, async onDelete(data) { - await axios.delete('/api/servers/' + form.id); + await axios.delete('/api/crud/'+this.link+'/' + form.id); + await this.fetch({ page: 1, limit: 15, }); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -128,11 +143,10 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/servers', { - page, - limit, + '/api/crud/'+this.link, { + page, limit, ...args, - include: ['tags',] + include: [], } )); diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index 1635e74..839d7a1 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -29,7 +29,6 @@ defineProps({ -
diff --git a/resources/js/Pages/Domains.vue b/resources/js/Pages/Domains.vue index 867c7d3..a090731 100644 --- a/resources/js/Pages/Domains.vue +++ b/resources/js/Pages/Domains.vue @@ -111,13 +111,13 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/domains', form); + await axios.post('/api/crud/domains', form); } else { console.log('No edit method defined') } }, async onDelete(data) { - await axios.delete('/api/domains/' + form.id); + await axios.delete('/api/crud/domains/' + form.id); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -134,7 +134,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/domains', { + '/api/crud/domains', { page, limit, ...args, include: [], diff --git a/resources/js/Pages/FileManager.vue b/resources/js/Pages/FileManager.vue new file mode 100644 index 0000000..b41ffed --- /dev/null +++ b/resources/js/Pages/FileManager.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/resources/js/Pages/Manage/Index.vue b/resources/js/Pages/Manage/Index.vue new file mode 100644 index 0000000..482d92c --- /dev/null +++ b/resources/js/Pages/Manage/Index.vue @@ -0,0 +1,85 @@ + + + diff --git a/resources/js/Pages/Manage/People.vue b/resources/js/Pages/Manage/People.vue new file mode 100644 index 0000000..ae43c7d --- /dev/null +++ b/resources/js/Pages/Manage/People.vue @@ -0,0 +1,165 @@ + + + diff --git a/resources/js/Pages/Manage/Servers.vue b/resources/js/Pages/Manage/Servers.vue new file mode 100644 index 0000000..6342a7d --- /dev/null +++ b/resources/js/Pages/Manage/Servers.vue @@ -0,0 +1,74 @@ + + diff --git a/resources/js/Pages/Pages.vue b/resources/js/Pages/Pages.vue index 1861041..4fcb1aa 100644 --- a/resources/js/Pages/Pages.vue +++ b/resources/js/Pages/Pages.vue @@ -135,13 +135,13 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/pages', form); + await axios.post('/api/crud/pages', form); } else { console.log('No edit method defined') } }, async onDelete(data) { - await axios.delete('/api/pages/' + form.id); + await axios.delete('/api/crud/pages/' + form.id); }, async onExecute({ actionToRun, selectedItems}) { try { @@ -158,7 +158,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/pages', { + '/api/crud/pages', { page, limit, ...args, include: [] diff --git a/resources/js/Pages/People.vue b/resources/js/Pages/People.vue deleted file mode 100644 index 12fdf09..0000000 --- a/resources/js/Pages/People.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - diff --git a/resources/js/Pages/Petoskey/WeatherHeader.vue b/resources/js/Pages/Petoskey/WeatherHeader.vue index 530c75a..1c8b6f0 100644 --- a/resources/js/Pages/Petoskey/WeatherHeader.vue +++ b/resources/js/Pages/Petoskey/WeatherHeader.vue @@ -1,6 +1,6 @@ diff --git a/resources/js/Pages/Postal/Index.vue b/resources/js/Pages/Postal/Index.vue new file mode 100644 index 0000000..488dcd7 --- /dev/null +++ b/resources/js/Pages/Postal/Index.vue @@ -0,0 +1,95 @@ + + + + + + diff --git a/resources/js/Pages/Postal/Thread.vue b/resources/js/Pages/Postal/Thread.vue new file mode 100644 index 0000000..deadf9f --- /dev/null +++ b/resources/js/Pages/Postal/Thread.vue @@ -0,0 +1,166 @@ + + + + + + diff --git a/resources/js/Pages/Projects/Projects.vue b/resources/js/Pages/Projects/Projects.vue index de6cab4..ca1aa50 100644 --- a/resources/js/Pages/Projects/Projects.vue +++ b/resources/js/Pages/Projects/Projects.vue @@ -55,8 +55,8 @@
- - + +
@@ -91,7 +91,9 @@ export default { createOpen: ref(false), form: ref(({ name: '', - settings: {}, + settings: { + + }, })), data: ref([]), pagination: ref({}), @@ -117,7 +119,7 @@ export default { }, async save(form) { if (!form.id) { - await axios.post('/api/projects', { + await axios.post('/api/crud/projects', { ...form, team_id: this.$page.props.auth.user.current_team.id, }); @@ -128,7 +130,7 @@ export default { } }, async onDelete(data) { - await axios.delete('/api/projects/' + data.id); + await axios.delete('/api/crud/projects/' + data.id); await this.fetch({ page: 1, limit: 15, }) @@ -148,7 +150,7 @@ export default { }, async fetch({ page, limit, ...args }) { const { data: { data, ...pagination} } = await axios.get(buildUrl( - '/api/projects', { + '/api/crud/projects', { page, limit, ...args, include: ['domains', 'servers'] diff --git a/resources/js/Pages/Settings.vue b/resources/js/Pages/Settings.vue new file mode 100644 index 0000000..a3e01be --- /dev/null +++ b/resources/js/Pages/Settings.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/resources/js/Pages/Settings2.vue b/resources/js/Pages/Settings2.vue new file mode 100644 index 0000000..770ae95 --- /dev/null +++ b/resources/js/Pages/Settings2.vue @@ -0,0 +1,54 @@ + + + diff --git a/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue b/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue index 313ad3d..ede0c0f 100644 --- a/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue +++ b/resources/js/Pages/Teams/Partials/UpdateTeamNameForm.vue @@ -13,7 +13,7 @@ const props = defineProps({ }); const form = useForm({ - name: props.team.name, + name: props.team?.name ?? '', }); const updateTeamName = () => { diff --git a/resources/js/app.js b/resources/js/app.js index 6d4bb86..53e804d 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1,6 +1,6 @@ import './bootstrap'; import '../css/app.css'; - +import Toaster from "@meforma/vue-toaster"; import { createApp, h } from 'vue'; import { createInertiaApp } from '@inertiajs/vue3'; import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; @@ -9,6 +9,7 @@ import { createStore } from "vuex"; import Hero from './Builder/Components/Heros/Classic.vue'; import BuilderButton from './Builder/Components/BuilderButton.vue'; import BuilderText from './Builder/Components/BuilderText.vue'; +import Notifications from 'notiwind'; import Grid from './Components/Grid.vue'; import TitleAndFooterTextCard from "./Builder/Components/Cards/TitleAndFooterTextCard.vue"; const registeredComponents = []; @@ -38,7 +39,9 @@ createInertiaApp({ const app = createApp({ render: () => h(App, props) }) .use(plugin) + .use(Notifications) .use(store) + .use(Toaster) .use(ZiggyVue, Ziggy); const addComponentToRegistry = (component) => { const name = (component.__name ?? component.name ?? component.__file ?? '').split('/').pop().split('.')[0]; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index b7eb38d..b2ecae4 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -47,18 +47,18 @@ window.onerror = (error) => { * allows your team to easily build robust real-time web applications. */ -// import Echo from 'laravel-echo'; +import Echo from 'laravel-echo'; -// import Pusher from 'pusher-js'; -// window.Pusher = Pusher; +import Pusher from 'pusher-js'; +window.Pusher = Pusher; -// window.Echo = new Echo({ -// broadcaster: 'pusher', -// key: import.meta.env.VITE_PUSHER_APP_KEY, -// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', -// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, -// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, -// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, -// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', -// enabledTransports: ['ws', 'wss'], -// }); +window.Echo = new Echo({ + broadcaster: 'pusher', + key: import.meta.env.VITE_PUSHER_APP_KEY, + cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', + wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, + wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, + wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, + forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', + enabledTransports: ['ws', 'wss'], +}); diff --git a/resources/js/old-spork/404Error.vue b/resources/js/old-spork/404Error.vue new file mode 100644 index 0000000..f184583 --- /dev/null +++ b/resources/js/old-spork/404Error.vue @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/ForgotPassword.vue b/resources/js/old-spork/Auth/ForgotPassword.vue new file mode 100644 index 0000000..7f4a3d9 --- /dev/null +++ b/resources/js/old-spork/Auth/ForgotPassword.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/Login.vue b/resources/js/old-spork/Auth/Login.vue new file mode 100644 index 0000000..aadcf5d --- /dev/null +++ b/resources/js/old-spork/Auth/Login.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Auth/Register.vue b/resources/js/old-spork/Auth/Register.vue new file mode 100644 index 0000000..ac827b0 --- /dev/null +++ b/resources/js/old-spork/Auth/Register.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Base.vue b/resources/js/old-spork/Base.vue new file mode 100644 index 0000000..5416d8c --- /dev/null +++ b/resources/js/old-spork/Base.vue @@ -0,0 +1,164 @@ + + diff --git a/resources/js/old-spork/Basement/Basement.vue b/resources/js/old-spork/Basement/Basement.vue new file mode 100644 index 0000000..f72f5cb --- /dev/null +++ b/resources/js/old-spork/Basement/Basement.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/resources/js/old-spork/Basement/Dashboard.vue b/resources/js/old-spork/Basement/Dashboard.vue new file mode 100644 index 0000000..b8da1f4 --- /dev/null +++ b/resources/js/old-spork/Basement/Dashboard.vue @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/resources/js/old-spork/Basement/Domains.vue b/resources/js/old-spork/Basement/Domains.vue new file mode 100644 index 0000000..3005236 --- /dev/null +++ b/resources/js/old-spork/Basement/Domains.vue @@ -0,0 +1,125 @@ + + + diff --git a/resources/js/old-spork/Basement/Servers.vue b/resources/js/old-spork/Basement/Servers.vue new file mode 100644 index 0000000..0df1a03 --- /dev/null +++ b/resources/js/old-spork/Basement/Servers.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Basement/Settings.vue b/resources/js/old-spork/Basement/Settings.vue new file mode 100644 index 0000000..003ea1d --- /dev/null +++ b/resources/js/old-spork/Basement/Settings.vue @@ -0,0 +1,11 @@ + + + diff --git a/resources/js/old-spork/Bookmarks/Bookmarks.vue b/resources/js/old-spork/Bookmarks/Bookmarks.vue new file mode 100644 index 0000000..aa285fc --- /dev/null +++ b/resources/js/old-spork/Bookmarks/Bookmarks.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/Calendar.vue b/resources/js/old-spork/Calendar/Calendar.vue new file mode 100644 index 0000000..a5c8d3d --- /dev/null +++ b/resources/js/old-spork/Calendar/Calendar.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/MasterCalendar.vue b/resources/js/old-spork/Calendar/MasterCalendar.vue new file mode 100644 index 0000000..1bdf5fa --- /dev/null +++ b/resources/js/old-spork/Calendar/MasterCalendar.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/resources/js/old-spork/Calendar/MiniCalendar.vue b/resources/js/old-spork/Calendar/MiniCalendar.vue new file mode 100644 index 0000000..040fd21 --- /dev/null +++ b/resources/js/old-spork/Calendar/MiniCalendar.vue @@ -0,0 +1,142 @@ + + + diff --git a/resources/js/old-spork/Compendium.vue b/resources/js/old-spork/Compendium.vue new file mode 100644 index 0000000..a2a8a31 --- /dev/null +++ b/resources/js/old-spork/Compendium.vue @@ -0,0 +1,123 @@ + + + diff --git a/resources/js/old-spork/Dashboard.vue b/resources/js/old-spork/Dashboard.vue new file mode 100644 index 0000000..d0eb050 --- /dev/null +++ b/resources/js/old-spork/Dashboard.vue @@ -0,0 +1,272 @@ + + diff --git a/resources/js/old-spork/Development/Development.vue b/resources/js/old-spork/Development/Development.vue new file mode 100644 index 0000000..2136811 --- /dev/null +++ b/resources/js/old-spork/Development/Development.vue @@ -0,0 +1,245 @@ + + + diff --git a/resources/js/old-spork/Development/Editor.vue b/resources/js/old-spork/Development/Editor.vue new file mode 100644 index 0000000..5899054 --- /dev/null +++ b/resources/js/old-spork/Development/Editor.vue @@ -0,0 +1,275 @@ + + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Development/Fabricator.vue b/resources/js/old-spork/Development/Fabricator.vue new file mode 100644 index 0000000..6312100 --- /dev/null +++ b/resources/js/old-spork/Development/Fabricator.vue @@ -0,0 +1,100 @@ + + + diff --git a/resources/js/old-spork/Development/FileOrFolder.vue b/resources/js/old-spork/Development/FileOrFolder.vue new file mode 100644 index 0000000..58f2bf3 --- /dev/null +++ b/resources/js/old-spork/Development/FileOrFolder.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/resources/js/old-spork/Development/Flow.vue b/resources/js/old-spork/Development/Flow.vue new file mode 100644 index 0000000..4167b72 --- /dev/null +++ b/resources/js/old-spork/Development/Flow.vue @@ -0,0 +1,189 @@ + + + diff --git a/resources/js/old-spork/Favorites/Favorites.vue b/resources/js/old-spork/Favorites/Favorites.vue new file mode 100644 index 0000000..2e8be3b --- /dev/null +++ b/resources/js/old-spork/Favorites/Favorites.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/resources/js/old-spork/Feeds/RssFeeds.vue b/resources/js/old-spork/Feeds/RssFeeds.vue new file mode 100644 index 0000000..7f24656 --- /dev/null +++ b/resources/js/old-spork/Feeds/RssFeeds.vue @@ -0,0 +1,43 @@ + + + diff --git a/resources/js/old-spork/Feeds/RssSubscriptions.vue b/resources/js/old-spork/Feeds/RssSubscriptions.vue new file mode 100644 index 0000000..07c057b --- /dev/null +++ b/resources/js/old-spork/Feeds/RssSubscriptions.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/resources/js/old-spork/Feeds/UnfilteredFeed.vue b/resources/js/old-spork/Feeds/UnfilteredFeed.vue new file mode 100644 index 0000000..e81a14c --- /dev/null +++ b/resources/js/old-spork/Feeds/UnfilteredFeed.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Billing.vue b/resources/js/old-spork/Finance/Billing.vue new file mode 100644 index 0000000..4823ce0 --- /dev/null +++ b/resources/js/old-spork/Finance/Billing.vue @@ -0,0 +1,202 @@ + + + diff --git a/resources/js/old-spork/Finance/Dashboard.vue b/resources/js/old-spork/Finance/Dashboard.vue new file mode 100644 index 0000000..ba7c0a5 --- /dev/null +++ b/resources/js/old-spork/Finance/Dashboard.vue @@ -0,0 +1,94 @@ + + + diff --git a/resources/js/old-spork/Finance/Finance.vue b/resources/js/old-spork/Finance/Finance.vue new file mode 100644 index 0000000..51b7e14 --- /dev/null +++ b/resources/js/old-spork/Finance/Finance.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Groups.vue b/resources/js/old-spork/Finance/Groups.vue new file mode 100644 index 0000000..853af28 --- /dev/null +++ b/resources/js/old-spork/Finance/Groups.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/resources/js/old-spork/Finance/LinkAccount.vue b/resources/js/old-spork/Finance/LinkAccount.vue new file mode 100644 index 0000000..f9cc8f2 --- /dev/null +++ b/resources/js/old-spork/Finance/LinkAccount.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/resources/js/old-spork/Finance/Settings.vue b/resources/js/old-spork/Finance/Settings.vue new file mode 100644 index 0000000..4541f5d --- /dev/null +++ b/resources/js/old-spork/Finance/Settings.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/resources/js/old-spork/Group.vue b/resources/js/old-spork/Group.vue new file mode 100644 index 0000000..bf3dd71 --- /dev/null +++ b/resources/js/old-spork/Group.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Garage.vue b/resources/js/old-spork/Maintenance/Garage.vue new file mode 100644 index 0000000..229c764 --- /dev/null +++ b/resources/js/old-spork/Maintenance/Garage.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Maintenance.vue b/resources/js/old-spork/Maintenance/Maintenance.vue new file mode 100644 index 0000000..f8a942a --- /dev/null +++ b/resources/js/old-spork/Maintenance/Maintenance.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/resources/js/old-spork/Maintenance/Properties.vue b/resources/js/old-spork/Maintenance/Properties.vue new file mode 100644 index 0000000..de856f7 --- /dev/null +++ b/resources/js/old-spork/Maintenance/Properties.vue @@ -0,0 +1,173 @@ + + + diff --git a/resources/js/old-spork/News/Articles.vue b/resources/js/old-spork/News/Articles.vue new file mode 100644 index 0000000..d6b7a71 --- /dev/null +++ b/resources/js/old-spork/News/Articles.vue @@ -0,0 +1,81 @@ + + + diff --git a/resources/js/old-spork/People/People.vue b/resources/js/old-spork/People/People.vue new file mode 100644 index 0000000..471eb75 --- /dev/null +++ b/resources/js/old-spork/People/People.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/resources/js/old-spork/Profile/UserAccount.vue b/resources/js/old-spork/Profile/UserAccount.vue new file mode 100644 index 0000000..c315a54 --- /dev/null +++ b/resources/js/old-spork/Profile/UserAccount.vue @@ -0,0 +1,267 @@ + + diff --git a/resources/js/old-spork/Recipes/AllRecipes.vue b/resources/js/old-spork/Recipes/AllRecipes.vue new file mode 100644 index 0000000..fffdd18 --- /dev/null +++ b/resources/js/old-spork/Recipes/AllRecipes.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/Food.vue b/resources/js/old-spork/Recipes/Food.vue new file mode 100644 index 0000000..2369413 --- /dev/null +++ b/resources/js/old-spork/Recipes/Food.vue @@ -0,0 +1,91 @@ + + + diff --git a/resources/js/old-spork/Recipes/Generic.vue b/resources/js/old-spork/Recipes/Generic.vue new file mode 100644 index 0000000..4ac6100 --- /dev/null +++ b/resources/js/old-spork/Recipes/Generic.vue @@ -0,0 +1,28 @@ + + diff --git a/resources/js/old-spork/Recipes/Ingredients.vue b/resources/js/old-spork/Recipes/Ingredients.vue new file mode 100644 index 0000000..a262b3b --- /dev/null +++ b/resources/js/old-spork/Recipes/Ingredients.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/Recipe.vue b/resources/js/old-spork/Recipes/Recipe.vue new file mode 100644 index 0000000..1dfc8dc --- /dev/null +++ b/resources/js/old-spork/Recipes/Recipe.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/resources/js/old-spork/Recipes/SingleRecipe.vue b/resources/js/old-spork/Recipes/SingleRecipe.vue new file mode 100644 index 0000000..3c7841c --- /dev/null +++ b/resources/js/old-spork/Recipes/SingleRecipe.vue @@ -0,0 +1,44 @@ + + + diff --git a/resources/js/old-spork/Recipes/ViewRecipe.vue b/resources/js/old-spork/Recipes/ViewRecipe.vue new file mode 100644 index 0000000..f3e37e3 --- /dev/null +++ b/resources/js/old-spork/Recipes/ViewRecipe.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/resources/js/old-spork/Reminders.vue b/resources/js/old-spork/Reminders.vue new file mode 100644 index 0000000..2c6c2af --- /dev/null +++ b/resources/js/old-spork/Reminders.vue @@ -0,0 +1,227 @@ + + + diff --git a/resources/js/old-spork/Research/Dashboard.vue b/resources/js/old-spork/Research/Dashboard.vue new file mode 100644 index 0000000..5cd17d7 --- /dev/null +++ b/resources/js/old-spork/Research/Dashboard.vue @@ -0,0 +1,133 @@ + + + diff --git a/resources/js/old-spork/Research/Research.vue b/resources/js/old-spork/Research/Research.vue new file mode 100644 index 0000000..232b3ee --- /dev/null +++ b/resources/js/old-spork/Research/Research.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/resources/js/old-spork/Research/RssManager.vue b/resources/js/old-spork/Research/RssManager.vue new file mode 100644 index 0000000..c13227d --- /dev/null +++ b/resources/js/old-spork/Research/RssManager.vue @@ -0,0 +1,10 @@ + + + diff --git a/resources/js/old-spork/Research/Topic.vue b/resources/js/old-spork/Research/Topic.vue new file mode 100644 index 0000000..e5a5aa1 --- /dev/null +++ b/resources/js/old-spork/Research/Topic.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/resources/js/old-spork/Servers/Dashboard.vue b/resources/js/old-spork/Servers/Dashboard.vue new file mode 100644 index 0000000..a4fea73 --- /dev/null +++ b/resources/js/old-spork/Servers/Dashboard.vue @@ -0,0 +1,63 @@ + + + diff --git a/resources/js/old-spork/Servers/Servers.vue b/resources/js/old-spork/Servers/Servers.vue new file mode 100644 index 0000000..0a86e24 --- /dev/null +++ b/resources/js/old-spork/Servers/Servers.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/resources/js/old-spork/Servers/Services.vue b/resources/js/old-spork/Servers/Services.vue new file mode 100644 index 0000000..92220e9 --- /dev/null +++ b/resources/js/old-spork/Servers/Services.vue @@ -0,0 +1,62 @@ + + + diff --git a/resources/js/old-spork/Settings/Settings.vue b/resources/js/old-spork/Settings/Settings.vue new file mode 100644 index 0000000..720a4f9 --- /dev/null +++ b/resources/js/old-spork/Settings/Settings.vue @@ -0,0 +1,71 @@ + + + diff --git a/resources/js/old-spork/Setup.vue b/resources/js/old-spork/Setup.vue new file mode 100644 index 0000000..49b0918 --- /dev/null +++ b/resources/js/old-spork/Setup.vue @@ -0,0 +1,399 @@ + + + diff --git a/resources/js/old-spork/Shopping/Cart.vue b/resources/js/old-spork/Shopping/Cart.vue new file mode 100644 index 0000000..48f2dcf --- /dev/null +++ b/resources/js/old-spork/Shopping/Cart.vue @@ -0,0 +1,53 @@ + + + diff --git a/resources/js/old-spork/Shopping/PastOrders.vue b/resources/js/old-spork/Shopping/PastOrders.vue new file mode 100644 index 0000000..49a5c61 --- /dev/null +++ b/resources/js/old-spork/Shopping/PastOrders.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/js/old-spork/Shopping/Shopping.vue b/resources/js/old-spork/Shopping/Shopping.vue new file mode 100644 index 0000000..e97e93b --- /dev/null +++ b/resources/js/old-spork/Shopping/Shopping.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/resources/js/old-spork/Shopping/Store.vue b/resources/js/old-spork/Shopping/Store.vue new file mode 100644 index 0000000..96d00fc --- /dev/null +++ b/resources/js/old-spork/Shopping/Store.vue @@ -0,0 +1,90 @@ + + + diff --git a/resources/js/old-spork/Shopping/components/OrderRow.vue b/resources/js/old-spork/Shopping/components/OrderRow.vue new file mode 100644 index 0000000..b594d4e --- /dev/null +++ b/resources/js/old-spork/Shopping/components/OrderRow.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/resources/js/old-spork/Shopping/components/StoreItem.vue b/resources/js/old-spork/Shopping/components/StoreItem.vue new file mode 100644 index 0000000..b4889f5 --- /dev/null +++ b/resources/js/old-spork/Shopping/components/StoreItem.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/resources/js/old-spork/SpeechTagging.vue b/resources/js/old-spork/SpeechTagging.vue new file mode 100644 index 0000000..e288d69 --- /dev/null +++ b/resources/js/old-spork/SpeechTagging.vue @@ -0,0 +1,150 @@ + + diff --git a/resources/js/ziggy.js b/resources/js/ziggy.js index 74d5f8a..f83eaf3 100644 --- a/resources/js/ziggy.js +++ b/resources/js/ziggy.js @@ -1,4 +1,4 @@ -const Ziggy = {"url":"http:\/\/localhost","port":null,"defaults":{},"routes":{"dusk.login":{"uri":"_dusk\/login\/{userId}\/{guard?}","methods":["GET","HEAD"]},"dusk.logout":{"uri":"_dusk\/logout\/{guard?}","methods":["GET","HEAD"]},"dusk.user":{"uri":"_dusk\/user\/{guard?}","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"password.request":{"uri":"forgot-password","methods":["GET","HEAD"]},"password.reset":{"uri":"reset-password\/{token}","methods":["GET","HEAD"]},"password.email":{"uri":"forgot-password","methods":["POST"]},"password.update":{"uri":"reset-password","methods":["POST"]},"register":{"uri":"register","methods":["GET","HEAD"]},"verification.notice":{"uri":"email\/verify","methods":["GET","HEAD"]},"verification.verify":{"uri":"email\/verify\/{id}\/{hash}","methods":["GET","HEAD"]},"verification.send":{"uri":"email\/verification-notification","methods":["POST"]},"user-profile-information.update":{"uri":"user\/profile-information","methods":["PUT"]},"user-password.update":{"uri":"user\/password","methods":["PUT"]},"password.confirmation":{"uri":"user\/confirmed-password-status","methods":["GET","HEAD"]},"password.confirm":{"uri":"user\/confirm-password","methods":["POST"]},"two-factor.login":{"uri":"two-factor-challenge","methods":["GET","HEAD"]},"two-factor.enable":{"uri":"user\/two-factor-authentication","methods":["POST"]},"two-factor.confirm":{"uri":"user\/confirmed-two-factor-authentication","methods":["POST"]},"two-factor.disable":{"uri":"user\/two-factor-authentication","methods":["DELETE"]},"two-factor.qr-code":{"uri":"user\/two-factor-qr-code","methods":["GET","HEAD"]},"two-factor.secret-key":{"uri":"user\/two-factor-secret-key","methods":["GET","HEAD"]},"two-factor.recovery-codes":{"uri":"user\/two-factor-recovery-codes","methods":["GET","HEAD"]},"horizon.stats.index":{"uri":"horizon\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"horizon\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"horizon\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"horizon\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"horizon\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["GET","HEAD"]},"horizon.monitoring-tag.destroy":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"}},"horizon.jobs-metrics.index":{"uri":"horizon\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"horizon\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.queues-metrics.index":{"uri":"horizon\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"horizon\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.index":{"uri":"horizon\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"horizon\/api\/batches\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.retry":{"uri":"horizon\/api\/batches\/retry\/{id}","methods":["POST"]},"horizon.pending-jobs.index":{"uri":"horizon\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"horizon\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"horizon\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"horizon\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"horizon\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"]},"horizon.retry-jobs.show":{"uri":"horizon\/api\/jobs\/retry\/{id}","methods":["POST"]},"horizon.jobs.show":{"uri":"horizon\/api\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.index":{"uri":"horizon\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"}},"profile.show":{"uri":"user\/profile","methods":["GET","HEAD"]},"other-browser-sessions.destroy":{"uri":"user\/other-browser-sessions","methods":["DELETE"]},"current-user-photo.destroy":{"uri":"user\/profile-photo","methods":["DELETE"]},"current-user.destroy":{"uri":"user","methods":["DELETE"]},"api-tokens.index":{"uri":"user\/api-tokens","methods":["GET","HEAD"]},"api-tokens.store":{"uri":"user\/api-tokens","methods":["POST"]},"api-tokens.update":{"uri":"user\/api-tokens\/{token}","methods":["PUT"]},"api-tokens.destroy":{"uri":"user\/api-tokens\/{token}","methods":["DELETE"]},"teams.create":{"uri":"teams\/create","methods":["GET","HEAD"]},"teams.store":{"uri":"teams","methods":["POST"]},"teams.show":{"uri":"teams\/{team}","methods":["GET","HEAD"]},"teams.update":{"uri":"teams\/{team}","methods":["PUT"]},"teams.destroy":{"uri":"teams\/{team}","methods":["DELETE"]},"current-team.update":{"uri":"current-team","methods":["PUT"]},"team-members.store":{"uri":"teams\/{team}\/members","methods":["POST"]},"team-members.update":{"uri":"teams\/{team}\/members\/{user}","methods":["PUT"]},"team-members.destroy":{"uri":"teams\/{team}\/members\/{user}","methods":["DELETE"]},"team-invitations.accept":{"uri":"team-invitations\/{invitation}","methods":["GET","HEAD"]},"team-invitations.destroy":{"uri":"team-invitations\/{invitation}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"abstract_model_id.index":{"uri":"api\/{abstract_model}","methods":["GET","HEAD"]},"abstract_model_id.store":{"uri":"api\/{abstract_model}","methods":["POST"]},"abstract_model_id.fields":{"uri":"api\/{abstract_model}\/fields","methods":["GET","HEAD"]},"abstract_model_id.show":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["GET","HEAD"]},"abstract_model_id.update":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["PUT"]},"abstract_model_id.restore":{"uri":"api\/{abstract_model}\/{abstract_model_id}\/restore","methods":["POST"]},"abstract_model_id.destroy":{"uri":"api\/{abstract_model}\/{abstract_model_id}","methods":["DELETE"]},"abstract_model_id.forceDestroy":{"uri":"api\/{abstract_model}\/{abstract_model_id}\/force","methods":["DELETE"]},"petoskey":{"uri":"\/","methods":["GET","HEAD"],"domain":"petoskey.today"},"dashboard":{"uri":"dashboard","methods":["GET","HEAD"],"domain":"spork.localhost"},"projects":{"uri":"projects","methods":["GET","HEAD"],"domain":"spork.localhost"},"projects.show":{"uri":"projects\/{project}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"project":"id"}},"pages":{"uri":"pages\/create","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers":{"uri":"servers","methods":["GET","HEAD"],"domain":"spork.localhost"},"credentials":{"uri":"credentials","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers.show":{"uri":"servers\/{server}","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains":{"uri":"domains","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains.show":{"uri":"domains\/{domain}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"domain":"id"}}}}; +const Ziggy = {"url":"http:\/\/localhost","port":null,"defaults":{},"routes":{"dusk.login":{"uri":"_dusk\/login\/{userId}\/{guard?}","methods":["GET","HEAD"]},"dusk.logout":{"uri":"_dusk\/logout\/{guard?}","methods":["GET","HEAD"]},"dusk.user":{"uri":"_dusk\/user\/{guard?}","methods":["GET","HEAD"]},"login":{"uri":"login","methods":["GET","HEAD"]},"logout":{"uri":"logout","methods":["POST"]},"password.request":{"uri":"forgot-password","methods":["GET","HEAD"]},"password.reset":{"uri":"reset-password\/{token}","methods":["GET","HEAD"]},"password.email":{"uri":"forgot-password","methods":["POST"]},"password.update":{"uri":"reset-password","methods":["POST"]},"verification.notice":{"uri":"email\/verify","methods":["GET","HEAD"]},"verification.verify":{"uri":"email\/verify\/{id}\/{hash}","methods":["GET","HEAD"]},"verification.send":{"uri":"email\/verification-notification","methods":["POST"]},"user-profile-information.update":{"uri":"user\/profile-information","methods":["PUT"]},"user-password.update":{"uri":"user\/password","methods":["PUT"]},"password.confirmation":{"uri":"user\/confirmed-password-status","methods":["GET","HEAD"]},"password.confirm":{"uri":"user\/confirm-password","methods":["POST"]},"two-factor.login":{"uri":"two-factor-challenge","methods":["GET","HEAD"]},"two-factor.enable":{"uri":"user\/two-factor-authentication","methods":["POST"]},"two-factor.confirm":{"uri":"user\/confirmed-two-factor-authentication","methods":["POST"]},"two-factor.disable":{"uri":"user\/two-factor-authentication","methods":["DELETE"]},"two-factor.qr-code":{"uri":"user\/two-factor-qr-code","methods":["GET","HEAD"]},"two-factor.secret-key":{"uri":"user\/two-factor-secret-key","methods":["GET","HEAD"]},"two-factor.recovery-codes":{"uri":"user\/two-factor-recovery-codes","methods":["GET","HEAD"]},"horizon.stats.index":{"uri":"horizon\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"horizon\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"horizon\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"horizon\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"horizon\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["GET","HEAD"]},"horizon.monitoring-tag.destroy":{"uri":"horizon\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"}},"horizon.jobs-metrics.index":{"uri":"horizon\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"horizon\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.queues-metrics.index":{"uri":"horizon\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"horizon\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.index":{"uri":"horizon\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"horizon\/api\/batches\/{id}","methods":["GET","HEAD"]},"horizon.jobs-batches.retry":{"uri":"horizon\/api\/batches\/retry\/{id}","methods":["POST"]},"horizon.pending-jobs.index":{"uri":"horizon\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"horizon\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"horizon\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"horizon\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"horizon\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"]},"horizon.retry-jobs.show":{"uri":"horizon\/api\/jobs\/retry\/{id}","methods":["POST"]},"horizon.jobs.show":{"uri":"horizon\/api\/jobs\/{id}","methods":["GET","HEAD"]},"horizon.index":{"uri":"horizon\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"}},"profile.show":{"uri":"user\/profile","methods":["GET","HEAD"]},"other-browser-sessions.destroy":{"uri":"user\/other-browser-sessions","methods":["DELETE"]},"current-user-photo.destroy":{"uri":"user\/profile-photo","methods":["DELETE"]},"current-user.destroy":{"uri":"user","methods":["DELETE"]},"api-tokens.index":{"uri":"user\/api-tokens","methods":["GET","HEAD"]},"api-tokens.store":{"uri":"user\/api-tokens","methods":["POST"]},"api-tokens.update":{"uri":"user\/api-tokens\/{token}","methods":["PUT"]},"api-tokens.destroy":{"uri":"user\/api-tokens\/{token}","methods":["DELETE"]},"teams.create":{"uri":"teams\/create","methods":["GET","HEAD"]},"teams.store":{"uri":"teams","methods":["POST"]},"teams.show":{"uri":"teams\/{team}","methods":["GET","HEAD"]},"teams.update":{"uri":"teams\/{team}","methods":["PUT"]},"teams.destroy":{"uri":"teams\/{team}","methods":["DELETE"]},"current-team.update":{"uri":"current-team","methods":["PUT"]},"team-members.store":{"uri":"teams\/{team}\/members","methods":["POST"]},"team-members.update":{"uri":"teams\/{team}\/members\/{user}","methods":["PUT"]},"team-members.destroy":{"uri":"teams\/{team}\/members\/{user}","methods":["DELETE"]},"team-invitations.accept":{"uri":"team-invitations\/{invitation}","methods":["GET","HEAD"]},"team-invitations.destroy":{"uri":"team-invitations\/{invitation}","methods":["DELETE"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"abstract_model_id.index":{"uri":"api\/crud\/{abstract_model}","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.store":{"uri":"api\/crud\/{abstract_model}","methods":["POST"],"domain":"spork.localhost"},"abstract_model_id.fields":{"uri":"api\/crud\/{abstract_model}\/fields","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.show":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["GET","HEAD"],"domain":"spork.localhost"},"abstract_model_id.update":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["PUT"],"domain":"spork.localhost"},"abstract_model_id.restore":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}\/restore","methods":["POST"],"domain":"spork.localhost"},"abstract_model_id.destroy":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}","methods":["DELETE"],"domain":"spork.localhost"},"abstract_model_id.forceDestroy":{"uri":"api\/crud\/{abstract_model}\/{abstract_model_id}\/force","methods":["DELETE"],"domain":"spork.localhost"},"petoskey":{"uri":"\/","methods":["GET","HEAD"],"domain":"petoskey.localhost"},"welcome":{"uri":"\/","methods":["GET","HEAD"],"domain":"spork.localhost"},"dashboard":{"uri":"dashboard","methods":["GET","HEAD"],"domain":"spork.localhost"},"crud":{"uri":"{link}","methods":["GET","HEAD"],"wheres":{"link":"(projects|pages|people|servers|domains|tags|scripts|research|credentials|articles)"},"domain":"spork.localhost"},"projects.show":{"uri":"projects\/{project}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"project":"id"}},"pages":{"uri":"pages\/create","methods":["GET","HEAD"],"domain":"spork.localhost"},"servers.show":{"uri":"servers\/{server}","methods":["GET","HEAD"],"domain":"spork.localhost"},"domains.show":{"uri":"domains\/{domain}","methods":["GET","HEAD"],"domain":"spork.localhost","bindings":{"domain":"id"}},"user.api-query":{"uri":"user\/api-query","methods":["GET","HEAD"],"domain":"spork.localhost"},"project.deploy":{"uri":"project\/{project}\/deploy","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"project.attach":{"uri":"project\/{project}\/attach","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"project.detach":{"uri":"project\/{project}\/detach","methods":["POST"],"domain":"spork.localhost","bindings":{"project":"id"}},"register-device":{"uri":"register-device","methods":["POST"],"domain":"spork.localhost"},"admin":{"uri":"admin","methods":["GET","HEAD"],"domain":"spork.localhost"}}}; if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') { Object.assign(Ziggy.routes, window.Ziggy.routes); diff --git a/resources/node/index.js b/resources/node/index.js new file mode 100644 index 0000000..534b6a3 --- /dev/null +++ b/resources/node/index.js @@ -0,0 +1,65 @@ +import dialogflow from '@google-cloud/dialogflow'; + +// Instantiates a session client +const sessionClient = new dialogflow.SessionsClient(); + +async function detectIntent( + query, + contexts, +) { + const projectId = 'kb-computers-llc--143019'; +// sessionId: String representing a random number or hashed user identifier + const sessionId = '505049310'; + const languageCode = 'en'; + + + // The path to identify the agent that owns the created intent. + const sessionPath = sessionClient.projectAgentSessionPath( + projectId, + sessionId + ); + + // The text query request. + const request = { + session: sessionPath, + queryInput: { + text: { + text: query, + languageCode: languageCode, + }, + }, + }; + + if (contexts && contexts.length > 0) { + request.queryParams = { + contexts: contexts, + }; + } + + const responses = await sessionClient.detectIntent(request); + return responses[0]; +} + +export default detectIntent; + + +const run = async () => { + let context; + let intentResponse; + + try { + console.log(`Sending Query: ${query}`); + intentResponse = await detectIntent( + query, + context, + ); + console.log('Detected intent'); + console.log( + `Fulfillment Text: ${intentResponse.queryResult.fulfillmentText}`, intentResponse + ); + // Use the context from this response for next queries + context = intentResponse.queryResult.outputContexts; + } catch (error) { + console.log(error); + } +} diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php index 81bcd89..1cb28b2 100644 --- a/resources/views/app.blade.php +++ b/resources/views/app.blade.php @@ -1,5 +1,5 @@ - + @@ -15,7 +15,7 @@ @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead - + @inertia diff --git a/resources/views/basement-scripts/link-hypervisor.blade.php b/resources/views/basement-scripts/link-hypervisor.blade.php new file mode 100644 index 0000000..aa0626c --- /dev/null +++ b/resources/views/basement-scripts/link-hypervisor.blade.php @@ -0,0 +1,129 @@ +#!/bin/bash +set -xe +# Post-create Hypervisor linking script. +# We should have access to the hypervisor variable here to be able to dispatch a put request from the server. + +# Steps +# 1. Setup SSH +# 2. Get disk size +# 3. Get available memory +# 4. Get available IPs +# 5. Create the server record via CURL. +# 6. Install node +# 6-1. Curl step update for the server. +# 7. Install Metrics +# 7-1. Curl step update for the server. +# 8. Connect to socket IO and start pumping out live installation output +# 9. Run the post-install steps. + +# Set up SSH key (initial generation, and posting to our server) +# Get main disk size +# Get available memory +# Get all available IP configurations (At least need public and private IPs) + +apt_install_prereqs() { +apt-get install -y curl openssh-client jq virt-what +} + +yum_install_prereqs() { +curl -sL https://rpm.nodesource.com/setup_12.x | bash - + +yum install curl openssh-client jq virt-what +} + +apt_install_node() { +apt-get remove -y node nodejs +curl -sL https://deb.nodesource.com/setup_12.x | bash - +apt-get update +apt-get install -y nodejs +} +yum_install_node() { +yum remove node nodejs +curl -sL https://rpm.nodesource.com/setup_12.x | bash - +yum update +yum install nodejs +} + +source /etc/os-release + +if [ -n "$(command -v apt-get)" ]; then +apt_install_prereqs +else +yum_install_prereqs +fi + +# The general idea for these bits here is that we should be getting the data from the server +# in a very general way. One that would allow this to work cross platform. +NAME=$(hostname -s) +PUBLIC_IP=$(curl {{ url('ip') }}) +INSTALL_DATE=$(ls -lact --time-style=long-iso /etc |awk 'END {print $6,$7}') +DISK_SIZE=$(df -h | awk '{print $4}' | head -2 | tail -1) +MEMORY_KB=$(cat /proc/meminfo | grep memtotal -i | awk '{print $2}') +MEMORY=$(($MEMORY_KB / 1024)) +KERNEL=$(uname -r) +CPU_THREADS=$(nproc --all) + +HYPERVISOR=$(virt-what) + +if [[ -z "$HYPERVISOR" ]]; then +echo "##########################################################################################################################" +echo "# ERROR:" +echo "# You do not have a hypervisor installed. Please install one before trying to run this command." +echo "# Suggestion:" +echo "# For Ubuntu you can use:" +echo " sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils" +echo "#" +echo "# For CentOS you can use:" +echo " yum -y install @virt* dejavu-lgc-* xorg-x11-xauth tigervnc libguestfs-tools policycoreutils-python bridge-utils" +echo " semanage fcontext -a -t virt_image_t "/vm(/.*)?"; restorecon -R /vm" +echo " sed -i 's/^\(net.ipv4.ip_forward =\).*/\1 1/' /etc/sysctl.conf; sysctl -p" +echo " chkconfig libvirtd on; shutdown -r now" +echo " chkconfig network on" +echo " service network restart" +echo " yum -y erase NetworkManager" +echo " cp -p /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}" +echo " sed -i -e'/HWADDR/d' -e'/UUID/d' -e's/eth0/br0/' -e's/Ethernet/Bridge/' /etc/sysconfig/network-scripts/ifcfg-br0" +echo " echo DELAY=0 >> /etc/sysconfig/network-scripts/ifcfg-br0" +echo " echo 'BOOTPROTO="none"' >> /etc/sysconfig/network-scripts/ifcfg-eth0" +echo " echo BRIDGE=br0 >> /etc/sysconfig/network-scripts/ifcfg-eth0" +echo " service network restart" +echo " brctl show" +echo "#" +echo "#########################################################################################################################w#" + exit 1; +fi + +# Creation link +SERVER=$(curl -X POST -H 'Content-type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer {!! $token->token !!}' --data "{!! addslashes(json_encode([ + 'name' => '$NAME', + 'ip_address' => '$PUBLIC_IP', + 'memory' => '$MEMORY', + 'disk' => '$DISK_SIZE', + 'host_created_at' => '$INSTALL_DATE', + 'kernel' => '$KERNEL', + 'distro' => '$NAME', + 'threads' => '$CPU_THREADS', +])) !!}" {{ route('servers.create-no-credential', [$credential->id]) }}) + +# The ssh key is generated on the instance of the basement being used. +SSH_PUBLIC_KEY=$(echo $SERVER | jq -r '.ssh_key_public') + +mkdir -p /root/.ssh +touch /root/.ssh/authorized_keys +echo $SSH_PUBLIC_KEY >> /root/.ssh/authorized_keys + +@if(request()->has('node') && (bool) request()->get('node')) + # Install node. + + if [ -n "$(command -v apt-get)" ]; then + apt_install_node + else + yum_install_node + fi + + @if (request()->has('metrics') && (bool) request()->get('metrics')) + # Install metrics client + {{--npm i -g @kbco/monitor--}} + {{--API_HOST={{ url('') }} API_TOKEN={{ $token->token }} monitor--}} + @endif +@endif diff --git a/resources/views/basement-scripts/link-server.blade.php b/resources/views/basement-scripts/link-server.blade.php new file mode 100644 index 0000000..419230c --- /dev/null +++ b/resources/views/basement-scripts/link-server.blade.php @@ -0,0 +1,119 @@ +@php + $route = function (...$params) { + return str_replace('link.','', route(...$params)); + }; + $url = function (...$params) { + return str_replace('link.','', url(...$params)); + }; +@endphp#!/bin/bash +set -ev +# Steps +# 1. Setup SSH +# 2. Get disk size +# 3. Get available memory +# 4. Get available IPs +# 5. Create the server record via CURL. +# 6. Install node +# 6-1. Curl step update for the server. +# 7. Install Metrics +# 7-1. Curl step update for the server. +# 8. Connect to socket IO and start pumping out live installation output +# 9. Run the post-install steps. + +# Set up SSH key (initial generation, and posting to our server) +# Get main disk size +# Get available memory +# Get all available IP configurations (At least need public and private IPs) + +export DEBIAN_FRONTEND=noninteractive + +apt_install_prereqs() { + apt-get install -y curl openssh-client jq +} + +yum_install_prereqs() { + curl -sL https://rpm.nodesource.com/setup_12.x | bash - + + yum install curl openssh-client jq +} + +apt_install_node() { + apt-get remove -y nodejs + curl -sL https://deb.nodesource.com/setup_12.x | bash - + apt-get update + apt-get install -y nodejs +} +yum_install_node() { + yum remove node nodejs + curl -sL https://rpm.nodesource.com/setup_12.x | bash - + yum update + yum install nodejs +} + +source /etc/lsb-release + +if [[ "$DISTRIB_ID" == "Ubuntu" ]]; then + apt_install_prereqs +else + yum_install_prereqs +fi + +# Creation link +SERVER_DATA() +{ + NAME=$(hostname -s | xargs) + PUBLIC_IP=$(curl "https://ipinfo.io/ip" | xargs) + DISK_SIZE=$(df -h | awk '{print $4}' | head -2 | tail -1 | xargs) + MEMORY_KB=$(cat /proc/meminfo | grep memtotal -i | awk '{print $2}') + MEMORY=$(echo $(($MEMORY_KB / 1024)) | xargs) + KERNEL=$(uname -r | xargs) + CPU_THREADS=$(nproc --all | xargs) + source /etc/lsb-release + cat < '$NAME', + 'ip_address' => '$PUBLIC_IP', + 'memory' => '$MEMORY', + 'disk' => '$DISK_SIZE', + 'host_created_at' => now()->format('Y-m-d H:i:s'), + 'kernel' => '$KERNEL', + 'distro' => '$DISTRIB_ID', + 'threads' => '$CPU_THREADS', +], JSON_PRETTY_PRINT) !!} +EOF +} + +SERVER=$(curl -X POST -H 'Authentication: Bearer {{ request()->header('') }}' -H 'Content-type: application/json' -H 'Accept: application/json' -d "$(SERVER_DATA)" -X POST {{ route('create-device') }}) + +echo "" +echo "$SERVER" +echo "" + +MESSAGE=$(echo $SERVER | jq -r ".message") +ERRORS=$(echo "$SERVER" | jq -r ".errors") +if [[ "$MESSAGE" != null ]]; then + clear + echo 'Error creating server.' + echo $SERVER; + echo "$(SERVER_DATA)" + echo "ERRORS: $MESSAGE" + exit 1; +fi +if [[ "$ERRORS" != null ]]; then + echo 'Error creating server.' + echo $SERVER; + echo "$(SERVER_DATA)" + echo "ERRORS: $ERRORS" + exit 1; +fi +SERVER=$(echo "$SERVER" | jq -r ".data") + +mkdir -p ~/.basement/logs + +echo "{ \"token\": \"$(echo "$SERVER" | jq -r ".access_token")\", \"user_id\": \"$(echo "SERVER" | jq -r ".user_id")\" }" > ~/.basement/config.json + +SSH_PUBLIC_KEY=$(echo $SERVER | jq -r '.`ssh_key_public`') + +mkdir -p /root/.ssh +touch /root/.ssh/authorized_keys +echo $SSH_PUBLIC_KEY >> /root/.ssh/authorized_keys diff --git a/routes/console.php b/routes/console.php index 174d7fd..189f8d6 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,3 +1,355 @@ getDriver(); + /** @var \League\Flysystem\Ftp\FtpAdapter $adapter */ + $adapter = $this->getAdapter(); + $adapter->customMethod = function ($path) { + $location = $this->prefixer()->prefixPath($path); + + if ($this->isPureFtpdServer) { + $location = $this->escapePath($location); + } + + $object = ftp_raw($this->connection(), 'STAT ' . Str::ascii($location)); + if (empty($object) || count($object) < 3 || substr($object[1], 0, 5) === "ftpd:") { + $object = ftp_raw($this->connection(), 'STAT ' . $this->escapePath($location)); + } + + if (empty($object) || count($object) < 3 || substr($object[1], 0, 5) === "ftpd:") { + dd($object, error_get_last()); + throw UnableToRetrieveMetadata::create($path, '', error_get_last()['message'] ?? ''); + } + + $item = $object[1]; + $item = preg_replace('#\s+#', ' ', trim($item), 7); + $parts = explode(' ', $item, 9); + [$permissions, $number, $owner, $group, $size, $month, $day, $timeOrYear, $path] = $parts; + $permissions = $this->normalizePermissions($permissions); + $metadata = compact( + 'permissions', + 'number', + 'owner', + 'group', + 'size', + 'month', + 'day', + 'timeOrYear', + 'path' + ); + + $metadata['last_modified'] = $this->normalizeUnixTimestamp($month, $day, $timeOrYear); + + return $metadata; + }; + return $adapter->customMethod->bindTo($adapter)->call($adapter, $path); + }); + + $folders = [ + '/Shows', + '/Music', + '/Movies', + '/Downloads', + ]; + + $folderCount = count($folders); + foreach ($folders as $i => $folder) { + $this->info("Processing folder: $i/$folderCount - $folder"); + $files = $storage->allFiles($folder); + $this->info("Found files: ".$count = count($files)); + /** @var \Symfony\Component\Console\Helper\ProgressBar $bar */ + $bar = $this->output->createProgressBar($count); + $bar->clear(); + $bar->display(); + foreach ($files as $file) { + [ + 'size' => $size, + 'last_modified' => $last_modified, + ] = $storage->information($file); + + try { + $file = \App\Models\File::firstOrCreate([ + 'pretty_name' => Str::ascii(basename($file)), + 'name' => Str::ascii(basename($file)), + 'path' => trim($file), + ], [ + 'size' => $size, + 'path' => trim($file), + 'ascii_path' => Str::ascii(trim($file)), + 'last_modified' => \Carbon\Carbon::parse($last_modified), + ]); + + if (\Carbon\Carbon::parse($last_modified)->format('Y-m-d H:i:s') !== \Carbon\Carbon::parse($file->last_modified)->format('Y-m-d H:i:s')) { + $file->last_modified = \Carbon\Carbon::parse($last_modified); + } + + if ($size !== $file->size) { + $file->size = $size; + } + + if ($file->isDirty()) { + $file->save(); + } + } catch (\Throwable $e) { + dd($file, $e,); + } + + $bar->advance(); + } + $bar->finish(); + } +}); + +Artisan::command('file-check', function () { + $page = 1; + $qualities = [ + 0 => 'Unknown', +1 => 'SDTV', +2 => 'DVD', +3 => 'WEBDL-1080p', +4 => 'HDTV-720p', +5 => 'WEBDL-720p', +6 => 'Bluray-720p', +7 => 'Bluray-1080p', +8 => 'WEBDL-480p', +9 => 'HDTV-1080p', +10 => 'Raw-HD', +12 => 'WEBRip-480p', +13 => 'Bluray-480p', +14 => 'WEBRip-720p', +15 => 'WEBRip-1080p', +16 => 'HDTV-2160p', +17 => 'WEBRip-2160p', +18 => 'WEBDL-2160p', +19 => 'Bluray-2160p', +20 => 'Bluray-1080p Remux', +21 => 'Bluray-2160p Remux', + +]; + + do { + $series = App\Models\Sqlite\Episode::query()->with('file', 'series')->paginate(100, ['*'], 'page', $page++); + + foreach ($series as $show) { + // $path = str_replace('/volume1', '', $show->Path); + foreach ([$show->file] as $file) { + if (empty($file)) { + continue; + } + + + $parts = explode('.', $file->RelativePath); + $extension = end($parts); + + $season = $show->SeasonNumber ? 'Season ' . $show->SeasonNumber : null; + + $seasonNumber = $show->SeasonNumber < 10 ? '0' . $show->SeasonNumber : $show->SeasonNumber; + $episodeNumber = $show->EpisodeNumber < 10 ? '0' . $show->EpisodeNumber : $show->EpisodeNumber; + + $quality = $qualities[json_decode($file->Quality, true)['quality']]; + + $episodeName = sprintf('%s - S%sE%s - %s %s.%s', $show->series->Title, $seasonNumber, $episodeNumber, $show->Title, $quality, $extension); + + $standardPath = '/Shows/' . implode('/', array_filter([ + $show->series->Title, + $season, + $episodeName, + ])); + + $isAnime = json_decode($file->MediaInfo)->videoFps <= 25; + $audioLanguages = json_decode($file->MediaInfo)->audioLanguages; + $subtitledLanguages = json_decode($file->MediaInfo)->subtitles; + + if ($isAnime && empty($audioLanguages)) { + $audioLanguages = 'Japanese'; + } elseif (!$isAnime && empty($audioLanguages)) { + $audioLanguages = 'English'; + } + + + $actualPath = str_replace('/volume1', '', $show->series->Path) . '/' . $file->RelativePath; + + if ($standardPath == $actualPath) { + continue; + } + + dd($show, $audioLanguages, $subtitledLanguages, $standardPath, $actualPath); + + Storage::disk('ftp')->move(); + dd($show, Storage::disk('ftp')->exists()); + } + } + } while ($series->hasMorePages()); +}); + +Artisan::command('socialite:discover', function () { + // discover installed socialite providers. +// $autoload = require './vendor/autoload.php'; +// +// $providers = []; +// +// foreach ($autoload->getClassMap() as $class => $location) { +// if (str_contains($location, 'symfony')) { +// continue; +// } +// +// if (str_contains($class, 'Provider')) { +// $implementations = class_implements_recursive($class); +// if (in_array(\Laravel\Socialite\Two\ProviderInterface::class, $implementations)) { +// $providers = array_merge($providers, $implementations); +// } +// } +// } + $files = collect(json_decode(file_get_contents(base_path('composer.lock')))->packages) + ->filter(function ($jsonFile) { + if (isset($jsonFile->name)) { + if ($jsonFile->name === 'socialiteproviders/manager') { + return true; + } + } + + if (isset($jsonFile->require)) { + return isset($jsonFile->require->{'socialiteproviders/manager'}); + } + if (isset($jsonFile->{'require-dev'})) { + return isset($jsonFile->{'require-dev'}->{'socialiteproviders/manager'}); + } + + return false; + }); + + $allFiles = \App\Services\Code::composerMappedClasses(); + $installed = $files->map(function ($contents) use ($allFiles) { + $namespaces = $contents->autoload->{'psr-4'}; + + + return [ + 'name' => $contents->name, + 'description' => $contents->description, + 'version' => $contents->version, + 'time' => \Carbon\Carbon::parse($contents->time)->format('F j, Y H:i:s'), + 'installed' => true, + 'drivers' => collect($allFiles) + ->filter(function($value, $class) use ($namespaces) { + foreach ($namespaces as $psr4Namespace => $sourceFolder) { + if (str_starts_with($class, $psr4Namespace)) { + return true; + } + } + + return false; + }) + ->map(function ($filePath, $class) { + $contentsOfFile = (file_get_contents($filePath)); + preg_match('/extendSocialite..([\w]+)\'./i', $contentsOfFile , $matches); + if (!isset($matches[1])) { + return null; + } + + return $matches[1]; + })->filter(), + ]; + })->values(); + $page = 1; + $installedNames = $installed->map->name; + + $uninstalled = []; + do { + $response = \Illuminate\Support\Facades\Http::get('https://packagist.org/search.json?q=socialiteproviders&per_page=100&page='.$page++)->json(); + $paginator = new \Illuminate\Pagination\LengthAwarePaginator( + $response['results'], + $response['total'], + 100, + $page - 1, + ); + + foreach ($paginator->items() as $provider) { + if ($installedNames->contains($provider['name'])) { + continue; + } + + $uninstalled[] = [ + 'name' => $provider['name'], + 'description' => $provider['description'], + 'downloads' => $provider['downloads'], + 'installed' => false, + ]; + } + } while ($paginator->hasMorePages()); + + // We need a way to add the handle method to the event service provider. + // Also, we might want to change how we identify enabled/disabled values. + file_put_contents(storage_path('provider-information.json'), json_encode([ + 'installed' => $installed, + 'notInstalled' => collect($uninstalled)->sortByDesc('downloads')->values(), + ])); +}); + +//Artisan::command('test', function () { +// $client = new \App\Services\Matrix\MatrixClient('beeper@kregel.email', 'beeper.com', ); +// +// +// dd($client->discover()); +// $request = $client->requestCodeForBeeper('beeper@kregel.email'); +// $request = $client->loginWithBeeperCode('beeper@kregel.email', '741408'); +// $request = $client->loginWithJwt(""); +// dd($request,); //$client->discover()); +// $filesystem = new \Illuminate\Filesystem\Filesystem(); +// $entities = collect($filesystem->allFiles(storage_path('entities'))) +// ->map(function (SplFileInfo $e) { +// return $e->getFilename(); +// })->sort(); +// $intents = collect($filesystem->allFiles(storage_path('intents'))) +// ->map(function (SplFileInfo $e) { +// return $e->getFilename(); +// })->filter(fn ($fileName) => !\Illuminate\Support\Str::contains($fileName, [' ', '_', '-'])); +// +// dd($entities, $intents); +//}); + +Artisan::command('yet-another', function () { + + $models = \App\Services\Code::instancesOf(App\Models\Crud::class); + + $crudClasses = $models->getClasses(); + + dd(array_map(fn ($class) => \Illuminate\Support\Str::slug(\Illuminate\Support\Str::headline((new $class)->getTable())), $crudClasses)); +}); + +Artisan::command('more-test', function () { + dd( + route(((new \App\Models\Page())->getTable().'.store')) + ); +}); + +Artisan::command('inbox', function () { + $mailbox = new PhpImap\Mailbox( + sprintf('{'.env('IMAP_HOST').':'.env('IMAP_PORT').'/imap/'.env('IMAP_ENCRYPTION', 'notls').'}INBOX'), // IMAP server and mailbox folder + env('IMAP_USERNAME'), // Username for the before configured mailbox + env('IMAP_PASSWORD'), // Password for the before configured username + storage_path(), // Directory, where attachments will be saved (optional) + 'UTF-8', // Server encoding (optional) + true, // Trim leading/ending whitespaces of IMAP path (optional) + false // Attachment filename mode (optional; false = random filename; true = original filename) + ); + + try { + // Get all emails (messages) + // PHP.net imap_search criteria: http://php.net/manual/en/function.imap-search.php + + dd($mailsIds); + } catch(PhpImap\Exceptions\ConnectionException $ex) { + echo "IMAP connection failed: " . implode(",", $ex->getErrors('all')); + die(); + } + + dd($mailboxes); +}); diff --git a/routes/crud.php b/routes/crud.php index 89b8370..e3bdcaf 100644 --- a/routes/crud.php +++ b/routes/crud.php @@ -5,22 +5,45 @@ use Illuminate\Support\Facades\Route; if (! function_exists('developerRoute')) { - function developerRoute($name) + function developerRoute($name, $model) { - Route::get('{abstract_model}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'index'])->name($name.'.index'); - Route::post('{abstract_model}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'store'])->name($name.'.store'); - Route::get('{abstract_model}/fields', [\App\Http\Controllers\Spork\LocalAdminController::class, 'fields'])->name($name.'.fields'); - Route::get('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'show'])->name($name.'.show'); - // Updating - Route::put('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update'])->name($name.'.update'); - Route::patch('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update']); - // Restoring - Route::post('{abstract_model}/{'.$name.'}/restore', [\App\Http\Controllers\Spork\LocalAdminController::class, 'restore'])->name($name.'.restore'); - // Soft-deleting - Route::delete('{abstract_model}/{'.$name.'}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'destroy'])->name($name.'.destroy'); - // Force delete - Route::delete('{abstract_model}/{'.$name.'}/force', [\App\Http\Controllers\Spork\LocalAdminController::class, 'forceDestroy'])->name($name.'.forceDestroy'); + cache()->rememberForever($name, fn () => $model); + + Route::prefix('crud')->group(function () use ($name){ + Route::get($name, [\App\Http\Controllers\Spork\LocalAdminController::class, 'index'])->name($name . '.index'); + + Route::post($name.'', [\App\Http\Controllers\Spork\LocalAdminController::class, 'store'])->name($name . '.store'); + Route::get($name.'/fields', [\App\Http\Controllers\Spork\LocalAdminController::class, 'fields'])->name($name . '.fields'); + Route::get($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'show'])->name($name . '.show'); + // Updating + Route::put($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update'])->name($name . '.update'); + Route::patch($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'update']); + // Restoring + Route::post($name.'/{' . $name . '}/restore', [\App\Http\Controllers\Spork\LocalAdminController::class, 'restore'])->name($name . '.restore'); + // Soft-deleting + Route::delete($name.'/{' . $name . '}', [\App\Http\Controllers\Spork\LocalAdminController::class, 'destroy'])->name($name . '.destroy'); + // Force delete + Route::delete($name.'/{' . $name . '}/force', [\App\Http\Controllers\Spork\LocalAdminController::class, 'forceDestroy'])->name($name . '.forceDestroy'); + }); } } -developerRoute('abstract_model_id'); +developerRoute('accounts', App\Models\Finance\Account::class); +developerRoute('articles', App\Models\Article::class); +developerRoute('budgets', App\Models\Finance\Budget::class); +developerRoute('conditions', App\Models\Condition::class); +developerRoute('credentials', App\Models\Credential::class); +developerRoute('domains', App\Models\Domain::class); +developerRoute('external_rss_feeds', App\Models\ExternalRssFeed::class); +developerRoute('messages', App\Models\Message::class); +developerRoute('navigations', App\Models\Navigation::class); +developerRoute('pages', App\Models\Page::class); +developerRoute('people', App\Models\Person::class); +developerRoute('projects', App\Models\Project::class); +developerRoute('research', App\Models\Research::class); +developerRoute('scripts', App\Models\Spork\Script::class); +developerRoute('servers', App\Models\Server::class); +developerRoute('tags', App\Models\Tag::class); +developerRoute('threads', App\Models\Thread::class); +developerRoute('transactions', App\Models\Finance\Transaction::class); +developerRoute('users', App\Models\User::class); diff --git a/routes/pages/deploy.php b/routes/pages/deploy.php new file mode 100644 index 0000000..8265b3b --- /dev/null +++ b/routes/pages/deploy.php @@ -0,0 +1,56 @@ +get('/register-device', function () { + $ssh = \App\Services\SshService::factory( + request()->ip(), + request()->user(), + ); + + return response()->view('basement-scripts.link-server', [ + 'credential' => $ssh, + ], 200, [ + 'Content-type' => 'text/text' + ]); +})->name('register-device'); + + +Route::post('register-device', function () { + $data = request()->validate([ + 'name' => 'required|string', + 'threads' => 'required|int', + 'memory' => 'required|int', + 'is_hypervisor' => 'boolean', + 'collect_metrics' => 'boolean', + 'uses_client' => 'boolean', + 'has_backup' => 'boolean', + 'is_powered_on' => 'boolean', + 'ip6_address' => 'string', + 'kernel' => 'string', + 'distro' => 'string', + 'boot_disk' => 'string', + 'cost_in_cents' => 'integer', + 'short_code' => 'required|exists:short_codes,short_code' + ]); + + $code = \App\Models\ShortCode::query() + ->with('user') + ->where('short_code', request()->get('short_code')) + ->where('is_enabled', true) + ->firstOrFail(); + + $ssh = \App\Services\SshService::factory(request()->ip(), $code->user); + + $server = \App\Models\Server::create($data + [ + 'credential_id' => $ssh->id, + 'server_id' => \Illuminate\Support\Str::random(), + ]); + + $server->refresh(); + + $ssh->load('user'); + + $server->setAttribute('access_token', $ssh->user->createToken($server->name . ' Access Token', [])); + $server->setAttribute('ssh_key_public', $ssh->getPublicKey()); + + return $server; +})->name('create-device'); diff --git a/routes/pages/link-shortening.php b/routes/pages/link-shortening.php new file mode 100644 index 0000000..40fe6d9 --- /dev/null +++ b/routes/pages/link-shortening.php @@ -0,0 +1,16 @@ +where('short_code', $code) + ->firstOrFail(); + + abort_unless($code->is_enabled, 404); + + return tap(redirect($code->long_url, $code->status, [ + 'X-Short-Code' => $code->short_code, + ]), function () use ($code) { +// $code->is_enabled = false; +// $code->saveQuietly(); + }); +})->name('redirect'); diff --git a/routes/pages/spork.php b/routes/pages/spork.php index 57a9acf..ff4d757 100644 --- a/routes/pages/spork.php +++ b/routes/pages/spork.php @@ -4,6 +4,7 @@ use App\Contracts\ModelQuery; use App\Http\Controllers; +use App\Services\Development\DescribeTableService; use Illuminate\Filesystem\Filesystem; use Illuminate\Foundation\Application; use Illuminate\Support\Facades\Route; @@ -20,6 +21,7 @@ | contains the "web" middleware group. Now create something great! | */ + Route::get('/', function () { return Inertia::render('Welcome', [ 'canLogin' => Route::has('login'), @@ -33,23 +35,65 @@ config('jetstream.auth_session'), 'verified', ])->group(function () { + Route::get('/api/files/{basepath}', function ($path) { + $decoded = base64_decode($path); + + if (is_dir($decoded)) { + $files = Storage::disk(config('spork.filesystem.default'))->files($decoded); + $directories = Storage::disk(config('spork.filesystem.default'))->directories($decoded); + + return array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode($file), + 'is_directory' => is_dir($file), + 'type' => 'file', + ], + array_merge( + $directories, + $files + ) + ); + } + + return file_get_contents($decoded); + }); + + Route::get('/api/device-code', function () { + $code = request()->user()->codes()->firstWhere('is_enabled', true); + + if (empty($code)) { + $code = request()->user()->codes()->create([ + 'short_code' => $shortCode = Str::random(), + 'long_url' => route('create-device', [ + 'short_code' => $shortCode, + ]), + 'is_enabled' => true, + 'status' => 301 + ]); + } + + return [ + 'route' => str_replace('https://', 'http://', route('redirect', [ + 'code' => $code->short_code, + ])) + ]; + })->name('setup-device'); + Route::get('/dashboard', Controllers\Spork\DashboardController::class)->name('dashboard'); - Route::get('/projects', [Controllers\Spork\ProjectsController::class, 'index'])->name('projects'); + Route::get('finance/settings', function () { + return Inertia::render('Banking/Settings', [ + + ]); + }); Route::get('/projects/{project}', [Controllers\Spork\ProjectsController::class, 'show'])->name('projects.show'); - Route::get('/pages', Controllers\Spork\PagesController::class)->name('pages'); Route::get('/pages/create', [Controllers\Spork\PagesController::class, 'create'])->name('pages'); - Route::get('/people', Controllers\Spork\PeopleController::class)->name('people'); - - Route::get('/servers', [Controllers\Spork\ServersController::class, 'index'])->name('servers'); Route::get('/servers/{server}', [Controllers\Spork\ServersController::class, 'show'])->name('servers.show'); - Route::get('/credentials', Controllers\Spork\CredentialsController::class)->name('credentials'); - - Route::get('/domains', Controllers\Spork\DomainsController::class)->name('domains'); Route::get('/domains/{domain}', [Controllers\Spork\DomainsController::class, 'show'])->name('domains.show'); Route::get('/user/api-query', function () { @@ -63,27 +107,205 @@ })->middleware(\App\Http\Middleware\Authenticate::class)->name('user.api-query'); Route::post('project/{project}/deploy', [Controllers\Spork\ProjectsController::class, 'deploy'])->name('project.deploy'); + + Route::post('project/{project}/attach', [Controllers\Spork\ProjectsController::class, 'attach']) + ->name('project.attach'); + + Route::post('project/{project}/detach', [Controllers\Spork\ProjectsController::class, 'detach']) + ->name('project.detach'); }); -Route::middleware([ +Route::group(['prefix' => '-', ], function () { + Route::get('/', function () { + $filesystem = new Illuminate\Filesystem\Filesystem(); + $env = array_filter(array_reduce(explode("\n", $filesystem->get(base_path('.env'))), function ($all, $some) { + $envKeyValue = explode('=', $some); + return array_merge($all, [ + $envKeyValue[0] => $envKeyValue[1] ?? null, + ]); + }, [])); + + $allEnvValues = array_map(function (SplFileInfo $file) use ($env) { + return [ + 'env' => collect(explode("\n", file_get_contents(config_path($file->getFilename())))) + ->filter(fn($line) => str_contains($line, 'env(')) + ->map(function ($line) { + $matches = []; + preg_match_all("/env\(([^)]+)\s*,\s*([^)]+)\)(,?)$/i", $line, $matches, PREG_SET_ORDER); + return $matches; + }) + ->filter() + ->map(function ($matches) { + try { + [$match, $key, $default] = $matches[0]; + + $key = trim($key, '\"\''); + $default = trim($default, '\"\''); + + if (trim($default) === ',') { + $default = null; + } + + return compact('match', 'key', 'default'); + } catch (\Throwable $e) { + dd($matches, $e); + } + })->reduce(function ($all, $item) use ($env) { + try { + $all[$item['key']] = json_decode($item['default'], false, 5, JSON_THROW_ON_ERROR); + } catch (\Throwable $e) { + $all[$item['key']] = $item['default']; + } + return $all; + }, []), + 'name' => $file->getFilename(), + ]; + }, $filesystem->files(config_path())); + + return Inertia::render('Settings2', [ + 'config' => array_filter($allEnvValues, fn($item) => !empty($item['env'])), + 'env' => $env, + ]); + }); + + Route::get('/manage', function () { + + return Inertia::render('Manage/Index', [ + + ]); + }); + Route::get('/postal', function () { + return Inertia::render('Postal/Index', [ + 'threads' => \App\Models\Thread::query() + ->with([ + 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + } + ]) + ->where('updated_at', '>=', now()->subWeek(2)) + ->orderByDesc('origin_server_ts') + ->paginate(request('limit', 15), ['*'], 'page', 1) + ]); + }); + Route::get('/inbox', function () { + return Inertia::render('Postal/Inbox', [ + 'threads' => (new \App\Services\ImapService)->findAllMailboxes(), + 'messages' => (new \App\Services\ImapService)->findAllFromDate('INBOX', now()->subDay()) + ]); + }); + Route::get('/inbox/{number}', function ($messageNumber) { + $message = (new \App\Services\ImapService)->findMessage($messageNumber, true); + return base64_decode($message['body']); + }); + Route::get('/postal/{thread}', function ($thread) { + return Inertia::render('Postal/Thread', [ + 'threads' => \App\Models\Thread::query() + ->with([ + 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + } + ]) + + ->where('origin_server_ts', '>=', now()->subWeek(2)) + ->orderByDesc('origin_server_ts') + ->paginate(request('limit', 15), ['*'], 'page', 1), + 'thread' => \App\Models\Thread::query() + ->with(['messages' => function ($query) { + $query->orderBy('originated_at'); + }, 'participants' => function ($query) { + $query->where('name', 'not like', '%bridge bot%'); + }]) + ->orderByDesc('updated_at') + ->findOrFail($thread), + ]); + }); + Route::get('/file-manager', function () { + $filesystem = \Illuminate\Support\Facades\Storage::disk(config('spork.filesystem.default')); + + return Inertia::render('FileManager', [ + 'files' => array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode('/'.$file), + 'is_directory' => false, + 'type' => 'file', + ], + $filesystem->files() + ), + 'directories' => array_map( + fn ($file) => [ + 'name' => basename($file), + 'file_path' => base64_encode('/'.$file), + 'is_directory' => true, + 'type' => 'folder', + ], + $filesystem->directories() + ), + + ]); + }); + + Route::get('/manage/{link}', function ($link) { + $basename = \Illuminate\Support\Str::title(Str::singular($link)); + $models = array_filter( + array_map(fn (SplFileInfo $file) => basename($file->getBasename()), (new Filesystem)->allFiles(app_path('Models'))), + fn ($file) => $file === $basename.'.php', + ); + $files = array_filter( + array_map(fn (SplFileInfo $file) => basename($file->getBasename()), (new Filesystem)->allFiles(resource_path('js/Pages/Manage'))), + fn ($file) => str_contains($file, $basename), + ); + + abort_if(count($models) !== 1, 404); + + $file = explode('.', Arr::first($models), 2); + $vueFile = explode('.', Arr::first($files) ?? '', 2); + + $model = 'App\\Models\\'. $file[0]; + + $description = (new DescribeTableService)->describe(new $model); + + /** @var \Illuminate\Pagination\LengthAwarePaginator $paginator */ + $paginator = $model::query() + ->paginate(request('limit', 15), ['*'], 'page', request('page', 1)); + + $data = $paginator->items(); + $paginator = $paginator->toArray(); + + unset($paginator['data']); + + if (!empty($files)) {; + return Inertia::render('Manage/'.$vueFile[0], [ + 'description' => $description, + 'singular' => $file[0], + 'plural' => Str::title($link), + 'link' => $link, + 'data' => $data, + 'paginator' => $paginator + ]); + } + + return Inertia::render('Manage/Index', [ + 'description' => $description, + 'singular' => $file[0], + 'plural' => Str::title($link), + 'link' => $link, + 'data' => $data, + 'paginator' => $paginator + ]); + })->where('link', '(projects|pages|people|servers|domains|tags|scripts|research|credentials|articles)') + ->name('crud'); +})->middleware([ 'auth:sanctum', config('jetstream.auth_session'), 'verified', -])->post('register-device', function () { - $credential = \App\Models\Credential::find(3); - - return \App\Models\Server::create(array_merge(request()->all(), [ - 'server_id' => mt_rand(4, 192000), - 'disk' => (float) request()->get('disk'), - 'memory' => (int) request()->get('memory'), - 'last_ping_at' => \Carbon\Carbon::parse(request()->get('last_ping_at')), - ])); -})->name('register-device'); - -Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']) - ->post('project/{project}/attach', [Controllers\Spork\ProjectsController::class, 'attach']) - ->name('project.attach'); - -Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified']) - ->post('project/{project}/detach', [Controllers\Spork\ProjectsController::class, 'detach']) - ->name('project.detach'); +]); + +Route::middleware([config('jetstream.auth_session'), 'verified', App\Http\Middleware\OnlyHost::class])->group(function () { + Route::get('/admin', Controllers\AdminController::class)->name('admin'); + Route::get('/admin/email', [Controllers\AdminController::class, 'email'])->name('admin'); + Route::post('/api/install', Controllers\InstallNewProvider::class); + Route::post('/api/uninstall', Controllers\UninstallNewProvider::class); + Route::post('/api/enable', Controllers\EnableProviderController::class); + Route::post('/api/disable', Controllers\DisableProviderController::class); +}); diff --git a/tests/Feature/Http/Controllers/LinkServerTest.php b/tests/Feature/Http/Controllers/LinkServerTest.php new file mode 100644 index 0000000..2a50025 --- /dev/null +++ b/tests/Feature/Http/Controllers/LinkServerTest.php @@ -0,0 +1,93 @@ +postJson(route('create-device'), []); + + $request->assertStatus(422); + } + public function testCanCreateDevice() + { + /** @var User $user */ + $user = User::factory()->create(); + $user->codes()->create([ + 'short_code' => '384', + 'is_enabled' => true, + 'long_url' => 'http://fake.tools', + 'status' => 301, + ]); + + $request = $this->actingAs($user)->postJson(route('create-device'), [ + 'name' => 'aqua-depths', + 'threads' => 1, + 'memory' => 512, + 'short_code' => '384', + ]); + + $request->assertStatus(201); + $request->assertJson([ + 'ssh_key_public' => Credential::first()->getPublicKey(), + ]); + } + + public function testCreateShortCodeUrlForDeviceRegistration() + { + /** @var User $user */ + $user = User::factory()->create(); + + $request = $this->actingAs($user)->getJson(route('setup-device')); + + $request->assertStatus(200); + $request->assertJsonStructure([ + 'route', + ]); + } + + public function testWeProvideRedirectLinkWithAuth() + { + /** @var User $user */ + $user = User::factory()->create(); + $this->assertEmpty($user->codes()->get()); + + $request = $this->actingAs($user)->getJson(route('setup-device')); + + $codes = $user->codes()->get(); + + $this->assertNotEmpty($codes); + + $request->assertStatus(200); + $route = $request->json('route'); + + $this->assertNotEmpty($route); + $otherRequest = $this->get($route); + + $otherRequest->assertStatus(301); + + $routeUsedToLinkDevice = route('register-device').'?short_code='.$codes->first()->short_code; + + $otherRequest->assertRedirect($routeUsedToLinkDevice); + + $attemptToCreateDevice = $this->postJson($routeUsedToLinkDevice, [ + 'name' => 'twelve-foot-ninja', + 'memory' => 512, + 'threads' => 1, + ]); + + $attemptToCreateDevice->assertStatus(201); + + $this->assertDatabaseHas('servers', [ + 'name' => 'twelve-foot-ninja', + ]); + } +} diff --git a/tests/Feature/Http/Controllers/MessageControllerTest.php b/tests/Feature/Http/Controllers/MessageControllerTest.php new file mode 100644 index 0000000..3f5cf7b --- /dev/null +++ b/tests/Feature/Http/Controllers/MessageControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Http/Controllers/NavigationControllerTest.php b/tests/Feature/Http/Controllers/NavigationControllerTest.php new file mode 100644 index 0000000..62db494 --- /dev/null +++ b/tests/Feature/Http/Controllers/NavigationControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Http/Controllers/ThreadControllerTest.php b/tests/Feature/Http/Controllers/ThreadControllerTest.php new file mode 100644 index 0000000..ed5bd24 --- /dev/null +++ b/tests/Feature/Http/Controllers/ThreadControllerTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(404); + } +} diff --git a/tests/Feature/Models/ConditionTest.php b/tests/Feature/Models/ConditionTest.php new file mode 100644 index 0000000..a57971b --- /dev/null +++ b/tests/Feature/Models/ConditionTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/AccountTest.php b/tests/Feature/Models/Finance/AccountTest.php new file mode 100644 index 0000000..a4ed2d7 --- /dev/null +++ b/tests/Feature/Models/Finance/AccountTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/BudgetTest.php b/tests/Feature/Models/Finance/BudgetTest.php new file mode 100644 index 0000000..c122cef --- /dev/null +++ b/tests/Feature/Models/Finance/BudgetTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/Finance/TransactionTest.php b/tests/Feature/Models/Finance/TransactionTest.php new file mode 100644 index 0000000..e5e90e2 --- /dev/null +++ b/tests/Feature/Models/Finance/TransactionTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/MessageTest.php b/tests/Feature/Models/MessageTest.php new file mode 100644 index 0000000..6ef060a --- /dev/null +++ b/tests/Feature/Models/MessageTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/NavigationTest.php b/tests/Feature/Models/NavigationTest.php new file mode 100644 index 0000000..1a7c3ca --- /dev/null +++ b/tests/Feature/Models/NavigationTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Models/ThreadTest.php b/tests/Feature/Models/ThreadTest.php new file mode 100644 index 0000000..e8f3bfc --- /dev/null +++ b/tests/Feature/Models/ThreadTest.php @@ -0,0 +1,20 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/Operations/ServerActionOperationTest.php b/tests/Feature/Operations/ServerActionOperationTest.php new file mode 100644 index 0000000..899a29f --- /dev/null +++ b/tests/Feature/Operations/ServerActionOperationTest.php @@ -0,0 +1,77 @@ +systemUnderTest = ServerAction::factory()->create([ + 'server_id' => Server::factory()->create([ + 'internal_ip_address' => '127.0.0.1' + ])->id, + 'user_id' => User::factory(), + 'script_id' => Script::factory(), + 'credential_id' => Credential::factory()->create([ + 'settings' => [ + 'pub_key_file' => '/var/www/html/tests/data/test_key.pub', + 'pub_key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos', + 'private_key_file' => '/var/www/html/tests/data/test_key', + 'private_key' => '-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn +NhAAAAAwEAAQAAAYEAy0KePyow6dECpQ63EzpD1JEO0lcWfdFdSdAkWfxYGaVpAEKf+W7f +MDIigVnxjmHWcWUwyoUz4Xnl2i0KEKd9g6a4TgOkleZRoQ9QkrRUVZwEiwXicT95NjBSAR ++y1+XKpdyn+Jk/G+eaNaWVy0t09Cxtj5mJ7BQ4topTG4Uq5n3nAmFrXWQxbzuViJYZ7Rb5 +WIW+gxtt9y80QraX/i/0dSGTkh1T39Xf3z/rnPhLluJVOVeYPp4UKk5W8iyXdNhtzF/Cf+ +j6ziWDsr0O7F/OrqKB6Mxe7j0anPEHwIT3BJwYax5FHUPJ/1ZMs8Le6VRF3VtU0ypaF1f4 +63Hycfo0y8SHmj7a0hq4d5Z6+L4OkpsHvnd3P0H7TSnvI1mq1msiRd801vB294PRlABN2E +tvSZhlBcTuWnl1Ui+pRNPjuQTWDC+FCIJo0LpgBY3NKRv32y4WYP8CPA5UMOJ+hPLOhMc6 +DvbBmiGlwVx1yYLHv2tF6LZcumIpfGk8mS5og+GdAAAFiDhonxA4aJ8QAAAAB3NzaC1yc2 +EAAAGBAMtCnj8qMOnRAqUOtxM6Q9SRDtJXFn3RXUnQJFn8WBmlaQBCn/lu3zAyIoFZ8Y5h +1nFlMMqFM+F55dotChCnfYOmuE4DpJXmUaEPUJK0VFWcBIsF4nE/eTYwUgEfstflyqXcp/ +iZPxvnmjWllctLdPQsbY+ZiewUOLaKUxuFKuZ95wJha11kMW87lYiWGe0W+ViFvoMbbfcv +NEK2l/4v9HUhk5IdU9/V398/65z4S5biVTlXmD6eFCpOVvIsl3TYbcxfwn/o+s4lg7K9Du +xfzq6igejMXu49GpzxB8CE9wScGGseRR1Dyf9WTLPC3ulURd1bVNMqWhdX+Otx8nH6NMvE +h5o+2tIauHeWevi+DpKbB753dz9B+00p7yNZqtZrIkXfNNbwdveD0ZQATdhLb0mYZQXE7l +p5dVIvqUTT47kE1gwvhQiCaNC6YAWNzSkb99suFmD/AjwOVDDifoTyzoTHOg72wZohpcFc +dcmCx79rRei2XLpiKXxpPJkuaIPhnQAAAAMBAAEAAAGAQbK7sZDylHDRWQaDmDxp9kgYsV +Yi1/IXJCeZyFgvJcL4SHRAfwAeNdbOnl6zHCF1jdt2RM9/MG8VI0sRiMaKZEY8JkM5LJZw +Zg2sLm8JH065jTIOuioZBLHjn6deSDhnIutKg6kM4/kdOB/YZghyugWuOA8ZrGvw1Neq+y +c08aFaTMOuT1Z2QAzTTX2uzZpyZ/F63ae9CHuCednJEQjxC/cZWs4N8TiRDvj7MBZ1YESx +5UHx3LN9sxr1MXvGTKczafEpHwoS5yRf8cbm4pKe7KxSkEP/AIzjvLlA/Mw0pe9JlcY7QI +YtvtRYA2FvrX0PAuHBynbjPifFi4yi72MOoCuhyj7aKJLNQGtg6nAzmNSrprlpTNeB9GxY +G0Ko40fDbxAs33zAdC1pQwMNgN2DwfwIXtFN0YWrjBLVa6z4f5Fx0Ulg6p4+QjxxfRNP51 +uy0ybimrJecK2lDF99246oIHU/Xnpaiwxv9y2LqtffGrw3G+W2+AWGZVSZWhf7fHrFAAAA +wDgdjpFHZfP65ToJ+GeWB1rb4dsE349mvbvgaiJZjyzOPWozFjVIquWB57ScIlQkoc5huB +1DTtEqT17V11+gmglzTv4nJrBKbfTvg3hQFTzHzDRrMIz38ZdWrM5KoDGLQQp/pTU8ivrr +FrGgbbwYgRqdEixmpbAvE9MZ0MXSS81AgE8AqMkptm2BKq0VHhB5J39uflSOxcNlXGTIVx +xgyYlwiYITZ+08EBMisZAxkzj3uioSjF8a8SwyY90FEx0DTgAAAMEA/MQiMsfpPWwG8tAf +YW30rJ3Ci73RaCKhcr495ImMDWEEy3wLA9U1s129shhs6PNGidRbxo7wcsy6kW4Fbfoizu +Eu0aa+uSczfKQNV7BeE6Jwx5HxWHb3Ch2UysJhcEdRKtUFU5QN32BRKGt/UxInOYQO5puj +0BOwx/L7ZtaKKcCX+/yqpebKTbwe8PoPmFod28Q20QgjnNAvity9DIZLFZi2H9VHP9pDXv +Eki+Jma0qySR/LXg2peaLZUWBeCjMjAAAAwQDN3FdpyvZoSMSYG1WxYatqgP4BgUYng59x +dvbjU9oG1V+svHnBPcaxGTbx/GTj1kDv9duxE/QgSKI+Yu78N6+fu4bUW3xWq6/26j4Wmr +wlS8EEGtrFx1hgHx1hlcxnIpZsE1W36WvA/oQHUafDp84Lg4cXtWxL7GVGl35B7eD0jZIO +85W0ixmqcVg0gi5WCkzFtd4kMG35xYxyoT2bzZK7lF8HgoibuGFi0uzhfqnIr03nGSM1JN +4MF7mMT8SkRD8AAAATYXVzdGlua3JlZ2VsQGtyYXRvcw== +-----END OPENSSH PRIVATE KEY-----', + 'pass_key' => encrypt(''), + 'username' => 'root', + ] + ])->id + ]); + + $this->systemUnderTest->run(); + } +} diff --git a/tests/data/authorized_keys b/tests/data/authorized_keys new file mode 100644 index 0000000..f60bac3 --- /dev/null +++ b/tests/data/authorized_keys @@ -0,0 +1,2 @@ +# Authorized Key +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos diff --git a/tests/data/test_key b/tests/data/test_key new file mode 100644 index 0000000..d48a4a6 --- /dev/null +++ b/tests/data/test_key @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn +NhAAAAAwEAAQAAAYEAy0KePyow6dECpQ63EzpD1JEO0lcWfdFdSdAkWfxYGaVpAEKf+W7f +MDIigVnxjmHWcWUwyoUz4Xnl2i0KEKd9g6a4TgOkleZRoQ9QkrRUVZwEiwXicT95NjBSAR ++y1+XKpdyn+Jk/G+eaNaWVy0t09Cxtj5mJ7BQ4topTG4Uq5n3nAmFrXWQxbzuViJYZ7Rb5 +WIW+gxtt9y80QraX/i/0dSGTkh1T39Xf3z/rnPhLluJVOVeYPp4UKk5W8iyXdNhtzF/Cf+ +j6ziWDsr0O7F/OrqKB6Mxe7j0anPEHwIT3BJwYax5FHUPJ/1ZMs8Le6VRF3VtU0ypaF1f4 +63Hycfo0y8SHmj7a0hq4d5Z6+L4OkpsHvnd3P0H7TSnvI1mq1msiRd801vB294PRlABN2E +tvSZhlBcTuWnl1Ui+pRNPjuQTWDC+FCIJo0LpgBY3NKRv32y4WYP8CPA5UMOJ+hPLOhMc6 +DvbBmiGlwVx1yYLHv2tF6LZcumIpfGk8mS5og+GdAAAFiDhonxA4aJ8QAAAAB3NzaC1yc2 +EAAAGBAMtCnj8qMOnRAqUOtxM6Q9SRDtJXFn3RXUnQJFn8WBmlaQBCn/lu3zAyIoFZ8Y5h +1nFlMMqFM+F55dotChCnfYOmuE4DpJXmUaEPUJK0VFWcBIsF4nE/eTYwUgEfstflyqXcp/ +iZPxvnmjWllctLdPQsbY+ZiewUOLaKUxuFKuZ95wJha11kMW87lYiWGe0W+ViFvoMbbfcv +NEK2l/4v9HUhk5IdU9/V398/65z4S5biVTlXmD6eFCpOVvIsl3TYbcxfwn/o+s4lg7K9Du +xfzq6igejMXu49GpzxB8CE9wScGGseRR1Dyf9WTLPC3ulURd1bVNMqWhdX+Otx8nH6NMvE +h5o+2tIauHeWevi+DpKbB753dz9B+00p7yNZqtZrIkXfNNbwdveD0ZQATdhLb0mYZQXE7l +p5dVIvqUTT47kE1gwvhQiCaNC6YAWNzSkb99suFmD/AjwOVDDifoTyzoTHOg72wZohpcFc +dcmCx79rRei2XLpiKXxpPJkuaIPhnQAAAAMBAAEAAAGAQbK7sZDylHDRWQaDmDxp9kgYsV +Yi1/IXJCeZyFgvJcL4SHRAfwAeNdbOnl6zHCF1jdt2RM9/MG8VI0sRiMaKZEY8JkM5LJZw +Zg2sLm8JH065jTIOuioZBLHjn6deSDhnIutKg6kM4/kdOB/YZghyugWuOA8ZrGvw1Neq+y +c08aFaTMOuT1Z2QAzTTX2uzZpyZ/F63ae9CHuCednJEQjxC/cZWs4N8TiRDvj7MBZ1YESx +5UHx3LN9sxr1MXvGTKczafEpHwoS5yRf8cbm4pKe7KxSkEP/AIzjvLlA/Mw0pe9JlcY7QI +YtvtRYA2FvrX0PAuHBynbjPifFi4yi72MOoCuhyj7aKJLNQGtg6nAzmNSrprlpTNeB9GxY +G0Ko40fDbxAs33zAdC1pQwMNgN2DwfwIXtFN0YWrjBLVa6z4f5Fx0Ulg6p4+QjxxfRNP51 +uy0ybimrJecK2lDF99246oIHU/Xnpaiwxv9y2LqtffGrw3G+W2+AWGZVSZWhf7fHrFAAAA +wDgdjpFHZfP65ToJ+GeWB1rb4dsE349mvbvgaiJZjyzOPWozFjVIquWB57ScIlQkoc5huB +1DTtEqT17V11+gmglzTv4nJrBKbfTvg3hQFTzHzDRrMIz38ZdWrM5KoDGLQQp/pTU8ivrr +FrGgbbwYgRqdEixmpbAvE9MZ0MXSS81AgE8AqMkptm2BKq0VHhB5J39uflSOxcNlXGTIVx +xgyYlwiYITZ+08EBMisZAxkzj3uioSjF8a8SwyY90FEx0DTgAAAMEA/MQiMsfpPWwG8tAf +YW30rJ3Ci73RaCKhcr495ImMDWEEy3wLA9U1s129shhs6PNGidRbxo7wcsy6kW4Fbfoizu +Eu0aa+uSczfKQNV7BeE6Jwx5HxWHb3Ch2UysJhcEdRKtUFU5QN32BRKGt/UxInOYQO5puj +0BOwx/L7ZtaKKcCX+/yqpebKTbwe8PoPmFod28Q20QgjnNAvity9DIZLFZi2H9VHP9pDXv +Eki+Jma0qySR/LXg2peaLZUWBeCjMjAAAAwQDN3FdpyvZoSMSYG1WxYatqgP4BgUYng59x +dvbjU9oG1V+svHnBPcaxGTbx/GTj1kDv9duxE/QgSKI+Yu78N6+fu4bUW3xWq6/26j4Wmr +wlS8EEGtrFx1hgHx1hlcxnIpZsE1W36WvA/oQHUafDp84Lg4cXtWxL7GVGl35B7eD0jZIO +85W0ixmqcVg0gi5WCkzFtd4kMG35xYxyoT2bzZK7lF8HgoibuGFi0uzhfqnIr03nGSM1JN +4MF7mMT8SkRD8AAAATYXVzdGlua3JlZ2VsQGtyYXRvcw== +-----END OPENSSH PRIVATE KEY----- diff --git a/tests/data/test_key.pub b/tests/data/test_key.pub new file mode 100644 index 0000000..ef4f3fe --- /dev/null +++ b/tests/data/test_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLQp4/KjDp0QKlDrcTOkPUkQ7SVxZ90V1J0CRZ/FgZpWkAQp/5bt8wMiKBWfGOYdZxZTDKhTPheeXaLQoQp32DprhOA6SV5lGhD1CStFRVnASLBeJxP3k2MFIBH7LX5cql3Kf4mT8b55o1pZXLS3T0LG2PmYnsFDi2ilMbhSrmfecCYWtdZDFvO5WIlhntFvlYhb6DG233LzRCtpf+L/R1IZOSHVPf1d/fP+uc+EuW4lU5V5g+nhQqTlbyLJd02G3MX8J/6PrOJYOyvQ7sX86uooHozF7uPRqc8QfAhPcEnBhrHkUdQ8n/Vkyzwt7pVEXdW1TTKloXV/jrcfJx+jTLxIeaPtrSGrh3lnr4vg6Smwe+d3c/QftNKe8jWarWayJF3zTW8Hb3g9GUAE3YS29JmGUFxO5aeXVSL6lE0+O5BNYML4UIgmjQumAFjc0pG/fbLhZg/wI8DlQw4n6E8s6ExzoO9sGaIaXBXHXJgse/a0Xotly6Yil8aTyZLmiD4Z0= austinkregel@kratos \ No newline at end of file